Showing posts with label prolog. Show all posts
Showing posts with label prolog. Show all posts

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