Help: Artificial Intelligence best language to learn TODAY

8 points by marcofloriano ↗ HN
Hello,

I´m working in a personal project that takes data from the web and extract informations from this data. All this stage i made very well with ruby (lets say, an modern language). But now i need to start working on a module (we call "brain") that can take the information of the ruby software and take decisions about the best moment to buy and sell currencies. I had a very hard time to chose between ruby and python (yes, i had to learn the language before make the bot) and now i´m having another hard time to choose an language to make this "brain". So i came here and ask for your help. I think most part of you will say "take lisp or prolog" but i have afraid of spend my time learning an old language, like lisp ... but that´s not the big problem. If a go to lisp, WITCH dialect should i choose ? Common Lisp is old, but looks like more situated to this task. Scheme looks like naive close to common lisp, i´m running from that ... and clojure looks like new, but not so good like the others. So i ask you hackers for help. I still doing my personal researches but a vision from somebody with more experience would be appreciated. By the way, sorry by may bad english ...

11 comments

[ 4.1 ms ] story [ 34.8 ms ] thread
Build your first prototype in the language you are most comfortable using. When you know which bits are hard to write then you can look around and see if any other language has facilities that make that part of the task simpler to write.

Whichever way - enjoy the learning experience. I doubt you will make your fortune trading currencies - but I could be wrong so good luck.

Nothing is impossible ... and i got some guts to face this kind of challenge. Some friends told me exactly that, to stick with ruby and then figure out a way to implement the brain with that. Thanks.
Is there significant quantitative programming involved in what you are doing? If yes, I would recommend using Matlab or R.
For a proof of concept, I would second that. Though actually Matlab is significantly more powerful in Machine Learning than R due to its fantastic libraries. (R is still young).
Probably since you are starting from scratch and because first iterations of software if you are new to this tend to be more practice than usable I would say, stick first with the language which makes your life easiest. Later when e.g. speed becomes an issue, you will have to rewrite things anyway I suspect.
Agree. I have a lot of experimental codes here that must be rewrite immediately. Looks like it´s the best way for me so far ...
I researched this question thoroughly earlier this year and decided that C was the best language for AI. For a few reasons:

a) You can find examples of all the standard AI algorithms online

b) It doesn't get much faster then C

c) There is a huge C community so you'll be able to find more developers easily if the project takes off (the main drawback of LISP)

That´s a really good point dmix, C is amazing and i already have experience with it. But let´s make some thing clear ...

a) Interesting, but i´m planning to write my own algorithms

b) C speed is just unique, maybe only lose for assembly

c) True, a very decisive factor.

The 1960's and 1970's were the era in which researchers designed new languages in response to the difficulties that they encountered in writing their own advanced applications. Common Lisp is perhaps the culimination of this work.

University subjects divide into those where the students start from scratch and those for which 11 to 16 year olds recieve substantial preparation. For example the teaching of physics depends on children learning arithmetic and algebra so that they are fluent before attempting to study physics at university. The teaching of law starts from scratch.

Computer science is a start from scratch subject, so a major focus is distilling the essence of computer programming to come up with a simple language suitable for bringing undergraduates up to employability in three years. Here is a perspective from which Java can be seen major achievement in programming language design.

However the consensus seems to be that a start-from-scratch degree is too short for meta-programming: you can teach it but not well enough to avoid students shooting themselves in the foot with it. So Common Lisp's defmacro is out. Similarly for customising the syntax of embedded sublanguages, so Common Lisp's read-macros are also out. CLOS is too sophisticated for a 3 year degree, nobody wants to try teaching undergraduates to define their own method combinations. The Common Lisp condition system is wildly over-elaborate. Reading Kent Pitman it is clear that the design was driven by the needs of very large, very sophisticated programs. It is fascinating to read the documentation as a kind of old developers war story in which people believe that the condition system doesn't need to be that elaborate and find out the bitter truth the hard way as the project code base grows.

So new versus old doesn't work as a criterion for programming language choice. It hasn't worked for twenty or thirty years. If you want to do work on Artificial Intelligence you are committing yourself to writing very large, very sophisticated programs. In recent years new languages have been designed with very different goals in mind and newness is not your friend.

Thanks a lot Alan. Therefore, there´s no point on searching for the newest languages to do this kind of software because, actually, they are more inclined to write languages to solve high level problems then lows ... AI case, i guess. I got your point on new vs old, and maybe on that specific case, you are right.
FORTH programming language, like C, might be a good choice. The downside is that not many programmers use this language. And that's unfortunate.