Hacker News new | past | comments | ask | show | jobs | submit login

He is not the first to look at Lisp, and I would surprised if he is the last.

Lisp has some really compelling properties as means of expressing a program.

Unfortunately there is a severe impedance mismatch between Lisp and the Algol inspired languages of today's mainstream. Overcoming the mismatch is not difficult but takes effort and so few are willing to expel any real effort; Carmack is certainly not the sort to shy away from some effort.

I would recommend trying out Racket or Common Lisp if you can. Common Lisp really need Emacs so if you are not familiar with the editor I would recommend the former.




Can you elaborate further on the efforts needed to close up the mismatch? Perhaps something concrete to work on today? ;)


The immediate mismatch is the alien nature of the parenthesis delimited s-expressions. My advice is that if you find yourself editing text as opposed to the structure of the s-exp or balancing parenthesis manually you are doing it wrong; Emacs has modes like paredit and smartparens to do it.

The next "culture shock", though I think this has lessened now due to other languages catching up, is the concept of closures, functions as values, and higher order functions.

Lisps also tend to be dynamically type so if that is not familiar to you then it will take some getting used to.

There are other high level concepts such has syntax abstractions (macros) but that can wait.

And Common Lisp has CLOS which is a different take, compared to the likes of C++ and Java, on Object Oriented programming.

As for what to do first; I am not really sure, depends on whether it's Racket or Common Lisp and a lot on what interests you. If you like doing small algorithmic problems such as the Euler Project then start there.

For Common Lisp there is Practical Common Lisp which is always a good primer.

http://www.gigamonkeys.com/book/

And Learn Lisp the Hard Way (I am not familiar with it though)

http://learnlispthehardway.org/

For a Common Lisp implementation I would recommend SBCL if on Linux (your package manager should have it) and CCL on Windows or MacOS.

SBCL: http://www.sbcl.org/

CCL: http://ccl.clozure.com/

Also use quicklisp for grabbing Common Lisp projects, it's alot easier than doing it manually.

https://www.quicklisp.org/beta/

This might also be useful:

http://eudoxia.me/article/common-lisp-sotu-2015/#specific-pr...

Someone else will have to give info on the Racket ecosystem I am not familiar with that.


I am actually familiar with Lisp and was wondering what to do to bring people over, not try it myself. I doubt the parentheses is a huge problem, because like you said, it can be trivially automated using your favorite tool.

I think what the Lisp world needs is a huge push from one of the big players. Not just an in-house, small-ish tool, but rather a publicly-facing bet on it, as dramatic as Facebook's bet on javascript with reactjs, or Twitter's move to Scala. After a 15 minutes survey I couldn't find an example of a big, respected company whose tool chain has a substantial Lisp project for other people to contribute to. Sure you can find multiple companies building Lisp solutions, but those rarely open source them and even when they do they are no where near as substantial to warrant massive public attention.

I sincerely think that this the only thing standing between Lisp and universal adoption.


> Lisps also tend to be dynamically type so if that is not familiar to you then it will take some getting used to.

Eh, dynamically typed languages like JavaScript, Python, Ruby, PHP and Perl are rather popular.


The comment is obviously aimed at someone who does not use dynamic languages C++, Java etc.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: