# langwhy: every card Data is CC0. Source: https://github.com/langwhy/langwhy # Bash > Command language and shell of the GNU Project, for running programs and writing scripts. - **Appeared:** 1989 - **Creators:** Brian Fox - **Maintained by:** GNU Project, maintained by Chet Ramey - **Type:** shell - **Status:** stable - **Born from:** In 1989 Brian Fox, an employee of the Free Software Foundation, began Bash as a free alternative to the Bourne shell for the GNU Project. The Bourne shell, sh, came from Steve Bourne at Bell Labs, and Bash was meant to stay compatible with it while adding the interactive features of the Korn shell (ksh) and the C shell (csh). - **Reacts to:** sh, ksh - **Trade-offs:** no memory model; no type system; interpreted; concurrency: none. Cost: It keeps the Bourne shell's quirks, quoting and grammar included, so old sh scripts still run and new ones inherit the dark corners. - **Slots:** scripts ●●● strong; cli ●●● strong (Built for interactive use: job control, command-line editing and history.); server ●●○ ok; systems ○○○ none - **Alternatives:** python, perl, ruby, awk - **Won where:** GitHub Actions runs run: steps in bash on Linux and macOS runners by default [source](https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions); GitLab Runner uses Sh/Bash as the default shell on Unix, with sh as the fallback [source](https://docs.gitlab.com/runner/shells/) - **Timeline:** 1989: Brian Fox begins Bash for the GNU Project as a free alternative to the Bourne shell [source](https://pldb.io/concepts/bash.html); 1996: Bash 2.0 tarball is published on the GNU FTP server [source](https://ftp.gnu.org/gnu/bash/); 2009: Chet Ramey announces the first public release of bash-4.0 on the info-gnu list [source](https://lists.gnu.org/r/info-gnu/2009-02/msg00018.html); 2014: Shellshock, CVE-2014-6271, lets crafted environment variables run commands in Bash through 4.3 [source](https://ubuntu.com/security/CVE-2014-6271); 2019: Bash 5.0 tarball is published on the GNU FTP server [source](https://ftp.gnu.org/gnu/bash/); 2019: Apple announces zsh as the default shell in macOS 10.15 Catalina [source](https://www.scriptingosx.com/2019/06/moving-to-zsh/) - **Links:** [website](https://www.gnu.org/software/bash/), [wikipedia](https://en.wikipedia.org/wiki/Bash_(Unix_shell)), [docs](https://tiswww.case.edu/php/chet/bash/bashtop.html) - **PLDB:** https://pldb.io/concepts/bash.html - **Sources:** https://pldb.io/concepts/bash.html, https://tiswww.case.edu/php/chet/bash/rose94.pdf, https://tiswww.case.edu/php/chet/bash/article.pdf, https://www.gnu.org/software/bash/, https://ftp.gnu.org/gnu/bash/, https://lists.gnu.org/r/info-gnu/2009-02/msg00018.html, https://ubuntu.com/security/CVE-2014-6271, https://www.scriptingosx.com/2019/06/moving-to-zsh/, https://support.apple.com/en-us/HT208050, https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions, https://docs.gitlab.com/runner/shells/, https://en.wikipedia.org/wiki/Bash_(Unix_shell) - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/bash/ ## Why it exists In 1989 Brian Fox, who worked for the Free Software Foundation, wrote Bash as a free alternative to the Bourne shell for the GNU Project ([PLDB](https://pldb.io/concepts/bash.html)). The shell it replaced was sh, the direct ancestor of the Unix `/bin/sh`, written by Steve Bourne at Bell Labs ([Ramey](https://tiswww.case.edu/php/chet/bash/rose94.pdf)). Bash was meant to stay compatible with sh while borrowing the useful features of the Korn shell (ksh) and the C shell (csh), and the GNU Project's own description says it does exactly that ([GNU](https://www.gnu.org/software/bash/)). The most noticeable improvements over sh were for interactive use, such as job control, command-line editing and history ([Ramey](https://tiswww.case.edu/php/chet/bash/rose94.pdf)). ## What it trades away Bash is an sh-compatible shell, so it keeps the Bourne shell's quirks. Its maintainer writes that the lesson repeated most often during Bash development is that the Bourne shell has dark corners and people use all of them, and that quoting and the grammar were poorly specified in the original Bourne shell description ([Ramey](https://tiswww.case.edu/php/chet/bash/article.pdf)). Scripts that look simple can therefore behave in ways their authors did not expect. Bash calls itself a command language interpreter, so it is the glue around programs rather than the place where most application code is written. ## Where it won Bash is the default shell for scripts in several places where people never choose one. GitHub Actions runs `run:` steps in bash on Linux and macOS runners by default ([GitHub](https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions)). GitLab Runner uses Sh/Bash as the default shell on Unix systems, with sh as the fallback ([GitLab](https://docs.gitlab.com/runner/shells/)). It also shows where it lost ground: macOS 10.15 Catalina made zsh the default shell for new accounts, and Apple's support page says so directly ([Apple](https://support.apple.com/en-us/HT208050)). Bash has also been a security story, since the 2014 Shellshock bug let crafted environment variables run commands in Bash through version 4.3 ([Ubuntu](https://ubuntu.com/security/CVE-2014-6271)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/bash.yaml # C > Programming language for operating systems and other code that has to work close to the hardware. - **Appeared:** 1972 - **Creators:** Dennis Ritchie - **Type:** systems - **Status:** stable - **Born from:** In 1969 Ken Thompson created the B language at Bell Labs, and B had no types. The PDP-11's byte addressing exposed B's limits, so Dennis Ritchie added types, int and char, and wrote C, and in 1973 the Unix kernel was rewritten in it. - **Reacts to:** b, bcpl - **Trade-offs:** manual memory; static types; compiles to native code; concurrency: threads. Cost: No bounds checks and no memory ownership rules, so buffer overflows and use-after-free bugs are the programmer's job, and undefined behaviour often compiles without an error. - **Slots:** systems ●●● strong; embedded ●●● strong; server ●●○ ok; cli ●●○ ok; wasm ●●○ ok; browser ○○○ none (Only through WebAssembly, not as a browser language.) - **Alternatives:** cpp, rust, zig - **Won where:** Linux kernel, which its own documentation says is written in the C programming language [source](https://docs.kernel.org/process/programming-language.html); Unix, whose kernel was rewritten in C in 1973 [source](https://csapp.cs.cmu.edu/2e/docs/chistory.html) - **Timeline:** 1969: Ken Thompson creates the B language at Bell Labs [source](https://csapp.cs.cmu.edu/2e/docs/chistory.html); 1972: Ritchie calls 1972 the most creative period of C's development [source](https://csapp.cs.cmu.edu/2e/docs/chistory.html); 1973: The Unix kernel is rewritten in C for the PDP-11 [source](https://csapp.cs.cmu.edu/2e/docs/chistory.html); 1978: Kernighan and Ritchie publish The C Programming Language [source](https://csapp.cs.cmu.edu/2e/docs/chistory.html); 1989: The X3J11 committee finishes its ANSI C standard report [source](https://csapp.cs.cmu.edu/2e/docs/chistory.html); 2024: C23 is adopted as the current ISO standard [source](https://www.open-std.org/jtc1/sc22/wg14/) - **Links:** [website](https://www.open-std.org/jtc1/sc22/wg14/) - **PLDB:** https://pldb.io/concepts/c.html - **Sources:** https://csapp.cs.cmu.edu/2e/docs/chistory.html, https://docs.kernel.org/process/programming-language.html, https://www.open-std.org/jtc1/sc22/wg14/, https://pldb.io/concepts/c.html - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/c/ ## Why it exists In 1969 Ken Thompson created the B language at Bell Labs. B was BCPL "squeezed into 8K bytes of memory and filtered through Thompson's brain", and it had no types. The PDP-11 exposed its limits. Dennis Ritchie wrote that the machine's byte addressing "exposed several inadequacies of B's semantic model", and that "a typing scheme was necessary to cope with characters and byte addressing" ([Ritchie, The Development of the C Language](https://csapp.cs.cmu.edu/2e/docs/chistory.html)). C added the types int and char, with arrays and pointers to them, and in 1973 the Unix kernel was rewritten in it. ## What it trades away C gives the programmer the machine with almost nothing in between. It has no runtime bounds checks and no rules about who owns a piece of memory, so buffer overflows and use-after-free bugs are the programmer's job to prevent. The compiler may accept code with undefined behaviour without an error, and the standard leaves many details to each implementation, so the same code can behave differently on different compilers. The ISO working group still revises the language and adopted C23 in 2024 ([WG14](https://www.open-std.org/jtc1/sc22/wg14/)). ## Where it won The Linux kernel is written in the C programming language, and its documentation says it is typically compiled with gcc in the GNU dialect of ISO C11 ([Linux kernel docs](https://docs.kernel.org/process/programming-language.html)). Unix followed the same path. Ritchie's account says that "writing the Unix kernel in C had given us enough confidence" in the language, and the kernel for the PDP-11 was rewritten in C in 1973 ([Ritchie](https://csapp.cs.cmu.edu/2e/docs/chistory.html)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/c.yaml # C# > Language for building .NET applications, from web services and desktop apps to Unity game scripts. - **Appeared:** 2000 - **Creators:** Anders Hejlsberg - **Maintained by:** Microsoft - **Type:** backend - **Status:** alive - **Born from:** In January 1999 Anders Hejlsberg, who had designed Turbo Pascal and Delphi and worked on Visual J++, formed a team at Microsoft to build a new language for the .NET runtime, first called COOL. Microsoft's own Java had been tied up in a lawsuit with Sun since the late 1990s, and the January 2001 settlement ended the 1996 Java licence, so .NET needed a managed language of its own. The language was announced as C# in July 2000. - **Reacts to:** java, delphi - **Trade-offs:** garbage collected; static types; runs on a virtual machine; concurrency: threads, async. Cost: The .NET runtime is large and garbage-collected, so latency-sensitive code needs tuning that C or Rust code avoids. - **Slots:** games ●●● strong (Unity uses C# for gameplay scripts.); server ●●● strong (Stack Overflow's 2016 web tier ran on ASP.NET MVC.); cli ●●○ ok; mobile ●○○ weak; browser ●○○ weak (Blazor runs C# in the browser through WebAssembly, but JavaScript is the default.); systems ○○○ none (Kernels and drivers are written in C or C++, not in C#.) - **Alternatives:** java, kotlin, go, dart - **Won where:** Unity, where gameplay scripts are written in C# [source](https://docs.unity.com/en-us/engine/6000.3/manual/scripting/get-started/intro-to); Stack Overflow, whose 2016 web tier ran on ASP.NET MVC 5.2.3 and .NET 4.6.1 [source](https://netlify.nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/) - **Timeline:** 1999: Hejlsberg forms a team in January to build the language, then called COOL [source](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)); 2000: Microsoft's July 2000 Orlando release promotes C# as one of the .NET languages [source](https://news.microsoft.com/source/2000/07/11/microsoft-announces-groundswell-of-support-for-net-platform); 2001: Settlement with Sun ends the 1996 Java license that Microsoft had used [source](https://www.infoworld.com/article/2159673/sun-microsoft-settle-java-lawsuit.html); 2002: C# is standardized as ECMA-334, 2nd edition, in December 2002 [source](https://ecma-international.org/publications-and-standards/standards/ecma-334/); 2014: Microsoft announces that .NET Core will be open source, including the runtime [source](https://devblogs.microsoft.com/dotnet/net-core-is-open-source); 2023: ECMA-334 7th edition, the latest C# specification, is published in December [source](https://ecma-international.org/publications-and-standards/standards/ecma-334/) - **Links:** [website](https://dotnet.microsoft.com), [repo](https://github.com/dotnet/runtime) - **PLDB:** https://pldb.io/concepts/csharp.html - **Sources:** https://en.wikipedia.org/wiki/C_Sharp_(programming_language), https://www.infoworld.com/article/2159673/sun-microsoft-settle-java-lawsuit.html, https://www.theregister.com/2010/07/05/dot_net_anniversary/, https://www.artima.com/intv/csdes.html, https://news.microsoft.com/source/2000/07/11/microsoft-announces-groundswell-of-support-for-net-platform, https://ecma-international.org/publications-and-standards/standards/ecma-334/, https://devblogs.microsoft.com/dotnet/net-core-is-open-source, https://docs.unity.com/en-us/engine/6000.3/manual/scripting/get-started/intro-to, https://netlify.nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/csharp/ ## Why it exists In January 1999 Anders Hejlsberg formed a team at Microsoft to build a new language, then called COOL, for the runtime that became .NET; by the time the .NET project was announced at the Professional Developers Conference in July 2000 it had been renamed C# ([Wikipedia](https://en.wikipedia.org/wiki/C_Sharp_(programming_language))). Microsoft's Java path was ending in court at the same time: in January 2001 it settled Sun's Java lawsuit, and the 1996 licence between the two companies was terminated ([InfoWorld](https://www.infoworld.com/article/2159673/sun-microsoft-settle-java-lawsuit.html)). Hejlsberg had designed Delphi at Borland and worked on Visual J++ at Microsoft ([Artima](https://www.artima.com/intv/csdes.html)), and in July 2000 he said C# is "not a Java clone" ([Wikipedia](https://en.wikipedia.org/wiki/C_Sharp_(programming_language))). Microsoft promoted .NET that month as a platform "designed for any programming language" ([Microsoft](https://news.microsoft.com/source/2000/07/11/microsoft-announces-groundswell-of-support-for-net-platform)). ## What it trades away C# trades a large runtime for safety and tooling. Code is garbage-collected and runs on the .NET common runtime, so it gets a big standard library and strong tooling, but it also carries a runtime's startup time and memory overhead. Microsoft open-sourced .NET Core in 2014 ([Microsoft .NET blog](https://devblogs.microsoft.com/dotnet/net-core-is-open-source)), and its website now describes .NET as running on Windows, Linux and macOS ([.NET](https://dotnet.microsoft.com)). Latency-sensitive code still needs tuning that C or Rust code does not. ## Where it won Unity, the game engine, uses C# for gameplay scripts, so game logic in Unity projects is written in C# ([Unity manual](https://docs.unity.com/en-us/engine/6000.3/manual/scripting/get-started/intro-to)). On the server, Stack Overflow's 2016 web tier ran on IIS, ASP.NET MVC 5.2.3 and .NET 4.6.1 ([Nick Craver](https://netlify.nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/)). The same post says the service tier ran IIS 8.5 on Windows Server 2012 R2, so production was Windows-first. --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/csharp.yaml # C++ > Compiled language that adds classes, templates and manual memory control to C. - **Appeared:** 1985 - **Creators:** Bjarne Stroustrup - **Type:** systems - **Status:** alive - **Born from:** In 1979 Bjarne Stroustrup was using Simula, which had the classes he wanted, to simulate a distributed operating system. Simula ran too slowly for the job, so he set out to combine its classes with the speed of C, and the first version was called C with Classes. - **Reacts to:** c, simula - **Trade-offs:** manual memory; static types; compiles to native code; concurrency: threads. Cost: A large language that keeps C's undefined behaviour and offers many ways to misuse the same feature, and template-heavy code gives long compile times and error messages. - **Slots:** systems ●●● strong; games ●●● strong; embedded ●●○ ok; server ●●○ ok; wasm ●●○ ok; browser ○○○ none (Chrome's JavaScript engine is C++, but pages reach C++ only through WebAssembly.) - **Alternatives:** rust, c, zig - **Won where:** V8, the JavaScript engine used in Chrome and Node.js, is written in C++ [source](https://v8.dev/docs); LLVM, the compiler framework, is written in the subset of C++ its coding standards define [source](https://llvm.org/docs/GettingStarted.html) - **Timeline:** 1979: Work on C with Classes begins, the first version of C++ [source](https://softwarepreservation.computerhistory.org/c_plus_plus/); 1984: The name C++ is adopted [source](https://softwarepreservation.computerhistory.org/c_plus_plus/); 1985: Cfront 1.0, the first commercial release of C++ [source](https://softwarepreservation.computerhistory.org/c_plus_plus/); 1998: ISO/IEC 14882:1998, the first ISO C++ standard, is published on 1 September 1998 [source](https://www.stroustrup.com/iso_pressrelease2.html); 2023: Technical work on C++23 is completed; the standard is published as ISO/IEC 14882:2024 [source](https://isocpp.org/std/the-standard) - **Links:** [website](https://isocpp.org/) - **PLDB:** https://pldb.io/concepts/cpp.html - **Sources:** https://www.stroustrup.com/bs_faq.html, https://stroustrup.com/gillies.htm, https://softwarepreservation.computerhistory.org/c_plus_plus/, https://www.stroustrup.com/iso_pressrelease2.html, https://isocpp.org/std/the-standard, https://v8.dev/docs, https://llvm.org/docs/GettingStarted.html, https://pldb.io/concepts/cpp.html - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/cpp/ ## Why it exists In 1979 Bjarne Stroustrup started the work that became C++, with the goal of writing "efficient systems programs in the styles encouraged by Simula67" ([Stroustrup, C++ FAQ](https://www.stroustrup.com/bs_faq.html)). He was using Simula to simulate a distributed operating system. In a lecture transcript on his site he says Simula "simply ran too slow", and that "it was too expensive, so I had to translate it to a lower level language" ([Stroustrup, Gillies lecture](https://stroustrup.com/gillies.htm)). He wanted Simula's type system and object-oriented design married to the strengths of C. The first version, "C with Classes", began in April 1979 ([Computer History Museum](https://softwarepreservation.computerhistory.org/c_plus_plus/)). ## What it trades away C++ kept C's unchecked pointers and undefined behaviour, because Stroustrup considered C "the best systems programming language available" at the time ([Stroustrup, C++ FAQ](https://www.stroustrup.com/bs_faq.html)). On top of that it adds classes, templates, operator overloading and many more features, so a programmer has many ways to use the language and many ways to misuse it. Heavy template code makes compile times and error messages long. The cost is size and complexity, paid by everyone who reads the code, and the unsafe parts stay in the language for compatibility with C. ## Where it won V8, Google's JavaScript and WebAssembly engine, is written in C++ and is used in Chrome and Node.js ([V8](https://v8.dev/docs)). LLVM, the compiler framework, is written using the subset of C++ documented in its coding standards ([LLVM](https://llvm.org/docs/GettingStarted.html)). The language became an ISO standard when ISO/IEC 14882:1998 was published on 1 September 1998 ([Stroustrup, ISO press release](https://www.stroustrup.com/iso_pressrelease2.html)), and the current standard, C++23, finished its technical work in 2023 ([ISO C++](https://isocpp.org/std/the-standard)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/cpp.yaml # Dart > Language for building Flutter apps, compiled ahead of time to native code or to JavaScript. - **Appeared:** 2011 - **Creators:** Lars Bak - **Maintained by:** Google - **Type:** mobile - **Status:** alive - **Born from:** Google's 2011 launch post, by Lars Bak of the Dart team, set out to create a structured yet flexible language for web programming with high performance on all browsers. In 2015 the Dart team decided not to integrate the Dart VM into Chrome and kept Dart compiling to JavaScript for the web. - **Reacts to:** javascript - **Trade-offs:** garbage collected; static types; compiles to native code; concurrency: async, actors. Cost: Outside Flutter, Dart has a small library ecosystem and hiring pool, so a Dart team is mostly a Flutter team. - **Slots:** mobile ●●● strong (Flutter apps are written in Dart.); browser ●○○ weak (Compiles to JavaScript; Chrome never shipped the Dart VM.); server ●○○ weak; embedded ○○○ none (Dart has no standard runtime for microcontrollers.) - **Alternatives:** kotlin, swift, typescript, javascript - **Won where:** Google Pay, a Flutter case study on the official showcase [source](https://flutter.dev/showcase); BMW Group, a Flutter case study on scaling customer-facing product development [source](https://flutter.dev/showcase); Alibaba, which scaled China's largest second-hand marketplace with Flutter [source](https://flutter.dev/showcase) - **Timeline:** 2011: Google announces Dart on October 10 as a language for web applications [source](https://googlecode.blogspot.com/2011/10/dart-language-for-structured-web.html); 2015: Google drops the plan to put the Dart VM in Chrome and focuses on compiling Dart to JavaScript [source](https://news.dartlang.org/2015/03/dart-for-entire-web.html); 2018: Flutter 1.0 ships in December, alongside Dart 2.1 [source](https://www.infoq.com/news/2018/12/flutter-1.0-released); 2023: Dart 3 makes null safety fully sound and adds records, patterns and class modifiers [source](https://dart.cn/blog/announcing-dart-3) - **Links:** [website](https://dart.dev), [repo](https://github.com/dart-lang/sdk) - **PLDB:** https://pldb.io/concepts/dart.html - **Sources:** https://googlecode.blogspot.com/2011/10/dart-language-for-structured-web.html, https://news.dartlang.org/2015/03/dart-for-entire-web.html, https://www.infoq.com/news/2018/12/flutter-1.0-released, https://dart.cn/blog/announcing-dart-3, https://flutter.dev/showcase, https://pldb.io/concepts/dart.html - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/dart/ ## Why it exists Google introduced Dart in October 2011. Lars Bak, a Dart team engineer, described it as a language for building web applications and set out to create "a structured yet flexible language for web programming" ([Google Code blog](https://googlecode.blogspot.com/2011/10/dart-language-for-structured-web.html)). The post said Dart could also run on top of a JavaScript engine through a compiler that translates Dart to JavaScript. In March 2015 the team said it had "decided not to integrate the Dart VM into Chrome" and would focus on compiling Dart to JavaScript ([Dart blog](https://news.dartlang.org/2015/03/dart-for-entire-web.html)). ## What it trades away Dart trades ecosystem size for a tight Flutter stack. Outside Flutter it has a small library ecosystem and hiring pool, so a Dart team is mostly a Flutter team. On the web it is a compiler target rather than a browser language: Dart runs in the browser only as compiled JavaScript, because Chrome never shipped the Dart VM ([Dart blog](https://news.dartlang.org/2015/03/dart-for-entire-web.html)). The language itself is statically typed and garbage-collected. Dart 3 made null safety fully sound, so a non-nullable type can never hold null ([Dart 3 announcement](https://dart.cn/blog/announcing-dart-3)). ## Where it won Flutter is where Dart won. The official Flutter showcase lists Google Pay with a case study headlined "Going global at Google Pay with Flutter", BMW Group's work on customer-facing product development, and Alibaba's account of scaling China's largest second-hand marketplace with Flutter ([Flutter showcase](https://flutter.dev/showcase)). Flutter 1.0 shipped in December 2018 alongside Dart 2.1, so the framework and the language reached developers together ([InfoQ](https://www.infoq.com/news/2018/12/flutter-1.0-released)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/dart.yaml # Elixir > Functional language for concurrent server applications that runs on the Erlang virtual machine (BEAM). - **Appeared:** 2012 - **Creators:** José Valim - **Type:** backend - **Status:** alive - **Born from:** In 2010 José Valim, a member of the Rails core team, was working on Rails thread-safety guarantees and came out convinced that solving concurrency problems in Ruby was too hard to keep its philosophy of programmer happiness. He went looking at other platforms, found the Erlang VM and its concurrency and failure model, and at the beginning of 2011 his company Plataformatec agreed he could spend all his time building a new language on top of it. - **Reacts to:** erlang, ruby - **Trade-offs:** garbage collected; dynamic types; runs on a virtual machine; concurrency: actors. Cost: Dynamic typing and the process model make CPU-heavy loops slower than in native languages, and OTP's supervision model is a second thing to learn. - **Slots:** server ●●● strong (Discord's core services are written in Elixir.); embedded ●●○ ok (Nerves builds production embedded systems on the BEAM and Elixir.); browser ●○○ weak (Browsers still run JavaScript; Elixir sends updates to the page from the server.); mobile ○○○ none (Elixir has no mobile runtime; mobile apps use Swift, Kotlin or Dart.) - **Alternatives:** erlang, go, ruby, python - **Won where:** Discord, whose core services run on Elixir and which reported scaling it to 11 million concurrent users [source](https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users); Nerves, the open-source platform for production embedded systems on Elixir [source](https://nerves-project.org/); Bleacher Report, which moved its Team Stream app from Ruby to Elixir [source](https://www.erlang-solutions.com/case-studies/bleacher-report-case-study/) - **Timeline:** 2010: Valim works on Rails thread safety and concludes concurrency in Ruby is too hard [source](https://blog.plataformatec.com.br/2015/01/introducing-elixir-radar-the-weekly-email-newsletter-about-elixir/); 2011: Plataformatec agrees Valim can spend all his time on a new language for the Erlang VM [source](https://blog.plataformatec.com.br/2015/01/introducing-elixir-radar-the-weekly-email-newsletter-about-elixir/); 2012: Elixir v0.5.0 is announced on the Erlang mailing list on May 25 [source](https://erlang.org/pipermail/erlang-questions/2012-May/066994.html); 2014: Elixir 1.0 is released, built on the Erlang VM [source](https://elixir-lang.org/blog/2014/09/18/elixir-v1-0-0-released/); 2019: Discord explains a Rust sorted set exposed to Elixir as a NIF, so its core services stay in Elixir [source](https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users); 2022: Valim says in an interview that the BEAM was the main reason he built Elixir [source](https://erlef.org/blog/eef/behind-elixir-interview-with-jose-valim) - **Links:** [website](https://elixir-lang.org), [repo](https://github.com/elixir-lang/elixir) - **PLDB:** https://pldb.io/concepts/elixir.html - **Sources:** https://blog.plataformatec.com.br/2015/01/introducing-elixir-radar-the-weekly-email-newsletter-about-elixir/, https://erlef.org/blog/eef/behind-elixir-interview-with-jose-valim, https://www.erlang-factory.com/euc2015/jose-valim, https://erlang.org/pipermail/erlang-questions/2012-May/066994.html, https://elixir-lang.org/blog/2014/09/18/elixir-v1-0-0-released/, https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users, https://nerves-project.org/, https://www.erlang-solutions.com/case-studies/bleacher-report-case-study/, https://pldb.io/concepts/elixir.html - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/elixir/ ## Why it exists In 2010 José Valim was on the Rails core team, working on Rails thread-safety guarantees. His company later wrote that "because of that experience, he felt solving concurrency problems was too hard", so hard that it was difficult to keep Ruby's philosophy of programmer happiness while solving them ([Plataformatec](https://blog.plataformatec.com.br/2015/01/introducing-elixir-radar-the-weekly-email-newsletter-about-elixir/)). He went to study other platforms and "fell in love with the Erlang VM": its concurrency model and its failure semantics, which showed him how to write code that survives errors without being defensive. At the beginning of 2011 Plataformatec agreed he could spend all his time on a new language for that VM ([Plataformatec](https://blog.plataformatec.com.br/2015/01/introducing-elixir-radar-the-weekly-email-newsletter-about-elixir/)). Valim has also said that the BEAM was the main reason he built Elixir ([ERLEF interview](https://erlef.org/blog/eef/behind-elixir-interview-with-jose-valim)). In May 2012 Elixir v0.5.0 was announced on the Erlang mailing list ([erlang-questions](https://erlang.org/pipermail/erlang-questions/2012-May/066994.html)). ## What it trades away Elixir gets Erlang's process model and fault tolerance, and pays for it in speed on CPU-heavy work and in dynamic typing, where type mistakes show up at run time. OTP's supervision trees are a separate model to learn before the language feels natural. The project's own pitch is strongest for "message-oriented and web real-time systems" ([Elixir](https://elixir-lang.org/)), which is the region where the trade pays off. Outside it, a statically typed or native language is usually the better fit. ## Where it won Discord's core services run on Elixir. Its 2019 post on scaling to 11 million concurrent users explains that the sorted set it needed for very large servers is written in Rust and exposed to Elixir as a NIF, so the core stays Elixir ([Discord engineering](https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users)). Nerves uses Elixir and the BEAM to build production embedded systems ([Nerves](https://nerves-project.org/)). Bleacher Report moved its Team Stream app from Ruby to Elixir, according to a case study by Erlang Solutions, the consultancy that did the work ([Erlang Solutions](https://www.erlang-solutions.com/case-studies/bleacher-report-case-study/)). That source is vendor-written, so its server figures are self-reported. --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/elixir.yaml # Go > Compiled language with garbage collection and goroutines, made for networked servers and cloud tools. - **Appeared:** 2009 - **Creators:** Robert Griesemer, Rob Pike, Ken Thompson - **Maintained by:** Google - **Type:** backend - **Status:** alive - **Born from:** In 2007 a large Google program took 45 minutes to build, and Rob Pike's account of Go's origin puts its conception during one of those builds. The team wanted fast compilation, efficient execution and ease of programming, which its FAQ says no single mainstream language offered at the time. - **Reacts to:** c, cpp - **Trade-offs:** garbage collected; static types; compiles to native code; concurrency: green. Cost: A garbage collector you cannot switch off and a deliberately small language, with fewer abstractions, in return for fast builds and code that is easy to read. - **Slots:** server ●●● strong; cli ●●● strong; data ●●○ ok; systems ●●○ ok; mobile ●○○ weak; embedded ●○○ weak; browser ○○○ none (Compiles to WebAssembly, but is not a browser language.) - **Alternatives:** rust, java, csharp - **Won where:** Google's web indexing services and Chrome optimization guide service, which are written in Go [source](https://go.dev/solutions/google/); CockroachDB, which was 89.6 percent Go code in October 2023 [source](https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/) - **Timeline:** 2007: A large Google program takes 45 minutes to build, in the account of Rob Pike [source](https://go.dev/talks/2012/splash.article); 2009: The Go project is launched publicly on 10 November 2009 [source](https://go.dev/blog/1year); 2012: Go 1 is released on 28 March 2012 with a compatibility promise [source](https://go.dev/doc/devel/release) - **Links:** [website](https://go.dev/) - **PLDB:** https://pldb.io/concepts/go.html - **Sources:** https://go.dev/talks/2012/splash.article, https://go.dev/doc/faq, https://go.dev/blog/1year, https://go.dev/doc/devel/release, https://go.dev/solutions/google/, https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/, https://go.dev/, https://pldb.io/concepts/go.html - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/go/ ## Why it exists In 2007 a large Google program took 45 minutes to build. Rob Pike's account of Go's origin says that "the origin myth for Go states that it was during one of those 45 minute builds that Go was conceived" ([Pike, Go at Google](https://go.dev/talks/2012/splash.article)). The FAQ puts the underlying problem in one sentence: "One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language" ([Go FAQ](https://go.dev/doc/faq)). The aim was to combine them in one language, with concurrency and garbage collection built in. Go was launched publicly on 10 November 2009 ([Go blog](https://go.dev/blog/1year)). ## What it trades away Go gives up manual memory control for a garbage collector, and gives up many language features for a small one. The FAQ states the goal as "the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language" ([Go FAQ](https://go.dev/doc/faq)). Concurrency is cheap, because goroutines have "little overhead beyond the memory for the stack, which is just a few kilobytes", but the programmer gets fewer features to shape the code with and less control over memory layout. ## Where it won Google uses Go for its web indexing services, which are written in Go, and for the Chrome optimization guide service, which is implemented in Go ([Google's Go case study](https://go.dev/solutions/google/)). CockroachDB was 89.6 percent Go code in October 2023 ([CockroachDB](https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/)). Go 1, the first stable release, came out on 28 March 2012 with a promise that programs written for it will keep compiling and running unchanged under later versions ([Go release history](https://go.dev/doc/devel/release)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/go.yaml # Haskell > Purely functional, lazily evaluated language for writing programs as typed functions. - **Appeared:** 1990 - **Creators:** Haskell Committee, Paul Hudak, Philip Wadler - **Maintained by:** haskell.org community - **Type:** functional - **Status:** alive - **Born from:** In September 1987 a meeting at the FPCA conference in Portland, Oregon, faced more than a dozen non-strict, purely functional languages with similar power and agreed that a committee should design one common language. The most mature of them, Miranda, was a commercial product of David Turner's company, and Turner declined to let the committee adopt it as the starting point. - **Reacts to:** miranda, ml - **Trade-offs:** garbage collected; static types; compiles to native code; concurrency: green. Cost: Laziness makes space use hard to predict, and even experienced programmers struggle with it, so the language later gained strict features. - **Slots:** server ●●● strong (Facebook's Sigma rule engine runs in Haskell at more than one million requests per second.); cli ●●● strong (Pandoc is a Haskell library and a command-line tool for converting document formats.); config ●●○ ok (xmonad, a tiling window manager, is written and configured in Haskell.); embedded ○○○ none - **Alternatives:** ocaml, scala, fsharp, rust - **Won where:** Facebook Sigma, an anti-abuse rule engine rewritten in Haskell, serving over one million requests per second [source](https://engineering.fb.com/2015/06/26/security/fighting-spam-with-haskell/); xmonad, a dynamically tiling X11 window manager written and configured in Haskell [source](https://xmonad.org/); Cardano, whose platform is written in Haskell [source](https://docs.cardano.org/about-cardano/introduction); Pandoc, a document converter that is a Haskell library and a command-line tool [source](https://github.com/jgm/pandoc) - **Timeline:** 1987: A meeting at FPCA in Portland, Oregon, decides that a committee should design one common language [source](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf); 1990: Haskell 1.0 report, dated 1 April 1990 [source](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf); 1999: Haskell 98 report published, a commitment to a stable language [source](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf); 2007: A History of Haskell is presented at HOPL III in San Diego [source](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf); 2010: Haskell 2010 Language Report is published [source](https://www.haskell.org/onlinereport/haskell2010/); 2015: Facebook rewrites Sigma in Haskell, replacing its in-house FXL language [source](https://engineering.fb.com/2015/06/26/security/fighting-spam-with-haskell/) - **Links:** [website](https://www.haskell.org), [repo](https://github.com/ghc/ghc), [wikipedia](https://en.wikipedia.org/wiki/Haskell), [docs](https://www.haskell.org/onlinereport/haskell2010/) - **PLDB:** https://pldb.io/concepts/haskell.html - **Sources:** https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf, https://www.haskell.org/onlinereport/haskell2010/, https://engineering.fb.com/2015/06/26/security/fighting-spam-with-haskell/, https://xmonad.org/, https://docs.cardano.org/about-cardano/introduction, https://github.com/jgm/pandoc, https://downloads.haskell.org/ghc/latest/docs/users_guide/runtime_control.html, https://downloads.haskell.org/ghc/latest/docs/users_guide/codegens.html, https://hackage-content.haskell.org/package/base-4.22.0.0/docs/Control-Concurrent.html, https://pldb.io/concepts/haskell.html, https://en.wikipedia.org/wiki/Haskell - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/haskell/ ## Why it exists In September 1987 a meeting at the FPCA conference in Portland, Oregon, faced a problem: more than a dozen non-strict, purely functional languages existed, all similar in power, and their wider use was held back by the lack of a common language ([History of Haskell](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf)). The meeting agreed that a committee should design one common language. The most mature candidate, Miranda, was a product of David Turner's company, and Turner declined to let the committee adopt it as the starting point. The committee designed a new language and published version 1.0 of the report, dated 1 April 1990, edited by Paul Hudak and Philip Wadler ([History of Haskell](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf)). ## What it trades away Laziness is the main price. Haskell evaluates an argument only when its value is needed, and the authors admit that it is very hard even for experienced programmers to predict the space a lazy program uses ([History of Haskell](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf)). The space leaks this caused led the designers to add strict features such as `seq` and strict data types ([History of Haskell](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf)). Its main compiler, GHC, uses a stop-the-world copying garbage collector by default ([GHC guide](https://downloads.haskell.org/ghc/latest/docs/users_guide/runtime_control.html); [Wikipedia](https://en.wikipedia.org/wiki/Haskell)). ## Where it won Haskell's clearest production win is Facebook's Sigma, an anti-abuse rule engine. Facebook reported in 2015 that it had spent two years rewriting Sigma, replacing its in-house FXL language with Haskell, and that the Haskell version serves more than one million requests per second ([Facebook Engineering](https://engineering.fb.com/2015/06/26/security/fighting-spam-with-haskell/)). Pandoc is a Haskell library and a command-line tool for converting document formats ([Pandoc](https://github.com/jgm/pandoc)). xmonad, a tiling window manager, is written and configured in Haskell ([xmonad](https://xmonad.org/)), and the Cardano platform is written in Haskell too ([Cardano](https://docs.cardano.org/about-cardano/introduction)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/haskell.yaml # Java > Language for server and enterprise software, compiled to bytecode that runs on the Java virtual machine. - **Appeared:** 1995 - **Creators:** James Gosling - **Maintained by:** Oracle - **Type:** backend - **Status:** alive - **Born from:** James Gosling started Oak at Sun Microsystems in April 1991 for the Green Project, which was looking for a use for smart consumer electronics such as cable set-top boxes. The devices used different processors and had very little memory. The team began with C++ with some fixes, and Gosling later said the way they addressed programming was causing cost issues for many of the manufacturers. - **Reacts to:** cpp - **Trade-offs:** garbage collected; static types; runs on a virtual machine; concurrency: threads, green. Cost: The JVM adds startup time and memory overhead to every program, and the verbose syntax makes small scripts slow to write. - **Slots:** server ●●● strong (Netflix runs about 2,800 Java applications, mostly microservices.); data ●●○ ok (Apache Hadoop is implemented in Java, though jobs can be written in other languages.); mobile ●○○ weak (Android still supports Java, but Google calls Kotlin the first choice.); embedded ●○○ weak; browser ○○○ none (Applets ran as browser plugins, and no major browser runs them now.) - **Alternatives:** kotlin, csharp, go, python - **Won where:** Netflix, which runs about 2,800 Java applications, mostly microservices [source](https://www.infoq.com/presentations/netflix-java/); Apache Hadoop, whose framework is implemented in Java [source](https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html); Elasticsearch, which bundles its own OpenJDK in each distribution [source](https://www.elastic.co/docs/deploy-manage/deploy/self-managed/installing-elasticsearch); Android, whose platform SDK still supports Java next to Kotlin [source](https://developer.android.com/kotlin/first) - **Timeline:** 1991: Gosling starts Oak at Sun in April, first aimed at consumer electronics [source](https://ibiblio.org/java/slides/hope/02.html); 1995: Java is made public on May 23, 1995 [source](https://www.azul.com/?p=72322); 1996: JavaSoft ships Java 1.0 as a free programming environment for developers [source](https://diswww.mit.edu/charon.mit.edu/java-interest/5056); 2006: Sun releases Java under the GPL through the OpenJDK project [source](https://www.theregister.com/2006/11/13/sun_opensources_java/); 2010: Oracle closes its $7.4 billion purchase of Sun, which owned Java [source](https://www.eweek.com/news/oracle-completes-sun-acquisition/) - **Links:** [website](https://www.java.com), [repo](https://github.com/openjdk/jdk), [docs](https://docs.oracle.com/en/java/) - **PLDB:** https://pldb.io/concepts/java.html - **Sources:** https://ibiblio.org/java/slides/hope/02.html, https://sdtimes.com/twenty-years-of-java-through-its-creators-eyes/, https://www.azul.com/?p=72322, https://diswww.mit.edu/charon.mit.edu/java-interest/5056, https://www.theregister.com/2006/11/13/sun_opensources_java/, https://www.eweek.com/news/oracle-completes-sun-acquisition/, https://www.infoq.com/presentations/netflix-java/, https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html, https://www.elastic.co/docs/deploy-manage/deploy/self-managed/installing-elasticsearch, https://developer.android.com/kotlin/first - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/java/ ## Why it exists James Gosling started Oak at Sun Microsystems in 1991 for the Green Project, which was looking for a purpose for smart consumer electronics such as cable set-top boxes ([ibiblio timeline](https://ibiblio.org/java/slides/hope/02.html)). The devices used different processors and had very little memory, and the goal was code that did not depend on any single processor. Gosling later said the programming approach was causing cost issues for many of the manufacturers ([SD Times](https://sdtimes.com/twenty-years-of-java-through-its-creators-eyes/)). Sun made Java public on May 23, 1995 ([Azul](https://www.azul.com/?p=72322)). ## What it trades away Java trades startup speed and memory for portability. Each program runs on a virtual machine, so every program pays for that layer before it does any work. Gosling admitted the language "tried too hard to be compatible with C++", including operator overloading, which shows how much of the C++ inheritance came along for the ride ([SD Times](https://sdtimes.com/twenty-years-of-java-through-its-creators-eyes/)). Large deployments accept the cost. Netflix runs about 2,800 Java applications on a standard OpenJDK build from Azul ([InfoQ talk](https://www.infoq.com/presentations/netflix-java/)), but a team that needs a tiny binary or a fast start should look elsewhere. ## Where it won Java won on the server. Netflix runs about 2,800 Java applications, mostly microservices ([InfoQ talk](https://www.infoq.com/presentations/netflix-java/)). Apache Hadoop, the distributed data framework, is implemented in Java, although its jobs can be written in other languages ([Apache Hadoop docs](https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html)). Elasticsearch ships its own OpenJDK inside each distribution ([Elastic docs](https://www.elastic.co/docs/deploy-manage/deploy/self-managed/installing-elasticsearch)). On Android, Google's platform SDK still supports Java next to Kotlin, though Google now recommends Kotlin for new apps ([Android developers](https://developer.android.com/kotlin/first)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/java.yaml # JavaScript > The language that runs inside web browsers, and on servers through Node.js. - **Appeared:** 1995 - **Creators:** Brendan Eich - **Maintained by:** Ecma International (TC39) - **Type:** web - **Status:** alive - **Born from:** In May 1995 Brendan Eich was building a scripting language for Netscape Navigator, a prototype first called Mocha that was embedded in Navigator 2.0. Netscape decided it needed two languages for two mostly separate audiences, and management required the browser one to look like Java. Eich built its core from Scheme-style first-class functions and Self-style prototypes. - **Reacts to:** scheme, self, java - **Trade-offs:** garbage collected; dynamic types; runs on a virtual machine; concurrency: async. Cost: Variables can hold any type at any time, so large codebases rely on tests and tooling to catch mistakes that a compiler would catch in other languages. - **Slots:** browser ●●● strong (Used on the client side by 98.9 % of websites.); server ●●○ ok (Node.js runs it on servers; PayPal moved its consumer web apps to it in 2013.); mobile ●●○ ok (React Native builds native iOS and Android apps from JavaScript.); cli ●●○ ok (Node scripts run from the terminal.); systems ○○○ none (Engines like V8 are written in C++; JavaScript does not write kernels or drivers.) - **Alternatives:** typescript, dart, python - **Won where:** Browsers: JavaScript is the client-side language of 98.9 % of all websites [source](https://w3techs.com/technologies/details/cp-javascript/); Electron desktop apps, among them Visual Studio Code and Slack [source](https://www.electronjs.org/apps); PayPal moved its consumer web applications to Node.js, starting with the account overview page [source](https://www.infoq.com/news/2013/11/paypal-java-javascript); React Native, released by Meta in 2015, for native iOS and Android apps [source](https://reactnative.dev/) - **Timeline:** 1995: Brendan Eich designs JavaScript at Netscape in May [source](https://hopl4.sigplan.org/details/hopl-4-papers/10/JavaScript-The-First-20-Years); 1997: ECMA-262, the first ECMAScript standard, is published in June [source](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/); 2009: Ryan Dahl presents Node.js at JSConf EU [source](https://blogs.igalia.com/ltilve/tag/javascript); 2015: The sixth edition of ECMA-262 is published in June [source](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/) - **Links:** [website](https://tc39.es/), [docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript) - **PLDB:** https://pldb.io/concepts/javascript.html - **Sources:** https://brendaneich.com/2008/04/popularity/, https://hopl4.sigplan.org/details/hopl-4-papers/10/JavaScript-The-First-20-Years, https://www.ecma-international.org/publications-and-standards/standards/ecma-262/, https://blogs.igalia.com/ltilve/tag/javascript, https://w3techs.com/technologies/details/cp-javascript/, https://www.electronjs.org/apps, https://www.infoq.com/news/2013/11/paypal-java-javascript, https://reactnative.dev/ - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/javascript/ ## Why it exists In May 1995 Brendan Eich was building a scripting language for Netscape Navigator. Netscape decided it needed two languages for two mostly separate audiences, and management required the browser one to look like Java ([Eich, "Popularity", 2008](https://brendaneich.com/2008/04/popularity/)). Eich built the core from Scheme-style first-class functions and Self-style prototypes. His prototype, first called Mocha, was embedded in Netscape Navigator 2.0 ([Eich, 2008](https://brendaneich.com/2008/04/popularity/)). The design is dated to May 1995 at Netscape in the history Eich wrote with Allen Wirfs-Brock ([HOPL IV](https://hopl4.sigplan.org/details/hopl-4-papers/10/JavaScript-The-First-20-Years)). ## What it trades away JavaScript runs wherever a browser runs, and that reach comes with a loose type system. A variable can hold any type at any time, so a large codebase depends on tests and tooling to catch mistakes that a compiler would catch elsewhere. Compatibility was a problem from the start: within a year of release, Netscape's implementation and Microsoft's reverse-engineered one disagreed ([HOPL IV](https://hopl4.sigplan.org/details/hopl-4-papers/10/JavaScript-The-First-20-Years)). Standardization at Ecma began in 1996, and the first edition came out in June 1997 ([Ecma International](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/)). The standard is now revised every year, so an old engine and a new one can run the same page differently. ## Where it won JavaScript won the browser first. W3Techs puts its share of websites that use it as the client-side language at 98.9 % ([W3Techs](https://w3techs.com/technologies/details/cp-javascript/)). It moved to servers through Node.js, and in November 2013 PayPal said its consumer web applications would be built on Node.js, starting with the account overview page ([InfoQ](https://www.infoq.com/news/2013/11/paypal-java-javascript)). Electron apps use it for desktop software, and the Electron showcase lists Visual Studio Code and Slack ([Electron](https://www.electronjs.org/apps)). React Native, which Meta released in 2015, builds native iOS and Android apps from JavaScript ([React Native](https://reactnative.dev/)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/javascript.yaml # Kotlin > Statically typed language for JVM and Android apps that compiles alongside existing Java code. - **Appeared:** 2011 - **Creators:** Andrey Breslav - **Maintained by:** JetBrains - **Type:** mobile - **Status:** alive - **Born from:** In July 2011 JetBrains said that none of the existing JVM languages met its needs. Its development lead, Dmitry Jemerov, said that Scala has the right features but its most obvious deficiency is very slow compilation, so the new language had to be Java-compatible, more concise than Java and safer against null pointer errors. - **Reacts to:** java, scala - **Trade-offs:** garbage collected; static types; runs on a virtual machine; concurrency: threads, async. Cost: It runs on the JVM and inherits Java's startup time and memory footprint, which weighs most on short-lived scripts and small tools. - **Slots:** mobile ●●● strong (Google recommends starting new Android apps in Kotlin.); server ●●○ ok (Spring Boot supports Kotlin and requires Kotlin 2.2 or later.); systems ●○○ weak; embedded ○○○ none (Kotlin targets the JVM, Android and native platforms, not microcontrollers.) - **Alternatives:** java, swift, dart, scala - **Won where:** Android, where Google's developer guide recommends starting new apps in Kotlin [source](https://developer.android.com/kotlin/first); Android, where over half of professional developers used Kotlin by May 2019 [source](https://android-developers.googleblog.com/2019/05/google-io-2019-empowering-developers-to-build-experiences-on-Android-Play.html); Gradle, which made the Kotlin DSL the default for new builds in 2023 [source](https://blog.gradle.org/kotlin-dsl-is-now-the-default-for-new-gradle-builds); Spring Boot, which supports Kotlin on the same JVM stack as Java [source](https://docs.spring.io/spring-boot/reference/features/kotlin.html) - **Timeline:** 2011: JetBrains introduces Kotlin in July as a new language for the JVM [source](https://www.infoq.com/news/2011/07/kotlin/); 2016: Kotlin 1.0 ships as the first stable release, with backward compatibility promised [source](https://www.infoq.com/news/2016/02/jetbrains-kotlin-1/); 2017: Google adds Kotlin as an officially supported language for Android at I/O [source](https://www.infoq.com/news/2017/05/android-kotlin); 2019: Google makes Android development Kotlin-first in its May 2019 announcement [source](https://android-developers.googleblog.com/2019/05/google-io-2019-empowering-developers-to-build-experiences-on-Android-Play.html); 2023: Gradle makes the Kotlin DSL the default choice for new builds [source](https://blog.gradle.org/kotlin-dsl-is-now-the-default-for-new-gradle-builds) - **Links:** [website](https://kotlinlang.org), [repo](https://github.com/JetBrains/kotlin) - **PLDB:** https://pldb.io/concepts/kotlin.html - **Sources:** https://www.infoworld.com/article/2183154/jetbrains-readies-jvm-language-kotlin.html, https://www.infoq.com/news/2011/07/kotlin/, https://www.infoq.com/news/2016/02/jetbrains-kotlin-1/, https://www.infoq.com/news/2017/05/android-kotlin, https://developer.android.com/kotlin/first, https://android-developers.googleblog.com/2019/05/google-io-2019-empowering-developers-to-build-experiences-on-Android-Play.html, https://blog.gradle.org/kotlin-dsl-is-now-the-default-for-new-gradle-builds, https://docs.spring.io/spring-boot/reference/features/kotlin.html, https://pldb.io/concepts/kotlin.html - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/kotlin/ ## Why it exists In July 2011 JetBrains introduced Kotlin, a new language for the JVM, after concluding that "none of them meet our needs" among the existing JVM languages ([InfoWorld](https://www.infoworld.com/article/2183154/jetbrains-readies-jvm-language-kotlin.html)). Scala had the features JetBrains wanted, but its development lead, Dmitry Jemerov, said its most obvious deficiency was very slow compilation. The published goals put Java compatibility first, then safety against null pointer errors and more concise code than Java ([InfoQ](https://www.infoq.com/news/2011/07/kotlin/)). ## What it trades away Kotlin inherits the JVM. It compiles to the same bytecode as Java, so it starts on the same virtual machine and pays the same startup and memory costs, which matter most for short-lived scripts and small tools. The Java compatibility goal is the design choice behind this: Kotlin keeps working with Java libraries and Java conventions instead of starting from a clean slate ([InfoQ](https://www.infoq.com/news/2011/07/kotlin/)). A team gets that interoperability in exchange for the JVM's runtime model. ## Where it won Android is the big win. Google's developer guide recommends starting new Android apps with Kotlin ([Android developers](https://developer.android.com/kotlin/first)), and Google reported in May 2019 that over half of professional Android developers used it ([Android Developers Blog](https://android-developers.googleblog.com/2019/05/google-io-2019-empowering-developers-to-build-experiences-on-Android-Play.html)). Gradle made the Kotlin DSL the default for new builds in April 2023 ([Gradle blog](https://blog.gradle.org/kotlin-dsl-is-now-the-default-for-new-gradle-builds)). On the server, Spring Boot supports Kotlin on the same JVM stack as Java and requires Kotlin 2.2 or later ([Spring Boot docs](https://docs.spring.io/spring-boot/reference/features/kotlin.html)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/kotlin.yaml # Lua > Embeddable scripting language for adding logic and configuration to a host program. - **Appeared:** 1994 - **Creators:** Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes - **Maintained by:** PUC-Rio, Rio de Janeiro - **Type:** scripting - **Status:** alive - **Born from:** In 1992 Petrobras, the Brazilian oil company, asked Tecgraf, the graphics lab at PUC-Rio, for data-entry front-ends for its engineers, and by 1993 Tecgraf had two small languages, DEL and SOL, for the job. DEL grew heavier each time users asked for conditionals and loops, and Brazil's market reserve, in force from 1977 to 1992, made buying customized software from abroad hard, so Tecgraf built its own tools and merged the two into one embeddable language. - **Reacts to:** scheme, modula - **Trade-offs:** garbage collected; dynamic types; runs on a virtual machine; concurrency: green. Cost: Small by design: the official distribution ships few libraries, so the host program supplies most tools, and until Lua 5.0 the garbage collector could pause the program for long stretches. - **Slots:** embedded ●●● strong; games ●●● strong; config ●●● strong (Neovim reads its configuration from init.lua.); scripts ●○○ weak; browser ○○○ none - **Alternatives:** javascript, python, tcl, scheme - **Won where:** Adobe Lightroom, where over 40 percent of the code was Lua, about 100,000 lines in 2007 [source](https://www.lua.org/doc/hopl.pdf); LucasArts planned to replace the scripting language of Grim Fandango with Lua in 1997 [source](https://www.lua.org/doc/hopl.pdf); Roblox Luau, derived from Lua 5.1, is the scripting language creators use in Roblox Studio [source](https://create.roblox.com/docs/scripting/luau); Redis runs Lua 5.1 scripts inside the server with atomic execution [source](https://redis.io/docs/latest/develop/programmability/eval-intro/); Neovim accepts init.lua as its configuration file [source](https://neovim.io/doc/user/lua-guide/); Wireshark lets users write dissectors, post-dissectors and taps in Lua [source](https://wiki.wireshark.org/Lua) - **Timeline:** 1993: Lua is born inside Tecgraf at PUC-Rio in Brazil [source](https://www.lua.org/doc/hopl.pdf); 1994: Lua 1.1, the first public release [source](https://www.lua.org/history.html); 2003: Lua 5.0 is released [source](https://www.lua.org/versions.html); 2006: Lua 5.1 is released [source](https://www.lua.org/versions.html); 2020: Lua 5.4 is released [source](https://www.lua.org/versions.html); 2025: Lua 5.5 is released on 22 December 2025 [source](https://www.lua.org/versions.html) - **Links:** [website](https://www.lua.org), [repo](https://github.com/lua/lua), [wikipedia](https://en.wikipedia.org/wiki/Lua_(programming_language)), [docs](https://www.lua.org/manual/5.4/) - **PLDB:** https://pldb.io/concepts/lua.html - **Sources:** https://www.lua.org/doc/hopl.pdf, https://www.lua.org/history.html, https://www.lua.org/versions.html, https://create.roblox.com/docs/scripting/luau, https://redis.io/docs/latest/develop/programmability/eval-intro/, https://neovim.io/doc/user/lua-guide/, https://wiki.wireshark.org/Lua, https://en.wikipedia.org/wiki/Lua_(programming_language) - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/lua/ ## Why it exists In 1992 Petrobras, the Brazilian oil company, asked Tecgraf, the computer graphics group at PUC-Rio, for graphical data-entry front-ends for its engineers. Tecgraf answered with two small languages, DEL for data entry and SOL for configurable reports. DEL grew heavier each time users asked for conditionals and loops ([Lua HOPL paper](https://www.lua.org/doc/hopl.pdf)). Brazil's market reserve, in force from 1977 to 1992, made buying customized software from abroad slow, so Tecgraf built its own tools. Around mid-1993 Roberto Ierusalimschy, Luiz Henrique de Figueiredo and Waldemar Celes decided that a single, broader language could replace both, and Lua was born ([Lua HOPL paper](https://www.lua.org/doc/hopl.pdf)). Because other Tecgraf products would need to embed a scripting language too, the new one was to be a library with a C API ([Lua HOPL paper](https://www.lua.org/doc/hopl.pdf)). ## What it trades away Lua stays small on purpose. Its official distribution ships only a few libraries, because it is built to be embedded in a host application that supplies the rest of the tools ([Lua HOPL paper](https://www.lua.org/doc/hopl.pdf)). Values are dynamically typed, so type mistakes surface at run time. Until Lua 5.0 the garbage collector ran in one atomic step and could pause a program for a long time ([Lua HOPL paper](https://www.lua.org/doc/hopl.pdf)). Coroutines are cooperative: the authors chose non-preemptive, collaborative multithreading over shared-memory threads, so a coroutine that never yields holds up everything else in its thread ([Lua HOPL paper](https://www.lua.org/doc/hopl.pdf)). ## Where it won Lua's wins are mostly inside other products. The 2007 history paper reports that over 40 percent of Adobe Lightroom was written in Lua, about 100,000 lines ([Lua HOPL paper](https://www.lua.org/doc/hopl.pdf)). Roblox's Luau is derived from Lua 5.1 and is the scripting language creators use in Roblox Studio ([Roblox](https://create.roblox.com/docs/scripting/luau)). Redis runs Lua 5.1 scripts inside the server, atomically ([Redis](https://redis.io/docs/latest/develop/programmability/eval-intro/)). Neovim reads its configuration from `init.lua` ([Neovim](https://neovim.io/doc/user/lua-guide/)), and Wireshark lets users write dissectors in Lua ([Wireshark](https://wiki.wireshark.org/Lua)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/lua.yaml # PHP > Server-side scripting language for web pages and web applications. - **Appeared:** 1995 - **Creators:** Rasmus Lerdorf, Zeev Suraski, Andi Gutmans - **Type:** web - **Status:** alive - **Born from:** In 1994 Rasmus Lerdorf wrote a set of small CGI programs in C to track visits to his online résumé. He called the collection Personal Home Page Tools and released its source publicly in June 1995. In 1997 Zeev Suraski and Andi Gutmans began rewriting its parser for an e-commerce application they were building for a university project, and PHP 3.0 was announced in June 1998. - **Reacts to:** c - **Trade-offs:** reference counted; dynamic types; interpreted; concurrency: none. Cost: Each request starts a script from scratch, so state that must survive between pages has to live in a database or cache. - **Slots:** server ●●● strong (WordPress and MediaWiki run on it.); browser ○○○ none (Only the HTML that PHP produces reaches the browser, never the code.); scripts ●●○ ok (Runs from the command line with the php binary.); data ●○○ weak - **Alternatives:** python, ruby, javascript - **Won where:** WordPress runs on 39.5 % of all websites (W3Techs, 30 October 2026) [source](https://w3techs.com/technologies/details/cm-wordpress); PHP is used by 69.2 % of websites with a known server-side language [source](https://w3techs.com/technologies/details/pl-php); MediaWiki, the software Wikipedia runs on, requires PHP 8.3.0 for its latest stable release [source](https://www.mediawiki.org/wiki/Manual:Installation_requirements); Facebook's Hack, a gradually typed language for HHVM that works with PHP (2014) [source](https://engineering.fb.com/2014/04/10/developer-tools/hack-developer-day-recap) - **Timeline:** 1994: Rasmus Lerdorf writes CGI programs in C to track visits to his online résumé [source](https://www.php.net/manual/en/history.php.php); 1995: Personal Home Page Tools is released to the public in June [source](https://www.php.net/manual/en/history.php.php); 1998: PHP 3.0 is announced in June as the successor to PHP/FI 2.0 [source](https://www.php.net/manual/en/history.php.php); 2015: PHP 7.0 is released, up to twice as fast as PHP 5.6 [source](https://www.php.net/manual/en/history.php.php); 2020: PHP 8.0 is released with a JIT compiler and union types [source](https://www.php.net/manual/en/history.php.php) - **Links:** [website](https://www.php.net/), [repo](https://github.com/php/php-src), [docs](https://www.php.net/docs.php) - **PLDB:** https://pldb.io/concepts/php.html - **Sources:** https://www.php.net/manual/en/history.php.php, https://w3techs.com/technologies/details/cm-wordpress, https://w3techs.com/technologies/details/pl-php, https://www.mediawiki.org/wiki/Manual:Installation_requirements, https://www.mediawiki.org/wiki/MediaWiki, https://engineering.fb.com/2014/04/10/developer-tools/hack-developer-day-recap, https://wordpress.org/about/requirements/, https://survey.stackoverflow.co/2025/technology/ - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/php/ ## Why it exists In 1994 Rasmus Lerdorf wrote a set of small CGI programs in C to track visits to his online résumé. He called the collection Personal Home Page Tools and released its source publicly in June 1995 ([php.net history](https://www.php.net/manual/en/history.php.php)). The first version was a set of CGI binaries written in C, not a language that ran inside a page. In 1997 Zeev Suraski and Andi Gutmans began rewriting its parser for an e-commerce application they were building for a university project, and PHP 3.0 was announced in June 1998 as the successor to PHP/FI 2.0 ([php.net history](https://www.php.net/manual/en/history.php.php)). ## What it trades away PHP starts a script for each request and discards its state at the end. That keeps deployment simple and stops one failed request from leaking into the next, but anything that must survive between pages has to live in a database or a cache. Each major version also brings compatibility work. PHP 7.0 was up to twice as fast as PHP 5.6 after a new engine, Zend Engine 3.0, and PHP 8.0 added a JIT compiler and new type features ([php.net history](https://www.php.net/manual/en/history.php.php)). ## Where it won WordPress shows the reach. W3Techs puts it on 39.5 % of all websites as of its October 2026 figures ([W3Techs](https://w3techs.com/technologies/details/cm-wordpress)), and WordPress's own requirements page recommends PHP 8.3 or greater ([WordPress.org](https://wordpress.org/about/requirements/)). Among websites with a known server-side language, PHP is used by 69.2 % ([W3Techs](https://w3techs.com/technologies/details/pl-php)). MediaWiki, the software that Wikipedia runs on ([MediaWiki](https://www.mediawiki.org/wiki/MediaWiki)), requires PHP 8.3.0 or later for its latest stable release ([MediaWiki](https://www.mediawiki.org/wiki/Manual:Installation_requirements)). In 2014 Facebook announced Hack as "a gradually-typed programming language for HHVM that interoperates seamlessly with PHP" ([Facebook Engineering](https://engineering.fb.com/2014/04/10/developer-tools/hack-developer-day-recap)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/php.yaml # Python > General-purpose language for scripts, automation, web backends and data analysis. - **Appeared:** 1991 - **Creators:** Guido van Rossum - **Type:** scripting - **Status:** alive - **Born from:** In December 1989 Guido van Rossum, a programmer on the Amoeba distributed operating system at CWI, started a hobby project to fill the week around Christmas. Amoeba needed a scripting language, and he wanted an interpreted language for writing and testing its administration scripts. He drew on ABC, a language he had worked on that was intended for non-technical users. - **Reacts to:** abc, c, modula-3 - **Trade-offs:** reference counted; dynamic types; interpreted; concurrency: threads, async. Cost: The global interpreter lock stops threads from running Python code at the same time, so CPU-heavy work needs processes or C extensions. - **Slots:** scripts ●●● strong (The default language for system administration and automation scripts.); data ●●● strong (NumPy and the scientific stack built on it.); server ●●● strong (Django and Flask are the common web frameworks.); cli ●●○ ok; systems ●○○ weak (CPython itself is written in C.); mobile ●○○ weak; browser ○○○ none (Browsers run JavaScript, not Python.) - **Alternatives:** javascript, go, r - **Won where:** Dropbox published how it moved over one million lines of Python from Python 2 to Python 3 (2019) [source](https://dropbox.tech/application/incrementally-migrating-over-one-million-lines-of-code-from-python-2-to-python-3); NumPy, the fundamental package for scientific computing with Python [source](https://numpy.org/) - **Timeline:** 1989: Guido van Rossum starts Python as a hobby project in the week around Christmas [source](https://www.python.org/doc/essays/foreword/); 1991: Python 0.9.0 is released to the alt.sources newsgroup in February [source](https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html); 2000: Python 2.0 is released on October 16 [source](https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html); 2008: Python 3.0 is released on December 3 [source](https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html); 2020: Python 2 reaches end of life on January 1 [source](https://www.python.org/doc/sunset-python-2/); 2023: PEP 703, Making the Global Interpreter Lock Optional in CPython, is accepted [source](https://peps.python.org/pep-0703/) - **Links:** [website](https://www.python.org/), [repo](https://github.com/python/cpython), [docs](https://docs.python.org/3/) - **PLDB:** https://pldb.io/concepts/python.html - **Sources:** https://www.python.org/doc/essays/foreword/, https://www.artima.com/articles/the-making-of-python, https://www.linuxjournal.com/node/2959, https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html, https://www.python.org/doc/sunset-python-2/, https://peps.python.org/pep-0703/, https://dropbox.tech/application/incrementally-migrating-over-one-million-lines-of-code-from-python-2-to-python-3, https://numpy.org/, https://survey.stackoverflow.co/2025/technology/, https://w3techs.com/technologies/details/cp-javascript/ - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/python/ ## Why it exists In December 1989 Guido van Rossum, a programmer on the Amoeba distributed operating system at CWI, started a hobby project to fill the week around Christmas ([Guido's foreword to Programming Python](https://www.python.org/doc/essays/foreword/)). Amoeba needed a scripting language ([Artima, The Making of Python](https://www.artima.com/articles/the-making-of-python)), and he wanted an interpreted language for writing and testing its administration scripts ([Linux Journal interview](https://www.linuxjournal.com/node/2959)). He drew on ABC, a language he had worked on, which was intended for non-technical users. The first public release, version 0.9.0, went to the alt.sources newsgroup in February 1991 ([Guido's Python timeline](https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html)). ## What it trades away Python code is short and readable, and that comes at a cost in speed and parallelism. CPython, the reference implementation, has a global interpreter lock that stops threads from running Python code at the same time ([PEP 703](https://peps.python.org/pep-0703/)). CPU-heavy work therefore needs separate processes or C extensions. Dynamic typing has its own cost: type hints are optional and checked by external tools, so large codebases lean on those tools and on tests. The migration was slow too. Python 3.0 arrived in 2008, and Python 2 kept receiving support until January 1, 2020 ([python.org](https://www.python.org/doc/sunset-python-2/)). ## Where it won Python won in scripting and data work. Dropbox's client had more than one million lines of Python logic, and in 2019 the company published how it moved that code to Python 3 ([Dropbox Tech](https://dropbox.tech/application/incrementally-migrating-over-one-million-lines-of-code-from-python-2-to-python-3)). NumPy calls itself the fundamental package for scientific computing with Python ([NumPy](https://numpy.org/)). In the 2025 Stack Overflow survey, 57.9 % of respondents used Python ([Stack Overflow](https://survey.stackoverflow.co/2025/technology/)). It never won the browser. Browsers run JavaScript, which 98.9 % of websites use on the client side ([W3Techs](https://w3techs.com/technologies/details/cp-javascript/)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/python.yaml # Ruby > Object-oriented scripting language, best known for the Rails web framework. - **Appeared:** 1995 - **Creators:** Yukihiro Matsumoto - **Type:** web - **Status:** alive - **Born from:** Yukihiro Matsumoto, known as Matz, began Ruby in 1993 and released it publicly in 1995. He wanted a scripting language more capable than Perl and more object-oriented than Python, and he designed it so that programmers would be happy using it. - **Reacts to:** perl, python, smalltalk, lisp - **Trade-offs:** garbage collected; dynamic types; interpreted; concurrency: threads, green. Cost: Code can change at run time, which makes programs easy to bend and harder for tools to check, and the interpreter runs one thread of Ruby code at a time. - **Slots:** server ●●● strong (Rails is the main framework; GitHub and Shopify run on it.); scripts ●●○ ok; cli ●●○ ok (Homebrew package definitions are Ruby files.); data ●○○ weak (Python dominates data work.); browser ○○○ none (The browser never runs Ruby; Rails sends HTML and JavaScript to it.) - **Alternatives:** python, php, javascript - **Won where:** GitHub's main application moved to Rails 5.2.1 on August 15, 2018 [source](https://github.blog/engineering/upgrading-github-from-rails-3-2-to-5-2/); Shopify, which calls itself one of the largest Ruby on Rails codebases in existence [source](https://shopify.engineering/deconstructing-monolith-designing-software-maximizes-developer-productivity); Homebrew, whose package definitions (formulae) are Ruby files [source](https://docs.brew.sh/Formula-Cookbook) - **Timeline:** 1993: Matsumoto begins work on Ruby [source](https://www.artima.com/intv/ruby.html); 1995: Ruby is released publicly [source](https://www.ruby-lang.org/en/about/); 2004: David Heinemeier Hansson releases Rails as open source in July [source](https://en.wikipedia.org/wiki/Ruby_on_Rails); 2018: GitHub's main application runs on Rails 5.2.1 from August 15 [source](https://github.blog/engineering/upgrading-github-from-rails-3-2-to-5-2/); 2020: Ruby 3.0.0 is released on December 25 [source](https://www.ruby-lang.org/en/news/2020/12/); 2025: Ruby 4.0.0 is released on December 25 [source](https://www.ruby-lang.org/en/news/2025/12) - **Links:** [website](https://www.ruby-lang.org/en/about/), [repo](https://github.com/ruby/ruby), [docs](https://docs.ruby-lang.org/en/) - **PLDB:** https://pldb.io/concepts/ruby.html - **Sources:** https://www.artima.com/intv/ruby.html, https://www.ruby-lang.org/en/about/, https://en.wikipedia.org/wiki/Ruby_on_Rails, https://github.blog/engineering/upgrading-github-from-rails-3-2-to-5-2/, https://shopify.engineering/deconstructing-monolith-designing-software-maximizes-developer-productivity, https://docs.brew.sh/Formula-Cookbook, https://www.infoworld.com/article/3687219/whatever-happened-to-ruby.html, https://www.ruby-lang.org/en/news/2020/12/, https://www.ruby-lang.org/en/news/2025/12, https://survey.stackoverflow.co/2025/technology/ - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/ruby/ ## Why it exists Yukihiro Matsumoto, known as Matz, began Ruby in 1993 and released it publicly in 1995 ([Artima interview, 2003](https://www.artima.com/intv/ruby.html); [ruby-lang.org](https://www.ruby-lang.org/en/about/)). He wanted a scripting language that was more capable than Perl and more object-oriented than Python. Along the way he borrowed from Smalltalk, Eiffel, Ada and Lisp ([ruby-lang.org](https://www.ruby-lang.org/en/about/)). His goal was programmer happiness: "So Ruby is designed to make programmers happy" ([Artima interview](https://www.artima.com/intv/ruby.html)). The web framework that made the language famous, Rails, came later, released as open source in July 2004 ([Wikipedia](https://en.wikipedia.org/wiki/Ruby_on_Rails)). ## What it trades away Ruby favors the programmer over the machine. Classes can be reopened and methods changed while the program runs, which makes code pleasant to bend and harder for tools to check. Matz describes the aim as "natural, not simple" ([ruby-lang.org](https://www.ruby-lang.org/en/about/)). The interpreter runs one thread of Ruby code at a time, so CPU-heavy work scales by adding processes rather than threads. Type mistakes also surface only when the code runs, because nothing checks them before that. ## Where it won Rails is the win that made Ruby famous. Hansson extracted it from his work on Basecamp ([Wikipedia](https://en.wikipedia.org/wiki/Ruby_on_Rails)). GitHub's main application moved to Rails 5.2.1 on August 15, 2018, after an upgrade that used dual booting, which let changes for the next version ship without disrupting production ([GitHub Engineering](https://github.blog/engineering/upgrading-github-from-rails-3-2-to-5-2/)). Shopify calls itself one of the largest Ruby on Rails codebases in existence ([Shopify Engineering](https://shopify.engineering/deconstructing-monolith-designing-software-maximizes-developer-productivity)). Homebrew package definitions, called formulae, are Ruby files ([Homebrew docs](https://docs.brew.sh/Formula-Cookbook)). Ruby has also declined: a 2023 InfoWorld column said JavaScript now dominates the spaces where Ruby used to rule ([InfoWorld](https://www.infoworld.com/article/3687219/whatever-happened-to-ruby.html)). In the 2025 Stack Overflow survey, 6.4 % of respondents used Ruby ([Stack Overflow](https://survey.stackoverflow.co/2025/technology/)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/ruby.yaml # Rust > Memory-safe systems programming without a garbage collector. - **Appeared:** 2010 - **Creators:** Graydon Hoare - **Maintained by:** Rust Foundation - **Type:** systems - **Status:** alive - **Born from:** Graydon Hoare started Rust as a personal project in 2006 after yet another memory-safety crash, this time in the elevator software of his apartment building. Mozilla picked it up in 2009 because Firefox was written in C++ and memory bugs in C++ were the main source of its security holes, while garbage-collected languages were too slow for a browser engine. - **Reacts to:** cpp, cyclone, ocaml, haskell, erlang - **Trade-offs:** ownership, checked at compile time; static types; compiles to native code; concurrency: threads, async. Cost: Slow compiles and a learning curve measured in weeks, because the borrow checker refuses programs that other languages accept. - **Slots:** systems ●●● strong; server ●●● strong; cli ●●● strong; wasm ●●● strong (The most used language for WebAssembly outside the browser.); embedded ●●● strong; games ●●○ ok (Engines exist (Bevy), studios still ship C++.); data ●●○ ok (Mostly as the fast core under Python tools (Polars, Ruff).); mobile ●○○ weak; browser ○○○ none (Only through WebAssembly, not as a browser language.) - **Alternatives:** zig, cpp, go, c - **Won where:** Linux kernel accepted Rust as a second language in 6.1 [source](https://lwn.net/Articles/910762/); Android, where new native code in Rust cut memory-safety bugs [source](https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html); Firefox Quantum shipped the Stylo CSS engine written in Rust [source](https://hacks.mozilla.org/2017/11/entering-the-quantum-era-how-firefox-got-fast-again-and-where-its-going-to-get-faster/); AWS Firecracker, the microVM behind Lambda and Fargate [source](https://aws.amazon.com/blogs/aws/firecracker-lightweight-virtualization-for-serverless-computing/); Cloudflare replaced NGINX with Pingora, serving over a trillion requests a day [source](https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet/) - **Timeline:** 2006: Graydon Hoare begins Rust as a side project [source](https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/); 2009: Mozilla starts sponsoring the project [source](https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/); 2010: Rust announced publicly at the Mozilla Annual Summit [source](https://venge.net/graydon/talks/intro-talk-2.pdf); 2015: Rust 1.0 with the stability promise [source](https://blog.rust-lang.org/2015/05/15/Rust-1.0.html); 2017: Firefox 57 ships Stylo, the first large Rust component in a mass-market product [source](https://hacks.mozilla.org/2017/11/entering-the-quantum-era-how-firefox-got-fast-again-and-where-its-going-to-get-faster/); 2021: Rust Foundation founded by AWS, Google, Huawei, Microsoft and Mozilla [source](https://foundation.rust-lang.org/news/2021-02-08-hello-world/); 2022: Linux 6.1 merges initial Rust support [source](https://lwn.net/Articles/910762/); 2024: The White House ONCD report urges moving to memory-safe languages and names Rust [source](https://bidenwhitehouse.archives.gov/oncd/briefing-room/2024/02/26/press-release-technical-report/) - **Hardware:** gpu=via-libraries, twelve_dollar_users=264000, multicore_users=130000, source=https://github.com/arjaythedev/twelve-dollar-server-challenge/blob/main/LEADERBOARD.md, measured=2026-10-29 - **Links:** [website](https://www.rust-lang.org), [repo](https://github.com/rust-lang/rust), [wikipedia](https://en.wikipedia.org/wiki/Rust_(programming_language)), [docs](https://doc.rust-lang.org/book/) - **PLDB:** https://pldb.io/concepts/rust.html - **Sources:** https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/, https://blog.rust-lang.org/2015/05/15/Rust-1.0.html, https://lwn.net/Articles/910762/, https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html, https://venge.net/graydon/talks/intro-talk-2.pdf, https://en.wikipedia.org/wiki/Rust_(programming_language) - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/rust/ ## Why it exists In 2006 Graydon Hoare, then a Mozilla engineer, came home to a broken elevator. The cause was a memory bug in its control software, the kind of crash he had spent years chasing in C and C++. He started a language in which that class of bug would not compile ([MIT Technology Review](https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/)). Mozilla had the same problem at a larger scale: Firefox was millions of lines of C++, and memory-safety bugs were the main source of its security holes. Garbage-collected languages fixed that but were too slow and too unpredictable for a browser engine. Mozilla began sponsoring Rust in 2009 and announced it in 2010 ([Hoare's intro talk](https://venge.net/graydon/talks/intro-talk-2.pdf)). ## What it trades away Rust gets memory safety without a garbage collector by making the compiler track who owns every value and for how long. That is the ownership and borrowing system, and it is the cost: the borrow checker rejects many programs that would be fine in C++, and learning to write code it accepts takes weeks, not days. Compile times are long because the compiler does so much checking. In return you get no null-pointer crashes, no data races and C-level speed, all guaranteed at compile time rather than tested for at run time ([Rust 1.0 announcement](https://blog.rust-lang.org/2015/05/15/Rust-1.0.html)). ## Where it won Rust won exactly where C and C++ were causing pain. Firefox shipped its CSS engine in Rust in 2017 ([Mozilla Hacks](https://hacks.mozilla.org/2017/11/entering-the-quantum-era-how-firefox-got-fast-again-and-where-its-going-to-get-faster/)). Google reported that as new Android native code moved to Rust, memory-safety vulnerabilities fell from 76 % to 35 % of the total ([Google Security Blog](https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html)). The Linux kernel accepted it as its second language in version 6.1 ([LWN](https://lwn.net/Articles/910762/)). AWS built Firecracker, the microVM under Lambda, in Rust, and Cloudflare replaced NGINX with its own Rust proxy. In 2024 a White House report told the industry to move to memory-safe languages and named Rust ([ONCD](https://bidenwhitehouse.archives.gov/oncd/briefing-room/2024/02/26/press-release-technical-report/)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/rust.yaml # SQL > Declarative language for defining, changing and querying data in relational databases. - **Appeared:** 1974 - **Creators:** Donald D. Chamberlin, Raymond F. Boyce - **Maintained by:** ISO/IEC JTC 1/SC 32 (WG3) - **Type:** query - **Status:** alive - **Born from:** In 1970 Edgar Codd of the IBM Research Laboratory in San Jose argued that users of large data banks should not have to know how the data is organized, and he faulted the tree and network systems that made programs follow fixed access paths. In 1974 Donald Chamberlin and Raymond Boyce, also at IBM, published SEQUEL, a structured English query language aimed at occasional users as well as programmers. - **Reacts to:** – - **Trade-offs:** no memory model; no type system; not a runtime; concurrency: n/a. Cost: Each database speaks its own dialect, and no relational database fully conforms to the SQL standard yet. - **Slots:** database ●●● strong; data ●●● strong (DuckDB embeds SQL in a host process and integrates with Python and R.); server ○○○ none (SQL runs inside the database server; it is not a language for writing the server.) - **Alternatives:** python, r, julia - **Won where:** SQLite, on every Android device, iPhone, Mac, Windows 10/11 PC, and in Firefox, Chrome and Safari [source](https://sqlite.org/mostdeployed.html); Oracle Database, introduced in 1979 as the first commercially available SQL-based RDBMS [source](https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/database-concepts.pdf); Google Spanner, which moved to the SQL dialect shared by other Google systems [source](https://research.google/pubs/spanner-becoming-a-sql-system/); DuckDB, an embedded analytics database that works inside Python and R sessions [source](https://duckdb.org/why_duckdb) - **Timeline:** 1970: Edgar Codd publishes the relational model and argues users should not need to know the data layout [source](https://www.engineering.upenn.edu/~zives/03f/cis550/codd.pdf); 1974: Chamberlin and Boyce publish SEQUEL, the query language that became SQL [source](https://research.ibm.com/publications/sequel-a-struciured-english-query-language); 1979: Oracle Version 2 is introduced as the first commercially available SQL-based RDBMS [source](https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/database-concepts.pdf); 1986: ANSI accepts SQL as a standard, ANSI X3.135-1986 [source](https://www.dbvis.com/thetable/standard-ansi-sql-what-it-is-and-why-it-matters/); 2017: Google publishes Spanner: Becoming a SQL System, moving Spanner to the SQL dialect shared across Google [source](https://research.google/pubs/spanner-becoming-a-sql-system/); 2023: ISO/IEC 9075:2023 is published, the SQL:2023 edition of the standard [source](https://www.dbvis.com/thetable/standard-ansi-sql-what-it-is-and-why-it-matters/) - **Links:** [website](https://jtc1info.org/technology/subcommittees/data-mgmt-and-interchange/database-languages/), [wikipedia](https://en.wikipedia.org/wiki/SQL), [docs](https://www.sqlite.org/lang.html) - **PLDB:** https://pldb.io/concepts/sql.html - **Sources:** https://www.engineering.upenn.edu/~zives/03f/cis550/codd.pdf, https://research.ibm.com/publications/sequel-a-struciured-english-query-language, https://www.mappingthejourney.com/single-post/2017/10/12/episode-11-interview-with-don-chamberlin-designer-of-sql-database-language/, https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/database-concepts.pdf, https://www.dbvis.com/thetable/standard-ansi-sql-what-it-is-and-why-it-matters/, https://research.google/pubs/spanner-becoming-a-sql-system/, https://sqlite.org/mostdeployed.html, https://duckdb.org/why_duckdb, https://www.postgresql.org/about/, https://en.wikipedia.org/wiki/SQL - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/sql/ ## Why it exists In 1970 Edgar Codd, a researcher at IBM's laboratory in San Jose, published a relational model for large shared data banks. His central demand was that users should not have to know how the data is organized in the machine. He criticised the tree and network systems of the day, where programs had to follow fixed access paths through the data ([Codd, 1970](https://www.engineering.upenn.edu/~zives/03f/cis550/codd.pdf)). Donald Chamberlin and Raymond Boyce, also at IBM, set out to give that model a query language. Their 1974 paper called it SEQUEL and aimed it at occasional database users as well as programmers ([IBM Research](https://research.ibm.com/publications/sequel-a-struciured-english-query-language)). Chamberlin later said they wanted to put Codd's ideas into plain English that anyone could follow ([interview](https://www.mappingthejourney.com/single-post/2017/10/12/episode-11-interview-with-don-chamberlin-designer-of-sql-database-language/)). ## What it trades away SQL is mostly declarative. A query says which rows it wants, and the database decides how to fetch them, so tuning means learning the optimizer rather than writing loops ([Wikipedia](https://en.wikipedia.org/wiki/SQL)). The standard is also too large for any product to implement completely. PostgreSQL states that as of version 18 it conforms to at least 170 of the 177 mandatory SQL:2023 Core features, and that no relational database fully meets the standard yet. Products differ in syntax and function, so a query written for one database often needs edits before it runs on another ([PostgreSQL](https://www.postgresql.org/about/)). ## Where it won SQLite is on every Android device and iPhone, every Mac and Windows 10/11 PC, and in Firefox, Chrome and Safari ([SQLite](https://sqlite.org/mostdeployed.html)). Oracle introduced the first commercially available SQL-based relational database in 1979 ([Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/database-concepts.pdf)). Google's Spanner, a globally distributed system, moved to the SQL dialect shared across Google's other systems ([Google Research](https://research.google/pubs/spanner-becoming-a-sql-system/)). DuckDB brings SQL to analytics inside Python and R sessions ([DuckDB](https://duckdb.org/why_duckdb)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/sql.yaml # Swift > Programming language for building apps on Apple platforms such as iOS and macOS. - **Appeared:** 2014 - **Creators:** Chris Lattner - **Maintained by:** Apple - **Type:** mobile - **Status:** alive - **Born from:** Chris Lattner started Swift at Apple in July 2010. Objective-C sat on top of C, with C's pointers and unchecked memory, and Lattner later said that memory safety could not be added to Objective-C without removing the C underneath, which would no longer be Objective-C. - **Reacts to:** objective-c, rust, haskell, ruby, python, csharp - **Trade-offs:** reference counted; static types; compiles to native code; concurrency: async, actors. Cost: Tooling and libraries are strongest on Apple platforms, reference counting needs weak references to break cycles by hand, and the binary interface was only declared stable in 2019. - **Slots:** mobile ●●● strong; server ●○○ weak (Server frameworks such as Vapor exist, but server use is small.); browser ○○○ none (Not a web page language.) - **Alternatives:** objective-c, kotlin, dart, typescript - **Won where:** Apple's platforms, for which Apple describes Swift as its language [source](https://developer.apple.com/swift/); SwiftUI, Apple's framework for app interfaces on its platforms, available from iOS 13 and macOS 10.15 [source](https://developer.apple.com/documentation/swiftui.md) - **Timeline:** 2010: Chris Lattner starts Swift at Apple in July 2010 [source](https://nondot.org/sabre/); 2014: Apple announces Swift at WWDC 2014 as a beta for iOS 8 and OS X Yosemite [source](https://www.infoq.com/news/2014/06/apple-swift); 2015: Apple releases Swift as open source under Apache 2.0, with Linux support [source](https://www.apple.com/nz/newsroom/2015/12/03Apple-Releases-Swift-as-Open-Source/); 2019: Swift 5 is declared ABI stable on Apple platforms [source](https://swift.org/blog/abi-stability-and-more/) - **Links:** [website](https://www.swift.org/) - **PLDB:** https://pldb.io/concepts/swift.html - **Sources:** https://nondot.org/sabre/, https://www.infoq.com/news/2014/06/apple-swift, https://www.apple.com/nz/newsroom/2015/12/03Apple-Releases-Swift-as-Open-Source/, https://swift.org/blog/abi-stability-and-more/, https://developer.apple.com/swift/, https://developer.apple.com/documentation/swiftui.md, https://oleb.net/2019/chris-lattner-swift-origins/, https://pldb.io/concepts/swift.html - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/swift/ ## Why it exists Chris Lattner started Swift at Apple in July 2010 ([Lattner, history of Swift](https://nondot.org/sabre/)). Objective-C was C with Smalltalk-style messaging on top, so it inherited C's pointers and unchecked memory. In a 2019 podcast Lattner explained why the team did not simply fix Objective-C: "you can't retrofit memory safety into Objective-C without removing the C", and removing the C would leave something that was "not Objective-C anymore" ([Ole Begemann, Chris Lattner on the origins of Swift](https://oleb.net/2019/chris-lattner-swift-origins/)). Apple announced Swift at WWDC 2014 as a beta for iOS 8 and OS X Yosemite ([InfoQ](https://www.infoq.com/news/2014/06/apple-swift)). ## What it trades away Swift is strongest on Apple platforms, and outside them the tooling and libraries are thinner. Its binary interface was only declared stable with Swift 5 in 2019, which means that compiled code from one compiler version could not be relied on to work with another before then ([Swift.org](https://swift.org/blog/abi-stability-and-more/)). Reference counting also means that cycles of objects have to be broken by hand with weak references. ## Where it won Apple describes Swift as its language for all Apple platforms ([Apple](https://developer.apple.com/swift/)), and its SwiftUI framework for app interfaces has been available since iOS 13 and macOS 10.15 ([Apple SwiftUI](https://developer.apple.com/documentation/swiftui.md)). Apple released Swift as open source under the Apache 2.0 licence on 4 December 2015, with support for Linux as well as Apple platforms ([Apple press release](https://www.apple.com/nz/newsroom/2015/12/03Apple-Releases-Swift-as-Open-Source/)). Server use, with frameworks such as Vapor, is much smaller than app development. --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/swift.yaml # TypeScript > Static types for JavaScript code, removed at compile time so the output is plain JavaScript. - **Appeared:** 2012 - **Creators:** Anders Hejlsberg - **Maintained by:** Microsoft - **Type:** web - **Status:** alive - **Born from:** In October 2012 Microsoft previewed TypeScript, a JavaScript-like language that compiles to plain JavaScript. Anders Hejlsberg argued that building large JavaScript applications successfully was simply too difficult, and that JavaScript's dynamic type system made it impossible to build an IDE like Visual Studio that worked with it. The language was built to add types on top of JavaScript, so any valid JavaScript is also valid TypeScript. - **Reacts to:** javascript - **Trade-offs:** garbage collected; static types; compiles to JavaScript; concurrency: async. Cost: Types exist only at compile time, so a value from a server or a user can break a type at run time, and every project keeps a compile step to maintain. - **Slots:** browser ●●● strong (Compiles to JavaScript, so it runs wherever JavaScript does.); server ●●○ ok (Runs on Node.js after compilation.); cli ●●○ ok; embedded ○○○ none (It compiles to JavaScript, so it needs a JavaScript runtime that microcontrollers do not have.) - **Alternatives:** javascript, dart, go - **Won where:** Angular 2 announced as built with TypeScript in March 2015 [source](https://devblogs.microsoft.com/typescript/angular-2-built-on-typescript/); Slack's desktop app ported to TypeScript, which Slack called a boon to stability [source](https://slack.engineering/typescript-at-slack/); Airbnb's frontend, 86 % converted to TypeScript (about 6 million lines) by August 2020 [source](https://www.infoq.com/news/2020/08/airbnb-typescript-migration); 67 % of State of JS 2024 respondents wrote more TypeScript than JavaScript [source](https://2024.stateofjs.com/en-US/usage/) - **Timeline:** 2012: Microsoft previews TypeScript, a JavaScript-like language that compiles to JavaScript [source](https://techcrunch.com/2012/10/01/microsoft-previews-new-javascript-like-programming-language-typescript/); 2014: TypeScript 1.0 is announced on April 2 [source](https://devblogs.microsoft.com/typescript/announcing-typescript-1-0/); 2015: Angular 2 is announced as built with TypeScript on March 5 [source](https://devblogs.microsoft.com/typescript/angular-2-built-on-typescript/); 2017: Slack publishes how it moved its desktop app to TypeScript [source](https://slack.engineering/typescript-at-slack/); 2023: TypeScript 5.0 is released, aiming to make TypeScript smaller, simpler and faster [source](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/) - **Links:** [website](https://www.typescriptlang.org/), [repo](https://github.com/microsoft/TypeScript), [docs](https://www.typescriptlang.org/docs/) - **PLDB:** https://pldb.io/concepts/typescript.html - **Sources:** https://techcrunch.com/2012/10/01/microsoft-previews-new-javascript-like-programming-language-typescript/, https://www.theregister.com/software/2012/11/03/microsoft-typescript-isnt-a-javascript-killer/717785, https://devblogs.microsoft.com/typescript/announcing-typescript-1-0/, https://devblogs.microsoft.com/typescript/angular-2-built-on-typescript/, https://slack.engineering/typescript-at-slack/, https://www.infoq.com/news/2020/08/airbnb-typescript-migration, https://2024.stateofjs.com/en-US/usage/, https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/, https://survey.stackoverflow.co/2025/technology/, https://www.typescriptlang.org/ - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/typescript/ ## Why it exists In October 2012 Microsoft previewed TypeScript, a JavaScript-like language that compiles to plain JavaScript ([TechCrunch](https://techcrunch.com/2012/10/01/microsoft-previews-new-javascript-like-programming-language-typescript/)). Anders Hejlsberg argued that building large JavaScript applications successfully was simply too difficult. He also said JavaScript's dynamic type system made it impossible to build an IDE like Visual Studio that worked with it ([The Register](https://www.theregister.com/software/2012/11/03/microsoft-typescript-isnt-a-javascript-killer/717785)). The answer was to build on JavaScript rather than replace it: any valid JavaScript is also valid TypeScript, so existing code kept working. ## What it trades away TypeScript adds a compile step and a second layer that has to stay in step with the code. Its types exist only at compile time, so data that arrives from a server or a user is untyped until a check runs, and the checks cover only the code the compiler sees. Projects must keep the compiler, the configuration and the type declarations for their libraries up to date. The project describes itself as a language that "builds on JavaScript, giving you better tooling at any scale" ([TypeScript](https://www.typescriptlang.org/)), and the price of that tooling is the extra layer. ## Where it won Angular 2 was announced as built with TypeScript in March 2015 ([Microsoft TypeScript blog](https://devblogs.microsoft.com/typescript/angular-2-built-on-typescript/)). Slack moved its desktop app to TypeScript and wrote that TypeScript "was such a boon to our stability and sanity" ([Slack Engineering](https://slack.engineering/typescript-at-slack/)). Airbnb's migration had converted 86 % of its frontend, about 6 million lines, by August 2020 ([InfoQ](https://www.infoq.com/news/2020/08/airbnb-typescript-migration)). In the 2024 State of JavaScript survey, 67 % of respondents said they wrote more TypeScript than JavaScript ([State of JS](https://2024.stateofjs.com/en-US/usage/)). In the 2025 Stack Overflow survey, 43.6 % of respondents used it ([Stack Overflow](https://survey.stackoverflow.co/2025/technology/)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/typescript.yaml # Zig > Systems language meant to replace C, with no hidden control flow or hidden allocations. - **Appeared:** 2016 - **Creators:** Andrew Kelley - **Maintained by:** Zig Software Foundation - **Type:** systems - **Status:** alive - **Born from:** Andrew Kelley designed Zig to replace C while keeping C's binary interface, so existing C libraries still link. The Zig project argues that C++, Rust and D have so many features that programmers end up debugging their knowledge of the language instead of the application. - **Reacts to:** c, cpp, rust, d - **Trade-offs:** manual memory; static types; compiles to native code; concurrency: threads. Cost: Still before 1.0, so the language changes between releases (0.16 in April 2026, 0.17 in October 2026), and every allocation and control path is written out by hand. - **Slots:** systems ●●● strong; embedded ●●○ ok; cli ●●○ ok; wasm ●●○ ok; browser ○○○ none (Compiles to WebAssembly, but is not a browser language.) - **Alternatives:** c, rust, cpp, go - **Won where:** Ghostty, a terminal emulator whose shared core and Linux app are written in Zig [source](https://ghostty.org/docs/about); Uber, which has compiled all C and C++ in its Go monorepo with the Zig toolchain since January 2023 [source](https://www.uber.com/en-KR/blog/bootstrapping-ubers-infrastructure-on-arm64-with-zig/) - **Timeline:** 2016: Zig is first released on 8 February 2016 [source](https://github.com/topics/zig-lang); 2020: The Zig Software Foundation is announced to promote and advance the language [source](https://ziglang.org/news/announcing-zig-software-foundation/); 2022: The compiler moves from about 80,000 lines of C++ to a 250,000-line version written in Zig [source](https://ziglang.org/news/goodbye-cpp/); 2026: Zig 0.17.0 is released, after 0.16.0 in April 2026 [source](https://ziglang.org/news/) - **Links:** [website](https://ziglang.org), [wikipedia](https://en.wikipedia.org/wiki/Zig_(programming_language)) - **PLDB:** https://pldb.io/concepts/zig.html - **Sources:** https://ziglang.org/learn/overview/, https://ziglang.org/learn/why_zig_rust_d_cpp/, https://en.wikipedia.org/wiki/Zig_(programming_language), https://github.com/topics/zig-lang, https://ziglang.org/news/announcing-zig-software-foundation/, https://ziglang.org/news/goodbye-cpp/, https://ziglang.org/news/, https://ghostty.org/docs/about, https://www.uber.com/en-KR/blog/bootstrapping-ubers-infrastructure-on-arm64-with-zig/, https://pldb.io/concepts/zig.html - **Verified:** no, draft of 2026-10-30 - **Canonical:** https://langwhy.dev/lang/zig/ ## Why it exists Zig is meant to replace C. Its overview says that "Zig competes with C instead of depending on it" and that "there is no hidden control flow, no hidden memory allocations, no preprocessor, and no macros" ([Zig overview](https://ziglang.org/learn/overview/)). The project's argument against C++, Rust and D is that "C++, Rust, and D have such a large number of features that they can be distracting" ([Why Zig](https://ziglang.org/learn/why_zig_rust_d_cpp/)). Wikipedia names Andrew Kelley as the designer and says Zig was designed to replace C "while maintaining C ABI compatibility" ([Wikipedia](https://en.wikipedia.org/wiki/Zig_(programming_language))). The first release is dated 8 February 2016 ([GitHub](https://github.com/topics/zig-lang)). ## What it trades away Zig trades convenience for visible control. It avoids implicit calls such as operator overloading and exceptions, and it leaves heap management to the library and the application, so the programmer writes more of the code by hand ([Why Zig](https://ziglang.org/learn/why_zig_rust_d_cpp/)). The language is also still before 1.0. Its news page lists 0.16.0 on 14 April 2026 and 0.17.0 on 2 October 2026, so code that works on one release can need edits for the next ([Zig news](https://ziglang.org/news/)). ## Where it won Ghostty, a terminal emulator, has a shared core written in Zig, and its Linux app is written in Zig as well ([Ghostty](https://ghostty.org/docs/about)). Uber uses the Zig toolchain as its C and C++ compiler. Its engineering blog says that since January 2023 the Zig toolchain compiles all of the C and C++ code in the Go monorepo for Linux targets ([Uber Engineering](https://www.uber.com/en-KR/blog/bootstrapping-ubers-infrastructure-on-arm64-with-zig/)). The project itself emphasises "out of the box cross-compilation to most major platforms" ([Why Zig](https://ziglang.org/learn/why_zig_rust_d_cpp/)). --- Data: CC0, https://github.com/langwhy/langwhy/blob/main/data/languages/zig.yaml