{
  "version": 1,
  "license": "CC0-1.0",
  "generated": "2026-10-30",
  "schema": "https://github.com/langwhy/langwhy/blob/main/data/schema/language.schema.json",
  "languages": [
    {
      "id": "bash",
      "name": "Bash",
      "appeared": 1989,
      "creators": [
        "Brian Fox"
      ],
      "org": "GNU Project, maintained by Chet Ramey",
      "type": "shell",
      "status": "stable",
      "tagline": "Command language and shell of the GNU Project, for running programs and writing scripts.",
      "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"
      ],
      "tradeoffs": {
        "memory": "n/a",
        "types": "n/a",
        "run": "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": [
        {
          "slot": "scripts",
          "fit": "strong"
        },
        {
          "slot": "cli",
          "fit": "strong",
          "note": "Built for interactive use: job control, command-line editing and history."
        },
        {
          "slot": "server",
          "fit": "ok"
        },
        {
          "slot": "systems",
          "fit": "none"
        }
      ],
      "won_where": [
        {
          "what": "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"
        },
        {
          "what": "GitLab Runner uses Sh/Bash as the default shell on Unix, with sh as the fallback",
          "source": "https://docs.gitlab.com/runner/shells/"
        }
      ],
      "alternatives": [
        "python",
        "perl",
        "ruby",
        "awk"
      ],
      "timeline": [
        {
          "year": 1989,
          "what": "Brian Fox begins Bash for the GNU Project as a free alternative to the Bourne shell",
          "source": "https://pldb.io/concepts/bash.html"
        },
        {
          "year": 1996,
          "what": "Bash 2.0 tarball is published on the GNU FTP server",
          "source": "https://ftp.gnu.org/gnu/bash/"
        },
        {
          "year": 2009,
          "what": "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"
        },
        {
          "year": 2014,
          "what": "Shellshock, CVE-2014-6271, lets crafted environment variables run commands in Bash through 4.3",
          "source": "https://ubuntu.com/security/CVE-2014-6271"
        },
        {
          "year": 2019,
          "what": "Bash 5.0 tarball is published on the GNU FTP server",
          "source": "https://ftp.gnu.org/gnu/bash/"
        },
        {
          "year": 2019,
          "what": "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": "bash",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/bash/",
      "json": "https://langwhy.dev/lang/bash.json",
      "markdown": "https://langwhy.dev/lang/bash.md"
    },
    {
      "id": "c",
      "name": "C",
      "appeared": 1972,
      "creators": [
        "Dennis Ritchie"
      ],
      "type": "systems",
      "status": "stable",
      "tagline": "Programming language for operating systems and other code that has to work close to the hardware.",
      "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"
      ],
      "tradeoffs": {
        "memory": "manual",
        "types": "static",
        "run": "native",
        "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": [
        {
          "slot": "systems",
          "fit": "strong"
        },
        {
          "slot": "embedded",
          "fit": "strong"
        },
        {
          "slot": "server",
          "fit": "ok"
        },
        {
          "slot": "cli",
          "fit": "ok"
        },
        {
          "slot": "wasm",
          "fit": "ok"
        },
        {
          "slot": "browser",
          "fit": "none",
          "note": "Only through WebAssembly, not as a browser language."
        }
      ],
      "won_where": [
        {
          "what": "Linux kernel, which its own documentation says is written in the C programming language",
          "source": "https://docs.kernel.org/process/programming-language.html"
        },
        {
          "what": "Unix, whose kernel was rewritten in C in 1973",
          "source": "https://csapp.cs.cmu.edu/2e/docs/chistory.html"
        }
      ],
      "alternatives": [
        "cpp",
        "rust",
        "zig"
      ],
      "timeline": [
        {
          "year": 1969,
          "what": "Ken Thompson creates the B language at Bell Labs",
          "source": "https://csapp.cs.cmu.edu/2e/docs/chistory.html"
        },
        {
          "year": 1972,
          "what": "Ritchie calls 1972 the most creative period of C's development",
          "source": "https://csapp.cs.cmu.edu/2e/docs/chistory.html"
        },
        {
          "year": 1973,
          "what": "The Unix kernel is rewritten in C for the PDP-11",
          "source": "https://csapp.cs.cmu.edu/2e/docs/chistory.html"
        },
        {
          "year": 1978,
          "what": "Kernighan and Ritchie publish The C Programming Language",
          "source": "https://csapp.cs.cmu.edu/2e/docs/chistory.html"
        },
        {
          "year": 1989,
          "what": "The X3J11 committee finishes its ANSI C standard report",
          "source": "https://csapp.cs.cmu.edu/2e/docs/chistory.html"
        },
        {
          "year": 2024,
          "what": "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": "c",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/c/",
      "json": "https://langwhy.dev/lang/c.json",
      "markdown": "https://langwhy.dev/lang/c.md"
    },
    {
      "id": "csharp",
      "name": "C#",
      "appeared": 2000,
      "creators": [
        "Anders Hejlsberg"
      ],
      "org": "Microsoft",
      "type": "backend",
      "status": "alive",
      "tagline": "Language for building .NET applications, from web services and desktop apps to Unity game scripts.",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "static",
        "run": "vm",
        "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": [
        {
          "slot": "games",
          "fit": "strong",
          "note": "Unity uses C# for gameplay scripts."
        },
        {
          "slot": "server",
          "fit": "strong",
          "note": "Stack Overflow's 2016 web tier ran on ASP.NET MVC."
        },
        {
          "slot": "cli",
          "fit": "ok"
        },
        {
          "slot": "mobile",
          "fit": "weak"
        },
        {
          "slot": "browser",
          "fit": "weak",
          "note": "Blazor runs C# in the browser through WebAssembly, but JavaScript is the default."
        },
        {
          "slot": "systems",
          "fit": "none",
          "note": "Kernels and drivers are written in C or C++, not in C#."
        }
      ],
      "won_where": [
        {
          "what": "Unity, where gameplay scripts are written in C#",
          "source": "https://docs.unity.com/en-us/engine/6000.3/manual/scripting/get-started/intro-to"
        },
        {
          "what": "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/"
        }
      ],
      "alternatives": [
        "java",
        "kotlin",
        "go",
        "dart"
      ],
      "timeline": [
        {
          "year": 1999,
          "what": "Hejlsberg forms a team in January to build the language, then called COOL",
          "source": "https://en.wikipedia.org/wiki/C_Sharp_(programming_language)"
        },
        {
          "year": 2000,
          "what": "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"
        },
        {
          "year": 2001,
          "what": "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"
        },
        {
          "year": 2002,
          "what": "C# is standardized as ECMA-334, 2nd edition, in December 2002",
          "source": "https://ecma-international.org/publications-and-standards/standards/ecma-334/"
        },
        {
          "year": 2014,
          "what": "Microsoft announces that .NET Core will be open source, including the runtime",
          "source": "https://devblogs.microsoft.com/dotnet/net-core-is-open-source"
        },
        {
          "year": 2023,
          "what": "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": "csharp",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/csharp/",
      "json": "https://langwhy.dev/lang/csharp.json",
      "markdown": "https://langwhy.dev/lang/csharp.md"
    },
    {
      "id": "cpp",
      "name": "C++",
      "appeared": 1985,
      "creators": [
        "Bjarne Stroustrup"
      ],
      "type": "systems",
      "status": "alive",
      "tagline": "Compiled language that adds classes, templates and manual memory control to C.",
      "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"
      ],
      "tradeoffs": {
        "memory": "manual",
        "types": "static",
        "run": "native",
        "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": [
        {
          "slot": "systems",
          "fit": "strong"
        },
        {
          "slot": "games",
          "fit": "strong"
        },
        {
          "slot": "embedded",
          "fit": "ok"
        },
        {
          "slot": "server",
          "fit": "ok"
        },
        {
          "slot": "wasm",
          "fit": "ok"
        },
        {
          "slot": "browser",
          "fit": "none",
          "note": "Chrome's JavaScript engine is C++, but pages reach C++ only through WebAssembly."
        }
      ],
      "won_where": [
        {
          "what": "V8, the JavaScript engine used in Chrome and Node.js, is written in C++",
          "source": "https://v8.dev/docs"
        },
        {
          "what": "LLVM, the compiler framework, is written in the subset of C++ its coding standards define",
          "source": "https://llvm.org/docs/GettingStarted.html"
        }
      ],
      "alternatives": [
        "rust",
        "c",
        "zig"
      ],
      "timeline": [
        {
          "year": 1979,
          "what": "Work on C with Classes begins, the first version of C++",
          "source": "https://softwarepreservation.computerhistory.org/c_plus_plus/"
        },
        {
          "year": 1984,
          "what": "The name C++ is adopted",
          "source": "https://softwarepreservation.computerhistory.org/c_plus_plus/"
        },
        {
          "year": 1985,
          "what": "Cfront 1.0, the first commercial release of C++",
          "source": "https://softwarepreservation.computerhistory.org/c_plus_plus/"
        },
        {
          "year": 1998,
          "what": "ISO/IEC 14882:1998, the first ISO C++ standard, is published on 1 September 1998",
          "source": "https://www.stroustrup.com/iso_pressrelease2.html"
        },
        {
          "year": 2023,
          "what": "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": "cpp",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/cpp/",
      "json": "https://langwhy.dev/lang/cpp.json",
      "markdown": "https://langwhy.dev/lang/cpp.md"
    },
    {
      "id": "dart",
      "name": "Dart",
      "appeared": 2011,
      "creators": [
        "Lars Bak"
      ],
      "org": "Google",
      "type": "mobile",
      "status": "alive",
      "tagline": "Language for building Flutter apps, compiled ahead of time to native code or to JavaScript.",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "static",
        "run": "native",
        "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": [
        {
          "slot": "mobile",
          "fit": "strong",
          "note": "Flutter apps are written in Dart."
        },
        {
          "slot": "browser",
          "fit": "weak",
          "note": "Compiles to JavaScript; Chrome never shipped the Dart VM."
        },
        {
          "slot": "server",
          "fit": "weak"
        },
        {
          "slot": "embedded",
          "fit": "none",
          "note": "Dart has no standard runtime for microcontrollers."
        }
      ],
      "won_where": [
        {
          "what": "Google Pay, a Flutter case study on the official showcase",
          "source": "https://flutter.dev/showcase"
        },
        {
          "what": "BMW Group, a Flutter case study on scaling customer-facing product development",
          "source": "https://flutter.dev/showcase"
        },
        {
          "what": "Alibaba, which scaled China's largest second-hand marketplace with Flutter",
          "source": "https://flutter.dev/showcase"
        }
      ],
      "alternatives": [
        "kotlin",
        "swift",
        "typescript",
        "javascript"
      ],
      "timeline": [
        {
          "year": 2011,
          "what": "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"
        },
        {
          "year": 2015,
          "what": "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"
        },
        {
          "year": 2018,
          "what": "Flutter 1.0 ships in December, alongside Dart 2.1",
          "source": "https://www.infoq.com/news/2018/12/flutter-1.0-released"
        },
        {
          "year": 2023,
          "what": "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": "dart",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/dart/",
      "json": "https://langwhy.dev/lang/dart.json",
      "markdown": "https://langwhy.dev/lang/dart.md"
    },
    {
      "id": "elixir",
      "name": "Elixir",
      "appeared": 2012,
      "creators": [
        "José Valim"
      ],
      "type": "backend",
      "status": "alive",
      "tagline": "Functional language for concurrent server applications that runs on the Erlang virtual machine (BEAM).",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "dynamic",
        "run": "vm",
        "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": [
        {
          "slot": "server",
          "fit": "strong",
          "note": "Discord's core services are written in Elixir."
        },
        {
          "slot": "embedded",
          "fit": "ok",
          "note": "Nerves builds production embedded systems on the BEAM and Elixir."
        },
        {
          "slot": "browser",
          "fit": "weak",
          "note": "Browsers still run JavaScript; Elixir sends updates to the page from the server."
        },
        {
          "slot": "mobile",
          "fit": "none",
          "note": "Elixir has no mobile runtime; mobile apps use Swift, Kotlin or Dart."
        }
      ],
      "won_where": [
        {
          "what": "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"
        },
        {
          "what": "Nerves, the open-source platform for production embedded systems on Elixir",
          "source": "https://nerves-project.org/"
        },
        {
          "what": "Bleacher Report, which moved its Team Stream app from Ruby to Elixir",
          "source": "https://www.erlang-solutions.com/case-studies/bleacher-report-case-study/"
        }
      ],
      "alternatives": [
        "erlang",
        "go",
        "ruby",
        "python"
      ],
      "timeline": [
        {
          "year": 2010,
          "what": "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/"
        },
        {
          "year": 2011,
          "what": "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/"
        },
        {
          "year": 2012,
          "what": "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"
        },
        {
          "year": 2014,
          "what": "Elixir 1.0 is released, built on the Erlang VM",
          "source": "https://elixir-lang.org/blog/2014/09/18/elixir-v1-0-0-released/"
        },
        {
          "year": 2019,
          "what": "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"
        },
        {
          "year": 2022,
          "what": "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": "elixir",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/elixir/",
      "json": "https://langwhy.dev/lang/elixir.json",
      "markdown": "https://langwhy.dev/lang/elixir.md"
    },
    {
      "id": "go",
      "name": "Go",
      "appeared": 2009,
      "creators": [
        "Robert Griesemer",
        "Rob Pike",
        "Ken Thompson"
      ],
      "org": "Google",
      "type": "backend",
      "status": "alive",
      "tagline": "Compiled language with garbage collection and goroutines, made for networked servers and cloud tools.",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "static",
        "run": "native",
        "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": [
        {
          "slot": "server",
          "fit": "strong"
        },
        {
          "slot": "cli",
          "fit": "strong"
        },
        {
          "slot": "data",
          "fit": "ok"
        },
        {
          "slot": "systems",
          "fit": "ok"
        },
        {
          "slot": "mobile",
          "fit": "weak"
        },
        {
          "slot": "embedded",
          "fit": "weak"
        },
        {
          "slot": "browser",
          "fit": "none",
          "note": "Compiles to WebAssembly, but is not a browser language."
        }
      ],
      "won_where": [
        {
          "what": "Google's web indexing services and Chrome optimization guide service, which are written in Go",
          "source": "https://go.dev/solutions/google/"
        },
        {
          "what": "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/"
        }
      ],
      "alternatives": [
        "rust",
        "java",
        "csharp"
      ],
      "timeline": [
        {
          "year": 2007,
          "what": "A large Google program takes 45 minutes to build, in the account of Rob Pike",
          "source": "https://go.dev/talks/2012/splash.article"
        },
        {
          "year": 2009,
          "what": "The Go project is launched publicly on 10 November 2009",
          "source": "https://go.dev/blog/1year"
        },
        {
          "year": 2012,
          "what": "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": "go",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/go/",
      "json": "https://langwhy.dev/lang/go.json",
      "markdown": "https://langwhy.dev/lang/go.md"
    },
    {
      "id": "haskell",
      "name": "Haskell",
      "appeared": 1990,
      "creators": [
        "Haskell Committee",
        "Paul Hudak",
        "Philip Wadler"
      ],
      "org": "haskell.org community",
      "type": "functional",
      "status": "alive",
      "tagline": "Purely functional, lazily evaluated language for writing programs as typed functions.",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "static",
        "run": "native",
        "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": [
        {
          "slot": "server",
          "fit": "strong",
          "note": "Facebook's Sigma rule engine runs in Haskell at more than one million requests per second."
        },
        {
          "slot": "cli",
          "fit": "strong",
          "note": "Pandoc is a Haskell library and a command-line tool for converting document formats."
        },
        {
          "slot": "config",
          "fit": "ok",
          "note": "xmonad, a tiling window manager, is written and configured in Haskell."
        },
        {
          "slot": "embedded",
          "fit": "none"
        }
      ],
      "won_where": [
        {
          "what": "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/"
        },
        {
          "what": "xmonad, a dynamically tiling X11 window manager written and configured in Haskell",
          "source": "https://xmonad.org/"
        },
        {
          "what": "Cardano, whose platform is written in Haskell",
          "source": "https://docs.cardano.org/about-cardano/introduction"
        },
        {
          "what": "Pandoc, a document converter that is a Haskell library and a command-line tool",
          "source": "https://github.com/jgm/pandoc"
        }
      ],
      "alternatives": [
        "ocaml",
        "scala",
        "fsharp",
        "rust"
      ],
      "timeline": [
        {
          "year": 1987,
          "what": "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"
        },
        {
          "year": 1990,
          "what": "Haskell 1.0 report, dated 1 April 1990",
          "source": "https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf"
        },
        {
          "year": 1999,
          "what": "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"
        },
        {
          "year": 2007,
          "what": "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"
        },
        {
          "year": 2010,
          "what": "Haskell 2010 Language Report is published",
          "source": "https://www.haskell.org/onlinereport/haskell2010/"
        },
        {
          "year": 2015,
          "what": "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": "haskell",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/haskell/",
      "json": "https://langwhy.dev/lang/haskell.json",
      "markdown": "https://langwhy.dev/lang/haskell.md"
    },
    {
      "id": "java",
      "name": "Java",
      "appeared": 1995,
      "creators": [
        "James Gosling"
      ],
      "org": "Oracle",
      "type": "backend",
      "status": "alive",
      "tagline": "Language for server and enterprise software, compiled to bytecode that runs on the Java virtual machine.",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "static",
        "run": "vm",
        "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": [
        {
          "slot": "server",
          "fit": "strong",
          "note": "Netflix runs about 2,800 Java applications, mostly microservices."
        },
        {
          "slot": "data",
          "fit": "ok",
          "note": "Apache Hadoop is implemented in Java, though jobs can be written in other languages."
        },
        {
          "slot": "mobile",
          "fit": "weak",
          "note": "Android still supports Java, but Google calls Kotlin the first choice."
        },
        {
          "slot": "embedded",
          "fit": "weak"
        },
        {
          "slot": "browser",
          "fit": "none",
          "note": "Applets ran as browser plugins, and no major browser runs them now."
        }
      ],
      "won_where": [
        {
          "what": "Netflix, which runs about 2,800 Java applications, mostly microservices",
          "source": "https://www.infoq.com/presentations/netflix-java/"
        },
        {
          "what": "Apache Hadoop, whose framework is implemented in Java",
          "source": "https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html"
        },
        {
          "what": "Elasticsearch, which bundles its own OpenJDK in each distribution",
          "source": "https://www.elastic.co/docs/deploy-manage/deploy/self-managed/installing-elasticsearch"
        },
        {
          "what": "Android, whose platform SDK still supports Java next to Kotlin",
          "source": "https://developer.android.com/kotlin/first"
        }
      ],
      "alternatives": [
        "kotlin",
        "csharp",
        "go",
        "python"
      ],
      "timeline": [
        {
          "year": 1991,
          "what": "Gosling starts Oak at Sun in April, first aimed at consumer electronics",
          "source": "https://ibiblio.org/java/slides/hope/02.html"
        },
        {
          "year": 1995,
          "what": "Java is made public on May 23, 1995",
          "source": "https://www.azul.com/?p=72322"
        },
        {
          "year": 1996,
          "what": "JavaSoft ships Java 1.0 as a free programming environment for developers",
          "source": "https://diswww.mit.edu/charon.mit.edu/java-interest/5056"
        },
        {
          "year": 2006,
          "what": "Sun releases Java under the GPL through the OpenJDK project",
          "source": "https://www.theregister.com/2006/11/13/sun_opensources_java/"
        },
        {
          "year": 2010,
          "what": "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": "java",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/java/",
      "json": "https://langwhy.dev/lang/java.json",
      "markdown": "https://langwhy.dev/lang/java.md"
    },
    {
      "id": "javascript",
      "name": "JavaScript",
      "appeared": 1995,
      "creators": [
        "Brendan Eich"
      ],
      "org": "Ecma International (TC39)",
      "type": "web",
      "status": "alive",
      "tagline": "The language that runs inside web browsers, and on servers through Node.js.",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "dynamic",
        "run": "vm",
        "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": [
        {
          "slot": "browser",
          "fit": "strong",
          "note": "Used on the client side by 98.9 % of websites."
        },
        {
          "slot": "server",
          "fit": "ok",
          "note": "Node.js runs it on servers; PayPal moved its consumer web apps to it in 2013."
        },
        {
          "slot": "mobile",
          "fit": "ok",
          "note": "React Native builds native iOS and Android apps from JavaScript."
        },
        {
          "slot": "cli",
          "fit": "ok",
          "note": "Node scripts run from the terminal."
        },
        {
          "slot": "systems",
          "fit": "none",
          "note": "Engines like V8 are written in C++; JavaScript does not write kernels or drivers."
        }
      ],
      "won_where": [
        {
          "what": "Browsers: JavaScript is the client-side language of 98.9 % of all websites",
          "source": "https://w3techs.com/technologies/details/cp-javascript/"
        },
        {
          "what": "Electron desktop apps, among them Visual Studio Code and Slack",
          "source": "https://www.electronjs.org/apps"
        },
        {
          "what": "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"
        },
        {
          "what": "React Native, released by Meta in 2015, for native iOS and Android apps",
          "source": "https://reactnative.dev/"
        }
      ],
      "alternatives": [
        "typescript",
        "dart",
        "python"
      ],
      "timeline": [
        {
          "year": 1995,
          "what": "Brendan Eich designs JavaScript at Netscape in May",
          "source": "https://hopl4.sigplan.org/details/hopl-4-papers/10/JavaScript-The-First-20-Years"
        },
        {
          "year": 1997,
          "what": "ECMA-262, the first ECMAScript standard, is published in June",
          "source": "https://www.ecma-international.org/publications-and-standards/standards/ecma-262/"
        },
        {
          "year": 2009,
          "what": "Ryan Dahl presents Node.js at JSConf EU",
          "source": "https://blogs.igalia.com/ltilve/tag/javascript"
        },
        {
          "year": 2015,
          "what": "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": "javascript",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/javascript/",
      "json": "https://langwhy.dev/lang/javascript.json",
      "markdown": "https://langwhy.dev/lang/javascript.md"
    },
    {
      "id": "kotlin",
      "name": "Kotlin",
      "appeared": 2011,
      "creators": [
        "Andrey Breslav"
      ],
      "org": "JetBrains",
      "type": "mobile",
      "status": "alive",
      "tagline": "Statically typed language for JVM and Android apps that compiles alongside existing Java code.",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "static",
        "run": "vm",
        "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": [
        {
          "slot": "mobile",
          "fit": "strong",
          "note": "Google recommends starting new Android apps in Kotlin."
        },
        {
          "slot": "server",
          "fit": "ok",
          "note": "Spring Boot supports Kotlin and requires Kotlin 2.2 or later."
        },
        {
          "slot": "systems",
          "fit": "weak"
        },
        {
          "slot": "embedded",
          "fit": "none",
          "note": "Kotlin targets the JVM, Android and native platforms, not microcontrollers."
        }
      ],
      "won_where": [
        {
          "what": "Android, where Google's developer guide recommends starting new apps in Kotlin",
          "source": "https://developer.android.com/kotlin/first"
        },
        {
          "what": "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"
        },
        {
          "what": "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"
        },
        {
          "what": "Spring Boot, which supports Kotlin on the same JVM stack as Java",
          "source": "https://docs.spring.io/spring-boot/reference/features/kotlin.html"
        }
      ],
      "alternatives": [
        "java",
        "swift",
        "dart",
        "scala"
      ],
      "timeline": [
        {
          "year": 2011,
          "what": "JetBrains introduces Kotlin in July as a new language for the JVM",
          "source": "https://www.infoq.com/news/2011/07/kotlin/"
        },
        {
          "year": 2016,
          "what": "Kotlin 1.0 ships as the first stable release, with backward compatibility promised",
          "source": "https://www.infoq.com/news/2016/02/jetbrains-kotlin-1/"
        },
        {
          "year": 2017,
          "what": "Google adds Kotlin as an officially supported language for Android at I/O",
          "source": "https://www.infoq.com/news/2017/05/android-kotlin"
        },
        {
          "year": 2019,
          "what": "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"
        },
        {
          "year": 2023,
          "what": "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": "kotlin",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/kotlin/",
      "json": "https://langwhy.dev/lang/kotlin.json",
      "markdown": "https://langwhy.dev/lang/kotlin.md"
    },
    {
      "id": "lua",
      "name": "Lua",
      "appeared": 1994,
      "creators": [
        "Roberto Ierusalimschy",
        "Luiz Henrique de Figueiredo",
        "Waldemar Celes"
      ],
      "org": "PUC-Rio, Rio de Janeiro",
      "type": "scripting",
      "status": "alive",
      "tagline": "Embeddable scripting language for adding logic and configuration to a host program.",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "dynamic",
        "run": "vm",
        "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": [
        {
          "slot": "embedded",
          "fit": "strong"
        },
        {
          "slot": "games",
          "fit": "strong"
        },
        {
          "slot": "config",
          "fit": "strong",
          "note": "Neovim reads its configuration from init.lua."
        },
        {
          "slot": "scripts",
          "fit": "weak"
        },
        {
          "slot": "browser",
          "fit": "none"
        }
      ],
      "won_where": [
        {
          "what": "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"
        },
        {
          "what": "LucasArts planned to replace the scripting language of Grim Fandango with Lua in 1997",
          "source": "https://www.lua.org/doc/hopl.pdf"
        },
        {
          "what": "Roblox Luau, derived from Lua 5.1, is the scripting language creators use in Roblox Studio",
          "source": "https://create.roblox.com/docs/scripting/luau"
        },
        {
          "what": "Redis runs Lua 5.1 scripts inside the server with atomic execution",
          "source": "https://redis.io/docs/latest/develop/programmability/eval-intro/"
        },
        {
          "what": "Neovim accepts init.lua as its configuration file",
          "source": "https://neovim.io/doc/user/lua-guide/"
        },
        {
          "what": "Wireshark lets users write dissectors, post-dissectors and taps in Lua",
          "source": "https://wiki.wireshark.org/Lua"
        }
      ],
      "alternatives": [
        "javascript",
        "python",
        "tcl",
        "scheme"
      ],
      "timeline": [
        {
          "year": 1993,
          "what": "Lua is born inside Tecgraf at PUC-Rio in Brazil",
          "source": "https://www.lua.org/doc/hopl.pdf"
        },
        {
          "year": 1994,
          "what": "Lua 1.1, the first public release",
          "source": "https://www.lua.org/history.html"
        },
        {
          "year": 2003,
          "what": "Lua 5.0 is released",
          "source": "https://www.lua.org/versions.html"
        },
        {
          "year": 2006,
          "what": "Lua 5.1 is released",
          "source": "https://www.lua.org/versions.html"
        },
        {
          "year": 2020,
          "what": "Lua 5.4 is released",
          "source": "https://www.lua.org/versions.html"
        },
        {
          "year": 2025,
          "what": "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": "lua",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/lua/",
      "json": "https://langwhy.dev/lang/lua.json",
      "markdown": "https://langwhy.dev/lang/lua.md"
    },
    {
      "id": "php",
      "name": "PHP",
      "appeared": 1995,
      "creators": [
        "Rasmus Lerdorf",
        "Zeev Suraski",
        "Andi Gutmans"
      ],
      "type": "web",
      "status": "alive",
      "tagline": "Server-side scripting language for web pages and web applications.",
      "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"
      ],
      "tradeoffs": {
        "memory": "refcount",
        "types": "dynamic",
        "run": "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": [
        {
          "slot": "server",
          "fit": "strong",
          "note": "WordPress and MediaWiki run on it."
        },
        {
          "slot": "browser",
          "fit": "none",
          "note": "Only the HTML that PHP produces reaches the browser, never the code."
        },
        {
          "slot": "scripts",
          "fit": "ok",
          "note": "Runs from the command line with the php binary."
        },
        {
          "slot": "data",
          "fit": "weak"
        }
      ],
      "won_where": [
        {
          "what": "WordPress runs on 39.5 % of all websites (W3Techs, 30 October 2026)",
          "source": "https://w3techs.com/technologies/details/cm-wordpress"
        },
        {
          "what": "PHP is used by 69.2 % of websites with a known server-side language",
          "source": "https://w3techs.com/technologies/details/pl-php"
        },
        {
          "what": "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"
        },
        {
          "what": "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"
        }
      ],
      "alternatives": [
        "python",
        "ruby",
        "javascript"
      ],
      "timeline": [
        {
          "year": 1994,
          "what": "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"
        },
        {
          "year": 1995,
          "what": "Personal Home Page Tools is released to the public in June",
          "source": "https://www.php.net/manual/en/history.php.php"
        },
        {
          "year": 1998,
          "what": "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"
        },
        {
          "year": 2015,
          "what": "PHP 7.0 is released, up to twice as fast as PHP 5.6",
          "source": "https://www.php.net/manual/en/history.php.php"
        },
        {
          "year": 2020,
          "what": "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": "php",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/php/",
      "json": "https://langwhy.dev/lang/php.json",
      "markdown": "https://langwhy.dev/lang/php.md"
    },
    {
      "id": "python",
      "name": "Python",
      "appeared": 1991,
      "creators": [
        "Guido van Rossum"
      ],
      "type": "scripting",
      "status": "alive",
      "tagline": "General-purpose language for scripts, automation, web backends and data analysis.",
      "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"
      ],
      "tradeoffs": {
        "memory": "refcount",
        "types": "dynamic",
        "run": "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": [
        {
          "slot": "scripts",
          "fit": "strong",
          "note": "The default language for system administration and automation scripts."
        },
        {
          "slot": "data",
          "fit": "strong",
          "note": "NumPy and the scientific stack built on it."
        },
        {
          "slot": "server",
          "fit": "strong",
          "note": "Django and Flask are the common web frameworks."
        },
        {
          "slot": "cli",
          "fit": "ok"
        },
        {
          "slot": "systems",
          "fit": "weak",
          "note": "CPython itself is written in C."
        },
        {
          "slot": "mobile",
          "fit": "weak"
        },
        {
          "slot": "browser",
          "fit": "none",
          "note": "Browsers run JavaScript, not Python."
        }
      ],
      "won_where": [
        {
          "what": "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"
        },
        {
          "what": "NumPy, the fundamental package for scientific computing with Python",
          "source": "https://numpy.org/"
        }
      ],
      "alternatives": [
        "javascript",
        "go",
        "r"
      ],
      "timeline": [
        {
          "year": 1989,
          "what": "Guido van Rossum starts Python as a hobby project in the week around Christmas",
          "source": "https://www.python.org/doc/essays/foreword/"
        },
        {
          "year": 1991,
          "what": "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"
        },
        {
          "year": 2000,
          "what": "Python 2.0 is released on October 16",
          "source": "https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html"
        },
        {
          "year": 2008,
          "what": "Python 3.0 is released on December 3",
          "source": "https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html"
        },
        {
          "year": 2020,
          "what": "Python 2 reaches end of life on January 1",
          "source": "https://www.python.org/doc/sunset-python-2/"
        },
        {
          "year": 2023,
          "what": "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": "python",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/python/",
      "json": "https://langwhy.dev/lang/python.json",
      "markdown": "https://langwhy.dev/lang/python.md"
    },
    {
      "id": "ruby",
      "name": "Ruby",
      "appeared": 1995,
      "creators": [
        "Yukihiro Matsumoto"
      ],
      "type": "web",
      "status": "alive",
      "tagline": "Object-oriented scripting language, best known for the Rails web framework.",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "dynamic",
        "run": "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": [
        {
          "slot": "server",
          "fit": "strong",
          "note": "Rails is the main framework; GitHub and Shopify run on it."
        },
        {
          "slot": "scripts",
          "fit": "ok"
        },
        {
          "slot": "cli",
          "fit": "ok",
          "note": "Homebrew package definitions are Ruby files."
        },
        {
          "slot": "data",
          "fit": "weak",
          "note": "Python dominates data work."
        },
        {
          "slot": "browser",
          "fit": "none",
          "note": "The browser never runs Ruby; Rails sends HTML and JavaScript to it."
        }
      ],
      "won_where": [
        {
          "what": "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/"
        },
        {
          "what": "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"
        },
        {
          "what": "Homebrew, whose package definitions (formulae) are Ruby files",
          "source": "https://docs.brew.sh/Formula-Cookbook"
        }
      ],
      "alternatives": [
        "python",
        "php",
        "javascript"
      ],
      "timeline": [
        {
          "year": 1993,
          "what": "Matsumoto begins work on Ruby",
          "source": "https://www.artima.com/intv/ruby.html"
        },
        {
          "year": 1995,
          "what": "Ruby is released publicly",
          "source": "https://www.ruby-lang.org/en/about/"
        },
        {
          "year": 2004,
          "what": "David Heinemeier Hansson releases Rails as open source in July",
          "source": "https://en.wikipedia.org/wiki/Ruby_on_Rails"
        },
        {
          "year": 2018,
          "what": "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/"
        },
        {
          "year": 2020,
          "what": "Ruby 3.0.0 is released on December 25",
          "source": "https://www.ruby-lang.org/en/news/2020/12/"
        },
        {
          "year": 2025,
          "what": "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": "ruby",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/ruby/",
      "json": "https://langwhy.dev/lang/ruby.json",
      "markdown": "https://langwhy.dev/lang/ruby.md"
    },
    {
      "id": "rust",
      "name": "Rust",
      "appeared": 2010,
      "creators": [
        "Graydon Hoare"
      ],
      "org": "Rust Foundation",
      "type": "systems",
      "status": "alive",
      "tagline": "Memory-safe systems programming without a garbage collector.",
      "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"
      ],
      "tradeoffs": {
        "memory": "ownership",
        "types": "static",
        "run": "native",
        "concurrency": [
          "threads",
          "async"
        ],
        "cost": "Slow compiles and a learning curve measured in weeks, because the borrow checker refuses programs that other languages accept."
      },
      "slots": [
        {
          "slot": "systems",
          "fit": "strong"
        },
        {
          "slot": "server",
          "fit": "strong"
        },
        {
          "slot": "cli",
          "fit": "strong"
        },
        {
          "slot": "wasm",
          "fit": "strong",
          "note": "The most used language for WebAssembly outside the browser."
        },
        {
          "slot": "embedded",
          "fit": "strong"
        },
        {
          "slot": "games",
          "fit": "ok",
          "note": "Engines exist (Bevy), studios still ship C++."
        },
        {
          "slot": "data",
          "fit": "ok",
          "note": "Mostly as the fast core under Python tools (Polars, Ruff)."
        },
        {
          "slot": "mobile",
          "fit": "weak"
        },
        {
          "slot": "browser",
          "fit": "none",
          "note": "Only through WebAssembly, not as a browser language."
        }
      ],
      "won_where": [
        {
          "what": "Linux kernel accepted Rust as a second language in 6.1",
          "source": "https://lwn.net/Articles/910762/"
        },
        {
          "what": "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"
        },
        {
          "what": "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/"
        },
        {
          "what": "AWS Firecracker, the microVM behind Lambda and Fargate",
          "source": "https://aws.amazon.com/blogs/aws/firecracker-lightweight-virtualization-for-serverless-computing/"
        },
        {
          "what": "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/"
        }
      ],
      "alternatives": [
        "zig",
        "cpp",
        "go",
        "c"
      ],
      "timeline": [
        {
          "year": 2006,
          "what": "Graydon Hoare begins Rust as a side project",
          "source": "https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/"
        },
        {
          "year": 2009,
          "what": "Mozilla starts sponsoring the project",
          "source": "https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/"
        },
        {
          "year": 2010,
          "what": "Rust announced publicly at the Mozilla Annual Summit",
          "source": "https://venge.net/graydon/talks/intro-talk-2.pdf"
        },
        {
          "year": 2015,
          "what": "Rust 1.0 with the stability promise",
          "source": "https://blog.rust-lang.org/2015/05/15/Rust-1.0.html"
        },
        {
          "year": 2017,
          "what": "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/"
        },
        {
          "year": 2021,
          "what": "Rust Foundation founded by AWS, Google, Huawei, Microsoft and Mozilla",
          "source": "https://foundation.rust-lang.org/news/2021-02-08-hello-world/"
        },
        {
          "year": 2022,
          "what": "Linux 6.1 merges initial Rust support",
          "source": "https://lwn.net/Articles/910762/"
        },
        {
          "year": 2024,
          "what": "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": "rust",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/rust/",
      "json": "https://langwhy.dev/lang/rust.json",
      "markdown": "https://langwhy.dev/lang/rust.md"
    },
    {
      "id": "sql",
      "name": "SQL",
      "appeared": 1974,
      "creators": [
        "Donald D. Chamberlin",
        "Raymond F. Boyce"
      ],
      "org": "ISO/IEC JTC 1/SC 32 (WG3)",
      "type": "query",
      "status": "alive",
      "tagline": "Declarative language for defining, changing and querying data in relational databases.",
      "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": [],
      "tradeoffs": {
        "memory": "n/a",
        "types": "n/a",
        "run": "n/a",
        "concurrency": [
          "n/a"
        ],
        "cost": "Each database speaks its own dialect, and no relational database fully conforms to the SQL standard yet."
      },
      "slots": [
        {
          "slot": "database",
          "fit": "strong"
        },
        {
          "slot": "data",
          "fit": "strong",
          "note": "DuckDB embeds SQL in a host process and integrates with Python and R."
        },
        {
          "slot": "server",
          "fit": "none",
          "note": "SQL runs inside the database server; it is not a language for writing the server."
        }
      ],
      "won_where": [
        {
          "what": "SQLite, on every Android device, iPhone, Mac, Windows 10/11 PC, and in Firefox, Chrome and Safari",
          "source": "https://sqlite.org/mostdeployed.html"
        },
        {
          "what": "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"
        },
        {
          "what": "Google Spanner, which moved to the SQL dialect shared by other Google systems",
          "source": "https://research.google/pubs/spanner-becoming-a-sql-system/"
        },
        {
          "what": "DuckDB, an embedded analytics database that works inside Python and R sessions",
          "source": "https://duckdb.org/why_duckdb"
        }
      ],
      "alternatives": [
        "python",
        "r",
        "julia"
      ],
      "timeline": [
        {
          "year": 1970,
          "what": "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"
        },
        {
          "year": 1974,
          "what": "Chamberlin and Boyce publish SEQUEL, the query language that became SQL",
          "source": "https://research.ibm.com/publications/sequel-a-struciured-english-query-language"
        },
        {
          "year": 1979,
          "what": "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"
        },
        {
          "year": 1986,
          "what": "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/"
        },
        {
          "year": 2017,
          "what": "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/"
        },
        {
          "year": 2023,
          "what": "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": "sql",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/sql/",
      "json": "https://langwhy.dev/lang/sql.json",
      "markdown": "https://langwhy.dev/lang/sql.md"
    },
    {
      "id": "swift",
      "name": "Swift",
      "appeared": 2014,
      "creators": [
        "Chris Lattner"
      ],
      "org": "Apple",
      "type": "mobile",
      "status": "alive",
      "tagline": "Programming language for building apps on Apple platforms such as iOS and macOS.",
      "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"
      ],
      "tradeoffs": {
        "memory": "refcount",
        "types": "static",
        "run": "native",
        "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": [
        {
          "slot": "mobile",
          "fit": "strong"
        },
        {
          "slot": "server",
          "fit": "weak",
          "note": "Server frameworks such as Vapor exist, but server use is small."
        },
        {
          "slot": "browser",
          "fit": "none",
          "note": "Not a web page language."
        }
      ],
      "won_where": [
        {
          "what": "Apple's platforms, for which Apple describes Swift as its language",
          "source": "https://developer.apple.com/swift/"
        },
        {
          "what": "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"
        }
      ],
      "alternatives": [
        "objective-c",
        "kotlin",
        "dart",
        "typescript"
      ],
      "timeline": [
        {
          "year": 2010,
          "what": "Chris Lattner starts Swift at Apple in July 2010",
          "source": "https://nondot.org/sabre/"
        },
        {
          "year": 2014,
          "what": "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"
        },
        {
          "year": 2015,
          "what": "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/"
        },
        {
          "year": 2019,
          "what": "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": "swift",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/swift/",
      "json": "https://langwhy.dev/lang/swift.json",
      "markdown": "https://langwhy.dev/lang/swift.md"
    },
    {
      "id": "typescript",
      "name": "TypeScript",
      "appeared": 2012,
      "creators": [
        "Anders Hejlsberg"
      ],
      "org": "Microsoft",
      "type": "web",
      "status": "alive",
      "tagline": "Static types for JavaScript code, removed at compile time so the output is plain JavaScript.",
      "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"
      ],
      "tradeoffs": {
        "memory": "gc",
        "types": "static",
        "run": "to-js",
        "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": [
        {
          "slot": "browser",
          "fit": "strong",
          "note": "Compiles to JavaScript, so it runs wherever JavaScript does."
        },
        {
          "slot": "server",
          "fit": "ok",
          "note": "Runs on Node.js after compilation."
        },
        {
          "slot": "cli",
          "fit": "ok"
        },
        {
          "slot": "embedded",
          "fit": "none",
          "note": "It compiles to JavaScript, so it needs a JavaScript runtime that microcontrollers do not have."
        }
      ],
      "won_where": [
        {
          "what": "Angular 2 announced as built with TypeScript in March 2015",
          "source": "https://devblogs.microsoft.com/typescript/angular-2-built-on-typescript/"
        },
        {
          "what": "Slack's desktop app ported to TypeScript, which Slack called a boon to stability",
          "source": "https://slack.engineering/typescript-at-slack/"
        },
        {
          "what": "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"
        },
        {
          "what": "67 % of State of JS 2024 respondents wrote more TypeScript than JavaScript",
          "source": "https://2024.stateofjs.com/en-US/usage/"
        }
      ],
      "alternatives": [
        "javascript",
        "dart",
        "go"
      ],
      "timeline": [
        {
          "year": 2012,
          "what": "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/"
        },
        {
          "year": 2014,
          "what": "TypeScript 1.0 is announced on April 2",
          "source": "https://devblogs.microsoft.com/typescript/announcing-typescript-1-0/"
        },
        {
          "year": 2015,
          "what": "Angular 2 is announced as built with TypeScript on March 5",
          "source": "https://devblogs.microsoft.com/typescript/angular-2-built-on-typescript/"
        },
        {
          "year": 2017,
          "what": "Slack publishes how it moved its desktop app to TypeScript",
          "source": "https://slack.engineering/typescript-at-slack/"
        },
        {
          "year": 2023,
          "what": "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": "typescript",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/typescript/",
      "json": "https://langwhy.dev/lang/typescript.json",
      "markdown": "https://langwhy.dev/lang/typescript.md"
    },
    {
      "id": "zig",
      "name": "Zig",
      "appeared": 2016,
      "creators": [
        "Andrew Kelley"
      ],
      "org": "Zig Software Foundation",
      "type": "systems",
      "status": "alive",
      "tagline": "Systems language meant to replace C, with no hidden control flow or hidden allocations.",
      "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"
      ],
      "tradeoffs": {
        "memory": "manual",
        "types": "static",
        "run": "native",
        "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": [
        {
          "slot": "systems",
          "fit": "strong"
        },
        {
          "slot": "embedded",
          "fit": "ok"
        },
        {
          "slot": "cli",
          "fit": "ok"
        },
        {
          "slot": "wasm",
          "fit": "ok"
        },
        {
          "slot": "browser",
          "fit": "none",
          "note": "Compiles to WebAssembly, but is not a browser language."
        }
      ],
      "won_where": [
        {
          "what": "Ghostty, a terminal emulator whose shared core and Linux app are written in Zig",
          "source": "https://ghostty.org/docs/about"
        },
        {
          "what": "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/"
        }
      ],
      "alternatives": [
        "c",
        "rust",
        "cpp",
        "go"
      ],
      "timeline": [
        {
          "year": 2016,
          "what": "Zig is first released on 8 February 2016",
          "source": "https://github.com/topics/zig-lang"
        },
        {
          "year": 2020,
          "what": "The Zig Software Foundation is announced to promote and advance the language",
          "source": "https://ziglang.org/news/announcing-zig-software-foundation/"
        },
        {
          "year": 2022,
          "what": "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/"
        },
        {
          "year": 2026,
          "what": "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": "zig",
      "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": false,
      "last_reviewed": "2026-10-30",
      "url": "https://langwhy.dev/lang/zig/",
      "json": "https://langwhy.dev/lang/zig.json",
      "markdown": "https://langwhy.dev/lang/zig.md"
    }
  ]
}