So there's this super hacky makeshift collection of Julia[1] scripts I once wrote for work to generate reports on the whereabouts of European PHP and Perl developers based on the annual Stack Overflow Developers Survey. I sometimes use these numbers to justify business decisions when it comes to tooling and framework choices: "$thing is known by a lot of developers in our target group for many years" is usually a great point to make to convince management to buy something nice[2]. I'd also like to be in the known what hyped "next big thing" I deliberately choose to ignore this year (while feeling relieved that the PHP and Perl crowd usually matches this sentiment as well!).
Having this loose collection of scripts laying around, I thought it'd be fun to modify some of them so they spew out numbers on what the Emacs and Lisp crowd is up to according to this survey. This post will be a collection of tables with a few sparse remarks of things I found interesting.
With a total of
wc -l survey_results_public.csv
65438 survey_results_public.csv
65438 respondents we've had
xsv search -s NEWCollabToolsHaveWorkedWith 'Emacs' survey_results_public.csv | sed -n '1d;p' | wc -l
2446
2446 (not counting the header row xsv outputs hence the sed part) respondents that stated that they have worked with Emacs, and:
xsv search -s LanguageHaveWorkedWith 'Lisp' survey_results_public.csv | sed -n '1d;p' | wc -l
889
889 parenthesis-enjoyers, that have stated they have worked with Lisp.
Disclaimer: Stack Overflow seems to purge write-in answers from the dataset; I would've assumed at least some write-in mentioned of Guix or Org-Mode to occur in the dataset.
In What Fields is Emacs Used?
According to this survey Emacs is most popular in academia and science, with Scientist being the only occupation where Emacs scores two-digits. I personally belong to groups (something along the lines of "fullstack developer" and "engineering manager" would fit the bill) where Emacs is seemingly not too popular:
xsv search -s DevType "Developer, full-stack" survey_results_public.csv | xsv search -s LanguageHaveWorkedWith "PHP" | xsv search -s NEWCollabToolsHaveWorkedWith "Emacs" | sed -n '1d;p' | wc -l
151
as there are only 151 other respondents in this survey who are full-stack developers that work with PHP and use Emacs to do that. This matches my experience at work, where I am the sole Emacs user.
DevType | Emacs Users | All Respondents | Emacs/All (%) |
---|---|---|---|
Engineer, site reliability | 16 | 310 | 5.16% |
Data scientist or machine learning specialist | 48 | 1024 | 4.69% |
Engineering manager | 50 | 1275 | 3.92% |
Developer, game or graphics | 32 | 706 | 4.53% |
Developer, AI | 30 | 543 | 5.52% |
Cloud infrastructure engineer | 31 | 634 | 4.89% |
Developer, front-end | 38 | 3349 | 1.13% |
Hardware Engineer | 12 | 200 | 6.0% |
Research and Development role | 80 | 943 | 8.48% |
Data or business analyst | 18 | 523 | 3.44% |
Developer, mobile | 36 | 2021 | 1.78% |
Developer, back-end | 453 | 9928 | 4.56% |
Designer | 5 | 182 | 2.75% |
Developer, embedded applications or devices | 101 | 1623 | 6.22% |
Blockchain | 14 | 235 | 5.96% |
Developer Advocate | 3 | 105 | 2.86% |
Data engineer | 42 | 1118 | 3.76% |
Academic researcher | 106 | 1238 | 8.56% |
Scientist | 50 | 332 | 15.06% |
Project manager | 17 | 418 | 4.07% |
Student | 228 | 5102 | 4.47% |
DevOps specialist | 44 | 1019 | 4.32% |
Developer, full-stack | 528 | 18260 | 2.89% |
Developer Experience | 11 | 224 | 4.91% |
Other (please specify): | 156 | 2458 | 6.35% |
Security professional | 15 | 356 | 4.21% |
System administrator | 31 | 552 | 5.62% |
Database administrator | 7 | 171 | 4.09% |
Marketing or sales professional | 3 | 96 | 3.12% |
Developer, QA or test | 12 | 525 | 2.29% |
Product manager | 13 | 290 | 4.48% |
Educator | 28 | 355 | 7.89% |
Senior Executive (C-Suite, VP, etc.) | 50 | 837 | 5.97% |
Developer, desktop or enterprise applications | 104 | 2493 | 4.17% |
Don't blink
Even in these three fields where Emacs has a decent share, Visual Studio Code is leading the charts as well. It's not by the same margin the general survey results suggest, having almost 74% of VSCode usage for all respondents[3] where we're at a range from 50-60% here.. With Chrome (as in the web browser) having a >60% market share[4] and VSCode (which uses Electron, which itself embeds Chromium) having as big of a marketshare in the developers survey, we've been heading towards a Blink monoculture throughout the last few years.
Editor | Academic researcher | Scientist | Educator |
---|---|---|---|
Android Studio | 117 (9.45%) | 23 (6.93%) | 61 (17.18%) |
BBEdit | 10 (0.81%) | 8 (2.41%) | 6 (1.69%) |
CLion | 93 (7.51%) | 18 (5.42%) | 18 (5.07%) |
Code::Blocks | 30 (2.42%) | 14 (4.22%) | 19 (5.35%) |
DataGrip | 26 (2.1%) | 6 (1.81%) | 8 (2.25%) |
Eclipse | 93 (7.51%) | 24 (7.23%) | 46 (12.96%) |
Emacs | 106 (8.56%) | 50 (15.06%) | 28 (7.89%) |
Fleet | 17 (1.37%) | 1 (0.3%) | 7 (1.97%) |
Geany | 17 (1.37%) | 6 (1.81%) | 11 (3.1%) |
Goland | 15 (1.21%) | 1 (0.3%) | 3 (0.85%) |
Helix | 28 (2.26%) | 8 (2.41%) | 8 (2.25%) |
IPython | 195 (15.75%) | 71 (21.39%) | 25 (7.04%) |
IntelliJ IDEA | 179 (14.46%) | 29 (8.73%) | 73 (20.56%) |
Jupyter Notebook/JupyterLab | 438 (35.38%) | 118 (35.54%) | 68 (19.15%) |
Kate | 41 (3.31%) | 13 (3.92%) | 11 (3.1%) |
NA | 88 (7.11%) | 23 (6.93%) | 27 (7.61%) |
Nano | 125 (10.1%) | 32 (9.64%) | 41 (11.55%) |
Neovim | 202 (16.32%) | 42 (12.65%) | 44 (12.39%) |
Netbeans | 23 (1.86%) | 12 (3.61%) | 22 (6.2%) |
Notepad++ | 205 (16.56%) | 62 (18.67%) | 80 (22.54%) |
PhpStorm | 30 (2.42%) | 5 (1.51%) | 16 (4.51%) |
PyCharm | 233 (18.82%) | 47 (14.16%) | 55 (15.49%) |
Qt Creator | 49 (3.96%) | 13 (3.92%) | 10 (2.82%) |
RStudio | 201 (16.24%) | 65 (19.58%) | 28 (7.89%) |
Rad Studio (Delphi, C++ Builder) | 10 (0.81%) | 4 (1.2%) | 6 (1.69%) |
Rider | 25 (2.02%) | 2 (0.6%) | 17 (4.79%) |
RubyMine | 11 (0.89%) | 1 (0.3%) | 1 (0.28%) |
Spacemacs | 5 (0.4%) | 2 (0.6%) | 3 (0.85%) |
Spyder | 70 (5.65%) | 34 (10.24%) | 10 (2.82%) |
Sublime Text | 123 (9.94%) | 24 (7.23%) | 33 (9.3%) |
VSCodium | 79 (6.38%) | 16 (4.82%) | 20 (5.63%) |
Vim | 352 (28.43%) | 86 (25.9%) | 69 (19.44%) |
Visual Studio | 179 (14.46%) | 47 (14.16%) | 74 (20.85%) |
Visual Studio Code | 759 (61.31%) | 174 (52.41%) | 235 (66.2%) |
WebStorm | 39 (3.15%) | 6 (1.81%) | 15 (4.23%) |
Xcode | 51 (4.12%) | 11 (3.31%) | 24 (6.76%) |
How Many People Use Emacs Alongside VSCode?
As the survey offered multiple choice selections, we may want to crunch numbers on how many Emacs users also use VSCode:
xsv search -s NEWCollabToolsHaveWorkedWith "Emacs" survey_results_public.csv | xsv search -s NEWCollabToolsHaveWorkedWith "Visual Studio Code" | sed -n '1d;p' | wc -l
1341
xsv search -s NEWCollabToolsHaveWorkedWith "Emacs" survey_results_public.csv | sed -n '1d;p' | wc -l
2446
1341 out of 2446 respondents, which should be around 54% if I did the right math in my head.
Popular Editors Amongst Lisp And Clojure Developers
Let's' aggregate the Editor choices for developers who either write Lisp or Clojure amongst other languages. Surprisingly here, VSCode leads, but by a unsurpisingly (way) smaller margin:
Editor | Count | Percentage |
---|---|---|
Visual Studio Code | 781 | 12.26% |
Emacs | 661 | 10.38% |
Vim | 487 | 7.65% |
IntelliJ IDEA | 460 | 7.22% |
Neovim | 389 | 6.11% |
Visual Studio | 274 | 4.3% |
Jupyter Notebook/JupyterLab | 257 | 4.04% |
Notepad++ | 244 | 3.83% |
Android Studio | 221 | 3.47% |
PyCharm | 191 | 3.0% |
Nano | 184 | 2.89% |
Eclipse | 182 | 2.86% |
Xcode | 181 | 2.84% |
Sublime Text | 161 | 2.53% |
IPython | 143 | 2.25% |
VSCodium | 131 | 2.06% |
CLion | 116 | 1.82% |
DataGrip | 98 | 1.54% |
WebStorm | 95 | 1.49% |
Qt Creator | 91 | 1.43% |
RStudio | 85 | 1.33% |
Helix | 84 | 1.32% |
Spacemacs | 78 | 1.22% |
Rider | 75 | 1.18% |
PhpStorm | 75 | 1.18% |
Netbeans | 75 | 1.18% |
Goland | 71 | 1.11% |
Kate | 71 | 1.11% |
Code::Blocks | 62 | 0.97% |
Fleet | 55 | 0.86% |
NA | 51 | 0.8% |
BBEdit | 50 | 0.79% |
RubyMine | 49 | 0.77% |
Rad Studio (Delphi, C++ Builder) | 49 | 0.77% |
Spyder | 47 | 0.74% |
Geany | 45 | 0.71% |
Popular Editors Amongst Developers Mentioning $Language
Which lets me assume that the reason for VSCode leading even for lisp-ish developers is to be found on the Clojure side of things:
xsv search -s LanguageHaveWorkedWith "Clojure" survey_results_public.csv | xsv search -s NEWCollabToolsHaveWorkedWith "Emacs" | sed -n '1d;p' | wc -l
274
xsv search -s LanguageHaveWorkedWith "Clojure" survey_results_public.csv | xsv search -s NEWCollabToolsHaveWorkedWith "Visual Studio Code" | sed -n '1d;p' | wc -l
416
xsv search -s LanguageHaveWorkedWith "Lisp" survey_results_public.csv | xsv search -s NEWCollabToolsHaveWorkedWith "Visual Studio Code" | sed -n '1d;p' | wc -l
454
xsv search -s LanguageHaveWorkedWith "Lisp" survey_results_public.csv | xsv search -s NEWCollabToolsHaveWorkedWith "Emacs" | sed -n '1d;p' | wc -l
500
This is seemingly the right guess: If we only look at developers metioning they're writing Lisp regardless of our aggregating with Clojure Emacs leads again. This makes me want to construct a ranking of preferred editors of developers of other languages. Speaking of language: I have to be careful here when it comes to interpret the results, because the survey is per respondent not per editor; so we can't deduce what editor is the most popular per language; we can only say "for developers mentioning they write $language, $editor is popular as its mentioned often". So let's do this for a subset of languages I personally do work with (and some others I find interesting but where I don't have any experience in, such as Fortran, Prolog and Elixir). We get the following ranking:
Programming Language | Most Popular | Second Most Popular | Third Most Popular |
---|---|---|---|
Lisp | Emacs | Visual Studio Code | Vim |
Clojure | Visual Studio Code | IntelliJ IDEA | Emacs |
PHP | Visual Studio Code | Notepad++ | Visual Studio |
Julia | Visual Studio Code | Jupyter Notebook/JupyterLab | Vim |
Haskell | Visual Studio Code | Vim | IntelliJ IDEA |
Perl | Visual Studio Code | Vim | Notepad++ |
C | Visual Studio Code | Visual Studio | Notepad++ |
Fortran | Visual Studio Code | Notepad++ | Visual Studio |
Prolog | Visual Studio Code | IntelliJ IDEA | Visual Studio |
Elixir | Visual Studio Code | Neovim | Vim |
Erlang | Visual Studio Code | Vim | IntelliJ IDEA |
This raises the question for which developers of which languages VSCode also doesn't lead:
julia top_ides_that_are_not_vsc.jl
Programming languages where Visual Studio Code is not the leading IDE:
["Scala", "NA", "Objective-C", "Lisp", "Swift", "Visual Basic (.Net)"]
So we're at Scala, Objective-C, Lisp, Swift and Visual Basic. Let's see what people prefer here (leaving out Lisp as we *obviously* do already know the answer):
Developers of... | Most Popular | Second Most Popular | Third Most Popular |
---|---|---|---|
Scala | IntelliJ IDEA | Visual Studio Code | Vim |
Objective-C | Xcode | Visual Studio Code | Android Studio |
Swift | Xcode | Visual Studio Code | Android Studio |
Visual Basic (.Net) | Visual Studio | Visual Studio Code | Notepad++ |
Concluding: it is *mostly* a preference for parenthesis[5] or good old vendor lock-in (in case of Swift and Objective-Cs X-Code lead on Apples Side and VB.NET on Microsofts side, which for the latter makes Visual Studio, minus Code, the preferred Editor).
Language Popularity
This is also difficult to word, basically I want to see what languages are mentioned the most frequent for developers mentioning that they're using a specific editor. I want to do so for developers mentioning Emacs, VSCode, (Neo)Vim and Helix (which I only have added out of curiosity if Rust is mentioned often as I *mainly* know Rust folks using it):
Developers using... | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th | 10th |
---|---|---|---|---|---|---|---|---|---|---|
Visual Studio Code | JavaScript (29163) | HTML/CSS (24725) | Python (23076) | SQL (22847) | TypeScript (18946) | Bash/Shell (all shells) (14693) | C# (13353) | Java (12909) | C++ (10289) | C (8697) |
Emacs | Python (1634) | Bash/Shell (all shells) (1439) | JavaScript (1340) | SQL (1174) | HTML/CSS (1145) | C (1077) | C++ (957) | Java (833) | TypeScript (755) | Rust (624) |
Vim | Python (8429) | JavaScript (7982) | Bash/Shell (all shells) (7239) | SQL (7014) | HTML/CSS (6775) | TypeScript (4900) | Java (4472) | C (4166) | C++ (4040) | Go (2786) |
Neovim | Python (4714) | JavaScript (4625) | HTML/CSS (3899) | Bash/Shell (all shells) (3889) | SQL (3481) | TypeScript (3414) | Rust (2633) | C (2553) | C++ (2325) | Java (2249) |
Helix | Rust (641) | Python (604) | JavaScript (579) | Bash/Shell (all shells) (511) | HTML/CSS (493) | SQL (432) | TypeScript (423) | C (408) | C++ (361) | Go (321) |
My assumption regarding Helix was correct, others than that the results are unsurprising as they're close to what's generally popular according to the survey.
Does Editor Popularity Differ With YoE?
Not as much as I would've suspected, Emacs only makes it into the Top 10 for brackets with >=30 YoE, and VSCode is popular throughout the brackets.
Years of Experience | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th | 10th |
---|---|---|---|---|---|---|---|---|---|---|
5-10 | Visual Studio Code (9290) | IntelliJ IDEA (3435) | Visual Studio (3154) | Notepad++ (2858) | Vim (2646) | Android Studio (1890) | PyCharm (1859) | Jupyter Notebook/JupyterLab (1526) | Sublime Text (1517) | Neovim (1460) |
50+ | Visual Studio Code (24) | Notepad++ (22) | Visual Studio (20) | Vim (16) | Emacs (13) | Eclipse (13) | Xcode (12) | IntelliJ IDEA (10) | Jupyter Notebook/JupyterLab (10) | PyCharm (9) |
15-20 | Visual Studio Code (3172) | Visual Studio (1378) | Notepad++ (1279) | IntelliJ IDEA (1231) | Vim (1134) | Android Studio (614) | Sublime Text (568) | PyCharm (498) | Xcode (481) | Eclipse (453) |
40-45 | Visual Studio Code (180) | Visual Studio (136) | Notepad++ (111) | Vim (76) | Eclipse (61) | IntelliJ IDEA (60) | Jupyter Notebook/JupyterLab (44) | Android Studio (40) | PyCharm (33) | Emacs (32) |
0-5 | Visual Studio Code (12818) | Visual Studio (4752) | IntelliJ IDEA (4666) | Notepad++ (3299) | Vim (3187) | Android Studio (3046) | PyCharm (2899) | Jupyter Notebook/JupyterLab (2782) | Neovim (2568) | Nano (1611) |
45-50 | Visual Studio Code (56) | Visual Studio (40) | Notepad++ (37) | Vim (33) | Xcode (19) | Eclipse (18) | PyCharm (15) | IntelliJ IDEA (13) | Jupyter Notebook/JupyterLab (12) | Emacs (10) |
25-30 | Visual Studio Code (1507) | Visual Studio (881) | Notepad++ (697) | Vim (558) | IntelliJ IDEA (515) | Eclipse (267) | Android Studio (264) | PyCharm (263) | Xcode (251) | Jupyter Notebook/JupyterLab (220) |
10-15 | Visual Studio Code (5777) | IntelliJ IDEA (2229) | Visual Studio (2219) | Notepad++ (2146) | Vim (1936) | Android Studio (1236) | Sublime Text (1060) | PyCharm (1037) | Neovim (845) | Xcode (829) |
20-25 | Visual Studio Code (2375) | Visual Studio (1135) | Notepad++ (1002) | Vim (853) | IntelliJ IDEA (836) | Android Studio (429) | Sublime Text (358) | PyCharm (355) | Eclipse (350) | Jupyter Notebook/JupyterLab (329) |
30-35 | Visual Studio Code (787) | Visual Studio (485) | Notepad++ (393) | Vim (313) | IntelliJ IDEA (228) | Eclipse (160) | Xcode (160) | Android Studio (146) | PyCharm (140) | Emacs (126) |
35-40 | Visual Studio Code (381) | Visual Studio (250) | Notepad++ (203) | Vim (159) | IntelliJ IDEA (124) | Eclipse (106) | PyCharm (90) | Xcode (85) | Jupyter Notebook/JupyterLab (69) | Emacs (62) |
Most Common Other Languages for Lisp Developers
My last question to answer is what the most common other languages for people working with Lisp are (I added where the languages are placed in the general popularity ranking).
Language | Count |
---|---|
Python (3rd in General) | 639 |
Bash/Shell (all shells) (6th in General) | 587 |
JavaScript (1st in General) | 577 |
HTML/CSS (2nd in General) | 549 |
C (10th in General) | 541 |
SQL (4th in General) | 512 |
C++ (9th in General) | 459 |
Java (7th in General) | 402 |
TypeScript (5th in General) | 334 |
Rust (14th in General) | 315 |
Assembly (19th in General) | 274 |
C# (8th in General) | 257 |
Lua (17th in General) | 253 |
Go (13th in General) | 248 |
PHP (11th in General) | 241 |
PowerShell (12th in General) | 194 |
Haskell (32th in General) | 185 |
Clojure (36th in General) | 172 |
Ruby (20th in General) | 170 |
Perl (28th in General) | 164 |
Kotlin (16th in General) | 145 |
R (22th in General) | 135 |
MATLAB (24th in General) | 133 |
Prolog (45th in General) | 124 |
VBA (25th in General) | 123 |
Scala (27th in General) | 113 |
Fortran (39th in General) | 113 |
Visual Basic (.Net) (23th in General) | 112 |
Dart (18th in General) | 112 |
Swift (21th in General) | 110 |
Groovy (26th in General) | 101 |
OCaml (46th in General) | 98 |
Elixir (31th in General) | 98 |
Delphi (33th in General) | 98 |
Objective-C (30th in General) | 96 |
Erlang (42th in General) | 94 |
MicroPython (34th in General) | 92 |
Zig (38th in General) | 87 |
GDScript (29th in General) | 85 |
Cobol (47th in General) | 85 |
Julia (37th in General) | 79 |
F# (43th in General) | 76 |
Ada (41th in General) | 74 |
Nim (49th in General) | 59 |
Crystal (48th in General) | 59 |
Solidity (40th in General) | 57 |
Apex (44th in General) | 50 |
Zephyr (50th in General) | 48 |
Summary
I mostly did this analysis for the fun of it as I genuinly was interested in seeing what the developers survey says about Lisp and Emacs respondents. I'm not too surprised by the results, as most findings are in accord with my gut instinct and the assumptions I've made before running the scripts. It would've been cool to be able to process the write-in answers as well, but as they're not part of the publically available dataset, that's not going to happen. The most outstanding finding, regardless of the focus on Emacs and Lisp, to me was, that Visual Studio Code as an Editor is leading throughout all YoE brackets and being a popular choice for developers of all languages. I think this isn't a favorable development as a monocultural computing landscape isn't something I am in favor of. Most popular browsers are chromium/blink based, and so is appearantly the most popular editor by far. This doesn't mean you shouldn't use blink-based software if it's the right tool for you, that wouldn't be my choice to be made anyways, but the blink lock-in that happens in many areas is something one shouldn't ignore either.
Footnotes
[1] julia --lisp
is probably one of my all time favorite eastereggs.
[2] Except when something nice equals something lispy and schemey, there are good technical arguments to make, unfortunately popularity isn't *quite* the point one can make here. (but we're working on it, right?)
[3] "Most Popular Technologies" Stack Overflow Developer Survey 2024, Stack Overflow, 2024, https://survey.stackoverflow.co/2024/technology#most-popular-technologies-new-collab-tools. Accessed 11 Aug. 2024.
[4] "Usage Share of Web Browsers." Wikipedia, https://en.wikipedia.org/wiki/Usage_share_of_web_browsers. Accessed 11 Aug. 2024.
[5] https://xkcd.com/297