9 ms·
State of Common Lisp Survey 2020
- asutekku 6y agoJust for the future reference in terms of conducting surveys and helping aggregate the results, please consider not using open fields on topics that would benefit on predefined sets and one open field called "Other". Now there are lists with almost 400 answers with most of the answers being practically the same ("personal stuff", "personal projects", "personal things"...). It does not make it easy to digest the information.
- veddox 6y agoAbsolutely. Most of the questions effectively cannot be evaluated.
- mumblemumble 6y agoThey can be evaluated, it's just going to be difficult to do it as a quantitative analysis. Which is actually kind of fine with me. After a long long period of people only being interested in asking questions when the answer can be graphed, it's nice to see some individuals' actual feelings and opinions showing through in the results. For example, "all tasks that do not require close OS functionality" was a gem of a response that you'd never see in a survey that consisted solely of checkboxes and radio buttons.
- tdsamardzhiev 6y agoQuite fitting for a LISP survey.
- shallowthought 6y agoIn other words, instead of doing it the standard, commonly-accepted way, the author did it his own way, and it ended up being worse.
- npsimons 6y agoThe Lisp Curse. (for the lucky 10,000: http://www.winestockwebdesign.com/Essays/Lisp_Curse.html http://www.winestockwebdesign.com/Essays/Lisp_Curse.html)
- kazinator 6y agoThat was written by someone with (at the time) some experience in web development and zero in Lisp. The request "Update on October 6, 2017. N.B.: Please stop submitting this to Hacker News!" should be interpreted in its strongest form: i.e. including comments.
- npsimons 6y agoThe commentary on adding OO to Lisp, I feel, is still very illuminating. As for "not reposting to HN", I take that as "don't clutter up the front page with something that's been posted multiple times already and has been discussed to death." Posting it in a comment for those that haven't seen it is nowhere near comparable.
- kazinator 6y agoThe commentary on adding OO to Lisp is garbage. > "Making Scheme object-oriented is a sophomore homework assignment." Demonstrating basic OOP in C is likewise a suitable homework assignment. http://rosettacode.org/wiki/Inheritance/Single/C http://rosettacode.org/wiki/Inheritance/Single/C Making a viable object-oriented programming system for others to use is not a trivial task in any language. No object system for Scheme that people actually use had been written by a sophomore as homework and gone into production in that state. (Linux started by a school kid tinkering with kernel programming too; but it would be a strawman to say that a bright undergrad can make a serious Unix clone in a few weeks that Amazon can put into the cloud and sell services on.) The Common Lisp object system took many people years of work, and integrates deeply into the language, such that every object type has a class and can participate meaningfully in the object system without being wrapped in a class. > Due to the difficulty of making C object oriented, only two serious attempts at the problem have made any traction: C++ and Objective-C. Those are examples of having enough traction to actually get people to switch from C to a new language. Ad hoc object systems have been implemented in C programs umpteen times, and a number of such things are available, or have been historically available, as formal libraries for use in C programs. These all have "traction" in their "respective" projects and ecosystems; there is a lot of OOP action within C.
- colonwqbang 6y agoThe author of the survey could also have gone through and compiled the results to be more easy to read.
- hnlmorg 6y agoI've seen surveys that have open fields like that before but they usual use some keyword analysis to distil the results down (though I've always been sceptical how well their NLPs interpret messages like "I always use for personal projects" and "I never use for personal projects" as polar opposites despite the similar wording). Anyhow, in this instance you're right that there isn't even a need for open fields, there's enough examples online already of IT being separated into distinct sectors for field selection on forms. But what really grated me the most about the results was that there didn't even seem to be any deduping of the results (or if there was, it was case sensitive): ("Everything" "everything") ("Personal" "projects") ("web development" "Web development") And there was even an instance where prototyping appeared twice because one instance had \s afterwards!
- developernotes 6y agoThis is good feedback, I will certainly consider that for the future.
- veddox 6y agoMy take-away points (and personal comments): - CL is mostly used by hobbyists. (Not a very big surprise.) - There do seem to be several users in research computing. (As a computational biologist, I find this interesting and encouraging.) - The user demographics skew towards younger adults (<45 yrs). (That's interesting because they weren't around yet during Lisp's heyday, so the language seems to retain enough appeal to still attract new users.) - User's top 5 countries of origin: USA (30%), Germany (10%), UK (5.4%), Japan (5%), Canada (4.3%). (Not quite as anglophone-leaning as I'd expected; there's actually a very wide spread of countries represented.) However, I don't know how this survey was advertised, so the results may just be sampling bias.
- johnlorentzson 6y agoI've only seen this survey on r/lisp, so it's likely that only people involved in that community have answered.
- reikonomusha 6y agoIt’s used a bit in quantum computing research.
- mumblemumble 6y ago> The user demographics skew towards younger adults I'd be careful interpreting numbers like those. This isn't measuring the age demographics of CL users, per se. It's measuring the age demographics of people who responded to the survey. ~25% of that group self-reported as not actually being (current) lisp users.
- veddox 6y agoThat's what I meant with my reference to sampling bias.
- mumblemumble 6y agoI'm not calling attention to a sampling bias problem, I'm calling attention to a data reporting problem. Including people who don't actively use lisp in the sample is entirely valid, and capturing that information about them would facilitate some interesting analyses. For example, we could look for demographic differences among professional lispers, hobbyist lispers, and curious onlookers. Or see if there are any industry trends. It's just that this Google doc reports these data in a way that's too coarse-grained to support that kind of analysis, regardless of any bias concerns.
- ph2082 6y agoI wonder if anybody answered "Why do you use Common Lisp?" to because I read pg's "Beating the Averages" essay. Because I am.
- npsimons 6y agoSame. And PG isn't the only one. Plus, there are a plethora of books being published on CL, and enough libraries I'm running into paradox of choice in some domains.
- dimitar 6y agoIt is inevitable to compare to the State of Clojure survey: https://clojure.org/news/2020/02/20/state-of-clojure-2020 https://clojure.org/news/2020/02/20/state-of-clojure-2020 I think surveys like this are representative of dark matter programmers - Clojure over time changed from a hobby to work language.
- ph2082 6y agoPeople who started with CL but switched to Clojure may also be a contributing factor.
- dgb23 6y agoI only had deeper interactions / usage with two Lisps so far: Racket and Clojure. CL must have some unique appeal that I'm missing. It's community seems to praise it's properties, but is rather quiet otherwise: Interesting talks, projects and companies are be eluding me, especially when compared to the above two Lisps.
- lispm 6y ago> some unique appeal It's a standard for the main Lisp language with multiple very different implementations, including commercial offerings. For example at least two quantum computer companies use Common Lisp deep in their stuff. Currently D-Wave is looking for a Lisp developer for their processor group: https://jobs.lever.co/dwavesys/eca1f300-d90b-460f-9b7e-2660b154ead2 https://jobs.lever.co/dwavesys/eca1f300-d90b-460f-9b7e-2660b...
- nerdponx 6y agoThe big appeal for me is that Lisp is just weird enough to be fun, and dynamic enough to be expressive with rapid prototyping, but also has mechanisms to write more-structured programs and has quite a lot of batteries included, even if they are somewhat oddball or not necessarily portable across implementations. SBCL with Qlot feels almost like Python to me in terms of how quickly I can bang out a simple but working program. But unlike Python I get to use macros and powerful iteration constructs like DO.
- patrec 6y agoWell, I have a cynical take about the unique appeal of Common Lisp, but even cynicism aside Common Lisp is not going to lose to Racket in the "interesting companies" department, I think. Google Flights is still powered by Common Lisp. Clasp is somewhat interesting (and there is a Google Tech Talk about it, too). And instead of learning "How to Design Programs" from people with unclear experience in designing interesting programs, you can read a book full of small interesting programs written by someone with pretty clear track record of doing interesting things (https://github.com/norvig/paip-lisp https://github.com/norvig/paip-lisp).
- zelphirkalt 6y agoI can't respond to the survey without enabling Google's scripts.
- developernotes 6y agoI received one other comment about this while we still had the survey open. I will keep that in mind for the future.
- mark_l_watson 6y agoCommon Lisp has been a major driver for me since 1982, but I also enjoy Racket, Clojure, and Haskell a lot. The Common Lisp community may be small, but I like the energy and enthusiasm! Programming language selection however really does not matter that much. I have also been very happy working on projects using Java, Python, JavaScript, and Ruby. I would never try to talk anyone out of using whatever programming language is their favorite.
- rmrfchik 6y agoMost important result for me: [Common] Lisp is not for oldfags. Majority are younger 35.
- dunefox 6y agoI'm solving advent of code puzzles in Julia (first) and Common Lisp (second). So far I like it quite a lot and I'm surprised that even my naive CL code is comparable with Julia when it comes to efficiency (0.004s Julia vs. 0.009 CL for day 2).
- mepian 6y agoIf you were more familiar with the roots of Julia, you wouldn't be surprised by that.
- dunefox 6y agoCare to elaborate more than that?
- reikonomusha 6y agoMuch of Julia was directly inspired by Lisp.
- dunefox 6y agoI know, many languages are. Why would that directly influence the efficiency of the compiler?
- reikonomusha 6y agoCommon Lisp not only explicitly has the notion of compilation as a part of the language definition and standard library, but the language is/was also traditionally seen as ripe for native compilation. Efficient and serious compilation of Lisp dates back to at least the late 70s.
- na85 6y agoI find lisp really hard to learn. I don't mean the syntax, or the concept of macros (though I'm sure my understanding of macros is incomplete) but what I find is lacking in the documentation is how one actually might use lisp. I read stories about "connecting to" a "running lisp" on a space probe and debugging in real time. Does that mean some lisp implementations listen on a tcp port? How does one actually connect to or disconnect from a repl? Is it just that when NASA launched their probe, someone went in on ssh and moved the process to the background with C-z? How does one deploy a lisp application? Can I compile my code into an executable with, say, sbcl which is what everyone seems to use? Or am I forced to rsync all my source code to my server and get e.g. systemd to manually invoke an entry point?
- desine 6y agoI'm new to Lisp, having started SICP last month, but I can answer some. The space probes are probably just a standard serial port (RS-232 style UART), with some radio protocol that has good error correction/stability. In amateur radio, FT-8 is a slow, reliable, long distance serial protocol often used for hobbyist DX (long distance goal) communication. So likely, yes, they have a minimal shell or REPL-style debugger, where they can at least query variables, and change the machine state. Most aerospace devices use single-user Real Time Operating Systems, which have guaranteed timing on programs running, but to a technician end-user, the feeling is similar to an old Unix system, with similar tool names. You can deploy via compilation, with SBCL, or LLVM, etc. But I've mostly seen Lisp (well, I'm looking at Schemes, specifically) extending a compiled app. It's been pretty trivial connecting Racket to my compiled C functions, and I'll try Guile later, and for me it's mostly been a rapid-development tool to work with my WIP C library.
- Jach 6y agoSBCL has a manual, your main questions are answered in it: http://www.sbcl.org/manual/ http://www.sbcl.org/manual/ Under the dev-tools/editor section you'll see slime mentioned. It too has a manual: https://www.common-lisp.net/project/slime/doc/html/ https://www.common-lisp.net/project/slime/doc/html/ It's common to use slime with emacs, but vim and atom work too. Slime includes a lisp program called swank which sets up a simple server that clients like emacs can open a socket to. In Common Lisp, "compile", "eval", "load", "break", etc. are built-in functions. Lisp programs are 'alive' and can be constructed or debugged and updated by compiling and executing bit by bit without having to suspend or restart the process, using the socket to communicate how to grow. Some examples are in this several part series you can take 10 mins to browse through: https://malisper.me/debugging-lisp-part-1-recompilation/ https://malisper.me/debugging-lisp-part-1-recompilation/ Going beyond that into say developing a full application with version pinning of dependencies and tests is documented in books/in pieces on the web (CL cookbook has a lot). But manuals tell a lot too. Under SBCL's Saving a Core Image, you can see a standalone executable can be made with save-lisp-and-die. But you can also load things with --script if you want a python or node like experience.
- jolmg 6y agoThere's one modern Common Lisp project I'm excited about: https://github.com/atlas-engineer/nyxt https://github.com/atlas-engineer/nyxt It's a web-browser heavily inspired by Emacs. It uses WebKitGTK+ as a backend, and they also have CL bindings for QtWebEngine, which uses code from Chromium, though I don't know if they have any plans to eventually support that as an alternate backend for Nyxt.
- susam 6y agoA few interesting points that stood out for me: • 40% interact with the Common Lisp (CL) community on Reddit and 32% on IRC. Indeed, in my experience too https://www.reddit.com/r/lisp/ https://www.reddit.com/r/lisp/ and Freenode #lisp channels have active and supportive CL communities. • 89% use SBCL. This is not surprising. SBCL has been the most popular Common Lisp implementation for a long time. • 48% are 32 years old or younger. This is going to help the CL community to stay active for, I believe, at least another 20 years and perhaps even beyond that if the community can attract more programmers to this language. It is a beautiful language that is a joy to program in, so I do wonder why it isn't more popular. • 31% are from the US. Countries like China, India, Netherlands, Poland, etc. have less than 3% respondents to the survey. Incidentally, a bunch of us from Freenode IRC are doing a Common Lisp Programming Challenge this month. The objective is to help beginners get started with learning the language while being a part of a community. You don't have to join Freenode IRC to join the challenge. If you are interested in participating in it, please visit https://github.com/spxy/clpc https://github.com/spxy/clpc to participate in the challenge.
- deleted 6y ago[deleted]