Hacker News new | ask | show | jobs
by mattjones 6646 days ago
"Unpopular" needs to be further qualified. Rather than ask, "Why is Lisp unpopular?", ask, "Why is Lisp unpopular for X?". Lisp is actually reasonably popular for some things, and it's those things to which existing dialects are best adapted. Being well adapted to Y often means not being especially well adapted to X, even if it's for subtle reasons.

It's like asking, "Why are Arctic foxes (Alopex lagopus) not very popular on the African savanna?" Because they didn't evolve in response to the demands of that environment. The bat-eared fox, Otocyon megalotis, did.

The differences between Alopex and Otocyon aren't so massive that they seem like totally different kinds of animals. But it would be tricky to predict exactly what they should be, and develop the right kind of fox in a lab. Some adaptations are obvious (thick fur), other less so (specialized circulatory system). I suspect the same is true for programming languages. It's tricky to determine exactly what makes Scheme better suited to the classroom than to developing general applications. Perhaps the best way to solve the problem is the way PG is doing it with Arc, which is to take a very young, malleable dialect of Lisp and plunk it down in the environment to which you want it to become well adapted, and then continue development in response to the demands you encounter.

2 comments

OK, I'll bite;

    (mapcar #'why-is-lisp-unpopular? 
            (list system-administration
                  enterprise-applications
                  web-applications
                  embedded-software
                  mobile-phone-apps
                  blogging-software
                  compiler-writing
                  configuration-files))
;)
I don't know the specific reasons why CL and Scheme are not very popular for those things; my general answer is that they're adapted to other things (like classrooms and smart students' brains). My point is that it's very hard to figure out, and so the best bet is probably to let a new dialect evolve in response to the demands of one or some of those environments.
Actually, it might be more accurate to think of programming languages as genes rather than animals, or at least, to include programmers as an important part of the phenotype. A complication in the adaptation view is that programmers can stop certain "genes" from being expressed. So a language like Lisp might not catch on in certain environments because the features that would make it powerful, like metaprogramming, are never actually used.