Hacker Newsnew | comments | show | ask | jobs | submit login

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.


Applications are open for YC Winter 2016

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact