I also suspect that Github might be a terrible sample of the overall programming community. I'd be curious to find out what the real numbers are if we also take in consideration the large corp, gov and science conglomerates who might be using anything form COBOL to Ada.
Yeah, I have to agree. My github account is pretty barren, mostly because the lion share of my work is done professionally on private repos simply sitting on a server behind a firewall. In fact, you'd be amazed at how much code in the wild simply sits in backed up files in someone's ~/src folder. Lots of engineers, especially older ones, never learned that kind of practice.
A big chunk of my code is C, C++, VHDL, Verilog, miscellaneous PLC/PAC dialects, etc... in other words, industrial stuff that doesn't get a lot of attention from the 'fun' startup sector. Github's numbers are most likely misrepresenting (not representing?) a HUGE section of 'hard' engineering. Add to that what you've mentioned, i.e. the copious amounts of legacy and domain specific stuff still lying around, and it means you've got a hugely biased sampling.
in general github rankings are not a good measure of anything. f.ex. javascript ranking as #1 is no wonder, when every other web project packages some jquery plugins (or jquery the lib), and even docs often have some js in them. the ruby bias was also noticable on github from the beginning (while f.ex. I believe bitbucket has a python bias), one can only doubt it dominates less cool languages in the wild.
For whatever reason, Racket has been the lisp that I sort of looked at last. Like many I-want-to-learn-lisp people, I went through a terrible survey of available options. I went through most of Practical Common Lisp, and then found Clojure. Recently, I've found Racket as the result of my wife deciding she'd learn a little programming via the introductory Coursera course taught in Racket.
I have to say, I'm pretty impressed with Racket. Everything from its beginner-friendly environment, to its functional disposition, to the availability of decent libraries, to its research into new areas such as type systems, everything feels very nicely constructed.
The only thing I really miss from Clojure is the syntactic support for maps and vectors, and the pervasive destructuring of said same.
Lisp is probably never going to get huge and that's ok. It's a niche language for a subset of the programming community that has a specific set of values, and not everybody needs to or wants to share them. Obviously lisp users think you're missing out if you're not using a lisp, and will help you out as much as possible if you decide to join the so called renaissance. However I think the community understands that it's not for everybody.
I also suspect the initial jump into a purely functional paradigm (and then even further into code as data) might be too big of a hurdle to overcome for most developers, who are better off staying productive in their existing idioms.
The interesting takeaway from the article is that Elisp is probably the most popular Lisp. That might be an important fact if you're an autodidact.
As to your second point, I think code-as-data is both a smaller hurdle and a bigger part of Lisp than functional programming, which was always more of a thing in Scheme and really didn't catch up to "modern" FP until Clojure. Any programmer can appreciate the usefulness of macros and templates. The argument for pure functional programming is a lot more cerebral.
I'm sure I would have been more productive if I only knew one language. The "which language should I use?" conversation that seems so debilitating would simply never happen.
My thing is that Lisps feel... Wrong, I suppose, for doing web development. They don't seem to match my way of thinking when architecture web apps. I say this as someone who wrote a routing framework for Pharen, a Lisp dialect that compiles to PHP, so it's less pure than other dialects and has the "power" of PHP underneath it. Still didn't fit.
Perhaps I need to change the way I think. For solving maths problems and crunching numbers (I have most of a BSci in Mathematics) its brilliant (Clojure in particular). Fits perfectly.
You're right, it's probably in the eye of the beholder. To me something like a Clojure Ring app makes perfect sense. You get a request map, pipe it through a bajillion functions until you hit the DB, then you take the results of your DB operations and pipe them back through a bajillion functions all the way back to HTTP.
Oh, request-response maps (heh) well to lisps; I copied Ring's API for my project. My biggest issue I guess, is getting out of a Class and Interface mindset.
That said, do you have any advice for how to think about state in regards to web development? The database and its various assumptions were my biggest headache. What is the go-to library for Clojure here?
Well, in a typical web application (the server part) all your state is normally in the database so you don't need to worry about it. Just use pure functions that process the request get/put the data in the database and give the response. Do you have any specific needs for state other than the database?
Minor nitpick: Lisp is not a purely functional language. It's a multi-paradigm language.
You could, of course, program in a more functional style in Lisp (and that style is encouraged more in some Lisps than others), but you're not forced to.
"One of the biggest problems of Lisp is the lack of reliable libraries" - on Common Lisp there's quicklisp, which is a source of libraries. I'm not using Lisp at production, so I can't attest to their "reliability", but don't seem "buggy" either.
Even though most of my code is in Python and JavaScript, and probably is going to remain that in the near future, and by far the majority of my Lisp coding is and will remain in ELisp, Scheme is, and most likely will remain, my favourite programming language.
I don't use it for any practical reason, on any code that others might pick up on and build on top. I use it purely as a hobbyist language, and for that it's awesome. Scheme is how I learned Computer Science (even though I learned how to program in Python). Scheme is awesome for multiple reasons, more reasons than other languages in my opinion, and popularity is not one of theme. And that is perfectly fine.
That's not to say that Lisp is popular, only to suggest that Github is not necessarily the best sampling of its development communities.