These lists are long enough that I’m going to break them down into some arbitrary sublists. As is often the case, these aren’t really nice orthogonal categories and should be tags, but here we are. In the lists below, apps are categorized under “Backend” based on the main language used on the backend of a webapp. The other categories are pretty straightforward, even if their definitions a bit idiosyncratic and perhaps overly broad.
Linux, including variants like KindleOS
Darwin (with C++)
Windows (kernel in C, with some C++ elsewhere)
Gimp (with perl)
Most GNU userland tools
Most BSD userland tools
LibreOffice (with Java)
Evernote (originally in C#, converted to C++)
Visual Studio (with C#)
Photoshop, Illustrator, InDesign, etc.
Most AAA games
Most pro audio and video production apps
Also see this list and some of the links here.
Most of Netflix
A large fraction of Amazon services
I’m not even going to make a list because basically every major microprocessor, NIC, switch, etc. is made in either VHDL or Verilog. For existing projects, you might say that this is because you have a large team that’s familiar with some boring language, but I’ve worked on greenfield hardware/software co-design for deep learning and networking virtualization, both with teams that are hired from scratch for the project, and we still used Verilog, despite one of the teams having one of the larger collections of bluespec proficient hardware engineers anywhere outside of Arvind’s group at MIT.
I’m not really sure why the vast majority of the types of systems I’m interested in (platforms/infra) are written in boring languages, but I’m reminded of Sutton’s response when asked why he robbed banks, “because that’s where the money is”. Why do I work in boring languages? Because that’s what the people I want to work with use, and what the systems I want to work on are written in. I find the MLs much more pleasant to used than most managed languages in use today, and if I were king, I would make F# the default managed language. But, if I take a job writing a managed language for a backend position I’m overwhelmingly likely to use Java. If I take a job writing a non-GC language, Rust would be nice, but I’m overwhelmingly like to end up writing C or C++.
If my choices were to land on a random project writing Rust, or a really compelling project writing C++, I’d choose the compelling project. YMMV.
Please suggest other software that you think belongs on this list; it doesn’t have to be software that I personally use. Also, does anyone know what EC2, S3, and Redshift are written in? I suspect C++, but I couldn’t find a solid citation for that.
Thanks to Leah Hanson, James Porter, Waldemar Q, Nat Welch, Arjun Sreedharan, Rafa Escalante, @matt_dz, Bartlomiej Filipek, Josiah Irwin, and Presto for additions to this list. Also, thanks to Matt Godbolt, Leah Hanson, and Josiah Irwin for spotting typos.