Monday, August 1, 2011

If Frankenstein Wrote Javascript... He Would've Been Crazier Than He Already Was.

JavaScript gets a really bad rap these days. But honestly, I love it. The fantastic mix between the straight-forward and familiar C-style syntax crossed with the surprising number of functional programming elements (list operations, lambda-like function() statements, high order functions, etc.) honestly makes for, in my opinion, a versatile, fairly elegant (even if occasionally confusing) scripting language.

I will admit, however, that I am somewhat biased, as it was the first language I ever learned. I wrote my first "Hello World" script at the age of 12. Since then I have been fascinated with the incredible power and flexibility of computers, especially the capacity for "intelligence" of a sort found in things like machine learning, genetic algorithms, and all flavors of AI.

Today I decided to start a project with three goals in mind: first, to stretch my own abilities as a programmer; second, to have some fun with JavaScript, as I haven't had the opportunity to do so in quite a while; third, to see just what JavaScript can do, and how far I can take it as a computational language.

The project is this: I will be writing a brain in JavaScript. Now, that's a very vague and broad assertion, and a huge undertaking; I understand this. This is one of the reasons I have set up this blog: I want to make sure I have my thoughts organized before I begin. I plan to take this in baby steps, recording my progress along the way. I will be hosting my code on GitHub, and I always welcome any and all advice and suggestions.

So, the plan so far is fairly loose and open (largely because I just imagined this whole project about an hour ago), but will become more solidified (hopefully) as I move forward. I should state off the bat that I don't have overreachingly extravagant goals in mind here. I plan to start where I can and take it as far as it will go, I suppose. But ultimately, I'd like to see it become a framework for simulating certain innate features of the human mind.

I would like to be able to run genetic algorithms, which simulate learning from mistakes.
I would like to run logical decision-making problems, which simulate learning from others' mistakes.
I would like to run information gathering queries, such as searching for a person online or reporting on the stock history of a company, which simulates human observation.

These are just a few examples.

My initial plan is as follows:

1) Set up a GitHub repository and make first commit.
2) Begin work on a Prolog-style first-order-logic interpreter.

And that's all I've got so far. I'll see where that goes and come up with things as I move forward.


Any and all comments, suggestions, and ideas are more than welcome.


"So much has been done, exclaimed the soul of Frankenstein—more, far more, will I achieve; treading in the steps already marked, I will pioneer a new way, explore unknown powers, and unfold to the world the deepest mysteries of creation." - Mary Shelley, Frankenstein

No comments:

Post a Comment