The Scoreboard: All 65 Languages Ranked

Every score in the 65-language comparison in one place — the ranked table, the six Core, eight Ecosystem, and six Readiness dimension sub-scores, and the complete per-language mechanism data behind each number.

1 The Scoreboard

Companion to: The Great Language Smackdown · the Criteria · the Scoring Model

This page holds every number in the comparison. Every table responds to the controls above it: type to filter, and choose a key to re-rank. The first table ranks all 65 languages by the ranking score — coupling, lifted by at most 15% for readiness — with the star band that follows from Core coupling, and shows Ecosystem coupling alongside. The next three give the per-dimension sub-scores that produce those totals. The last table gives the mechanism-presence data behind every score, so any number can be reproduced from first principles. The criteria are on the Criteria; the arithmetic, the presence rules, and the ranking rule are on the Scoring Model.

1.1 Combined Scores (All 65 Languages)

Scores from the model (capped-sum-per-dimension), analysis date June 2026. Versions are the latest stable as of that date. Rank is the Ranking score: core × (0.85 + 0.15 × readiness / 100). Coupling is primary; readiness is a modifier capped at 0.15, so a full 0-to-100 readiness swing is worth 15 coupling points at the top of the scale — the weight of one High mechanism. Readiness can therefore settle a close call, and it can never overturn a large coupling gap. Higher is better: each score is 100 minus priced cost, not a general quality measure. Each column has its own scale and its own band; do not compare across columns. The star rating reflects the Core Coupling score: 90+ = ★★★★★, 75–89 = ★★★★, 60–74 = ★★★, 45–59 = ★★, below 45 = ★. Ecosystem coupling is a lens and does not enter the ranking, because it is a dependency context rather than a quality. The table sorts by any column, so a reader who wants pure coupling sorts by that column.

Rank Language Version Core Coupling Ecosystem Coupling Engineering Readiness Ranking score Band and Characterization
1 SQL SQL:2023 85 80 76 81.9 ★★★★ Declarative Data
2 Unison M5b 84 60 76 81.0 ★★★★ Content-Addressed + Effects
3 Rust 1.96 85 84 68 80.9 ★★★★ Maximum Enforcement
4 Rocq 9.0 85 69 49 78.5 ★★★★ Formal Verification
5 Lean 4 4.31 81 65 64 76.6 ★★★★ Theorem Proving
6 Swift 6.2 77 73 69 73.4 ★★★★ Protocol-Oriented
7 Ada 2022 77 60 57 72.0 ★★★★ Safety-Critical
8 Haskell GHC 9.12 76 56 53 70.6 ★★★★ Academic Excellence
9 SPARK Pro 25 73 69 42 66.6 ★★★ Proven Correctness
10 Elixir 1.20 69 84 72 66.1 ★★★ Modern BEAM
11 Erlang OTP 29 69 76 72 66.1 ★★★ Actor Gold Standard
12 PureScript 0.15 69 68 64 65.3 ★★★ FP Excellence
13 Clojure 1.12 62 80 69 59.1 ★★★ Immutable JVM
14 Zig 0.16 61 57 72 58.4 ★★★ Explicit Systems
15 Racket 8.17 62 84 57 58.0 ★★★ Language-Oriented
16 Scheme R7RS 62 84 57 58.0 ★★★ Minimalist
17 OCaml 5.4 58 84 61 54.6 ★★ Module System
18 Transact-SQL SQL Server 58 69 61 54.6 ★★ SQL Server Procedural
19 D 2.112 57 84 65 54.0 ★★ Better C++
20 Tcl 9.0 58 77 53 53.9 ★★ Embedded Legacy
21 F# 9 54 84 88 53.0 ★★ Pragmatic FP
22 Dart 3.12 54 84 72 51.7 ★★ Null Safety + Flutter
23 Scratch 3.0 55 65 56 51.4 ★★ Education First
24 Prolog SWI 9.4 55 45 53 51.1 ★★ Logic Programming
25 Java 26 50 61 85 48.9 ★★ Enterprise Workhorse
26 Scala 3.8 50 72 85 48.9 ★★ Complex + Powerful
27 Kotlin 2.4 50 76 77 48.3 ★★ Modern JVM
28 Crystal 1.15 50 92 68 47.6 ★★ Ruby Syntax, Static Types
29 C++ C++23 50 61 65 47.4 ★★ Modern Power
30 Solidity 0.8.x 50 61 56 46.7 ★★ Smart Contracts
31 SAS 9.4 51 54 34 46.0 ★★ Analytics Platform
32 C# 13 46 60 88 45.2 ★★ Best Balance
33 Visual Basic .NET 46 69 88 45.2 ★★ Office Automation
34 COBOL 1989:2023 47 54 61 44.3 ★★ Mainframe Business
35 R 4.5 47 50 61 44.3 ★★ Statistics Domain
36 Common Lisp ANSI 47 72 57 44.0 ★★ Macro Power
37 Smalltalk ANSI 47 72 57 44.0 ★★ OOP Pioneer
38 Eiffel ECMA-367 46 46 57 43.0 ★★ Design by Contract
39 Go 1.26 43 76 100 43.0 ★ Simplicity + Stability
40 Nim 2.2 43 64 72 41.2 ★ Python + Performance
41 Bash 5.3 43 53 68 40.9 ★ Shell Glue
42 Fish 4.0 43 49 68 40.9 ★ Friendly Shell
43 C shell tcsh 43 57 64 40.7 ★ Interactive-Pioneer Shell
44 Ksh 93u+ 43 68 64 40.7 ★ Korn Shell
45 Sh POSIX 43 57 64 40.7 ★ POSIX Shell
46 Zsh 5.9 43 68 64 40.7 ★ Enhanced Shell
47 Lua 5.5 43 84 61 40.5 ★ Embedded Scripting
48 PowerShell 7.6 43 65 61 40.5 ★ Objects > Strings
49 Objective-C 2.0 42 65 53 39.0 ★ Dynamic Messaging
50 Delphi 12.3 43 84 38 39.0 ★ RAD Legacy
51 VBScript 6.0 40 39 57 37.4 ★ Deprecated Windows Scripting
52 Groovy 5.x 38 80 81 36.9 ★ JVM Scripting
53 PL/SQL Oracle 39 61 46 35.8 ★ Oracle Procedural SQL
54 MATLAB R2026a 39 61 42 35.6 ★ Engineering Domain
55 Turbo Pascal 7.0 39 54 42 35.6 ★ Compiler-Speed Pioneer
56 Python 3.14 32 73 81 31.1 ★ Productivity King
57 Julia 1.12 32 73 68 30.5 ★ Scientific + Dispatch
58 Fortran 2023 32 68 65 30.3 ★ Scientific Legacy
59 JavaScript ES2025 28 73 96 27.8 ★ Ubiquitous
60 TypeScript 6.0 28 73 96 27.8 ★ JavaScript + Types
61 Ruby 4.0 28 58 88 27.5 ★ Developer Happiness
62 PHP 8.5 28 69 84 27.3 ★ Web + Modernizing
63 Perl 5.42 28 53 65 26.5 ★ TIMTOWTDI
64 C C23 25 73 65 23.7 ★ Coupling Neutral
65 Assembly x86-64 10 58 68 9.5 ★ Maximum Control

1.2 Core Coupling Dimensions Matrix

How each language constrains the six Core coupling dimensions. The leading column is the score; the rest are the per-dimension costs that produce it.

Higher is better for the score column. Every (cost) column is a cost, where 0 means no mechanism is charged. Analysis date: June 2026. The ‘Platform’ column is the language’s platform/domain coupling.

Rank Language Core Coupling (score) Type (cost) Construction (cost) Memory (cost) Error (cost) Concurrency (cost) Platform (cost)
1 SQL (SQL:2023) 85 −15 (−28) 0 0 0 0 0
2 Unison (M5b) 84 −4 0 −12 0 0 0
3 Rust (1.96) 85 −15 (−24) 0 0 0 0 0
4 Rocq (9.0) 85 0 0 0 0 0 −15
5 Lean 4 (4.31) 81 −4 0 0 0 0 −15
6 Swift (6.2) 77 −15 (−24) 0 0 0 0 −8
7 Ada (2022) 77 −15 (−16) −4 0 −4 0 0
8 Haskell (GHC 9.12) 76 −8 0 −12 −4 0 0
9 SPARK (Pro 25) 73 −12 0 0 0 0 −15
10 Elixir (1.20) 69 −15 (−43) 0 −8 −8 0 0
11 Erlang (OTP 29) 69 −15 (−43) 0 −8 −8 0 0
12 PureScript (0.15) 69 −4 0 −12 0 −15 0
13 Clojure (1.12) 62 −15 (−47) 0 −15 (−20) −8 0 0
14 Zig (0.16) 61 −12 0 −15 (−23) 0 −12 0
15 Racket (8.17) 62 −15 (−47) 0 −15 (−20) −8 0 0
16 Scheme (R7RS) 62 −15 (−47) 0 −15 (−20) −8 0 0
17 OCaml (5.4) 58 −15 (−16) −4 −15 (−20) −8 0 0
18 Transact-SQL (SQL Server) 58 −15 (−20) 0 0 −4 −8 −15
19 D (2.112) 57 −8 −4 −15 (−20) −8 −8 0
20 Tcl (9.0) 58 −15 (−63) −15 (−23) 0 −4 0 −8
21 F# (9) 54 −15 (−24) 0 −15 (−20) −8 −8 0
22 Dart (3.12) 54 −15 (−20) 0 −15 (−20) −8 −8 0
23 Scratch (3.0) 55 −15 (−55) −15 (−19) 0 −15 (−23) 0 0
24 Prolog (SWI 9.4) 55 −15 (−51) −15 (−19) −15 (−20) 0 0 0
25 Java (26) 50 −15 (−24) −4 −15 (−20) −8 −8 0
26 Scala (3.8) 50 −15 (−20) −4 −15 (−20) −8 −8 0
27 Kotlin (2.4) 50 −15 (−28) −4 −15 (−20) −8 −8 0
28 Crystal (1.15) 50 −15 (−16) −4 −15 (−20) −8 −8 0
29 C++ (C++23) 50 −15 (−32) −4 −8 −8 −15 (−16) 0
30 Solidity (0.8.x) 50 −12 −4 0 −4 −15 −15
31 SAS (9.4) 51 −15 (−23) −4 0 −15 0 −15
32 C# (13) 46 −15 (−28) −4 −15 (−20) −12 −8 0
33 Visual Basic (.NET) 46 −15 (−28) −4 −15 (−20) −12 −8 0
34 COBOL (1989:2023) 47 −15 (−20) −15 0 −15 0 −8
35 R (4.5) 47 −15 (−27) −15 (−19) −15 (−20) −8 0 0
36 Common Lisp (ANSI) 47 −15 (−47) −15 (−19) −15 (−20) −8 0 0
37 Smalltalk (ANSI) 47 −15 (−67) −15 (−19) −15 (−20) −8 0 0
38 Eiffel (ECMA-367) 46 −15 (−20) −4 −15 (−20) −4 −8 −8
39 Go (1.26) 43 −15 (−16) 0 −15 (−20) −12 −15 (−16) 0
40 Nim (2.2) 43 −15 (−16) −4 −15 (−16) −8 −15 (−16) 0
41 Bash (5.3) 43 −15 (−59) −15 (−23) 0 −15 (−23) −4 −8
42 Fish (4.0) 43 −15 (−55) −15 (−19) 0 −15 (−23) −4 −8
43 C shell (tcsh) 43 −15 (−55) −15 (−19) 0 −15 (−23) −4 −8
44 Ksh (93u+) 43 −15 (−59) −15 (−23) 0 −15 (−23) −4 −8
45 Sh (POSIX) 43 −15 (−59) −15 (−23) 0 −15 (−23) −4 −8
46 Zsh (5.9) 43 −15 (−59) −15 (−23) 0 −15 (−23) −4 −8
47 Lua (5.5) 43 −15 (−55) −15 (−19) −15 (−20) −12 0 0
48 PowerShell (7.6) 43 −15 (−43) −4 −15 (−20) −15 (−16) −8 0
49 Objective-C (2.0) 42 −15 (−32) −4 −15 (−20) −8 −8 −8
50 Delphi (12.3) 43 −15 (−16) −4 −15 (−27) −8 −15 (−16) 0
51 VBScript (6.0) 40 −15 (−43) −15 0 −15 0 −15
52 Groovy (5.x) 38 −15 (−43) −4 −15 (−20) −8 −12 −8
53 PL/SQL (Oracle) 39 −15 (−20) −15 0 −8 −8 −15
54 MATLAB (R2026a) 39 −15 (−27) −15 (−19) −15 (−20) −8 −8 0
55 Turbo Pascal (7.0) 39 −15 (−20) −4 −15 (−27) −15 (−19) −4 −8
56 Python (3.14) 32 −15 (−59) −15 (−19) −15 (−20) −8 −15 (−31) 0
57 Julia (1.12) 32 −15 (−35) −15 (−19) −15 (−20) −8 −15 (−16) 0
58 Fortran (2023) 32 −15 (−32) −15 (−23) −15 (−27) −15 (−23) −8 0
59 JavaScript (ES2025) 28 −15 (−59) −15 (−19) −15 (−20) −12 −15 (−31) 0
60 TypeScript (6.0) 28 −15 (−32) −15 (−19) −15 (−16) −12 −15 (−31) 0
61 Ruby (4.0) 28 −15 (−51) −15 (−19) −15 (−20) −12 −15 (−23) 0
62 PHP (8.5) 28 −15 (−47) −15 (−19) −12 −15 (−16) −15 (−31) 0
63 Perl (5.42) 28 −15 (−71) −15 (−23) −12 −15 (−31) −15 (−35) 0
64 C (C23) 25 −15 (−71) −15 (−27) −15 (−27) −15 (−23) −15 (−20) 0
65 Assembly (x86-64) 10 −15 (−59) −15 (−27) −15 (−27) −15 (−23) −15 (−20) −15

The leading column is a score; the rest are costs. A dimension carries a cost, not a percentage: 0 means the language forces no mechanism in that dimension, and a negative number is the cost it forces. The subtotal is capped at −15, which is what the total uses; where the cap bites, the uncapped cost follows in parentheses, so two languages pinned at the cap stay distinguishable. The cells therefore do not sum to the total.

1.2.1 Core Coupling Dimension Explanations

Type

  • 0 = the type states the meaning of every value. A cost = producers and consumers must agree on meaning that nothing records.

Construction

  • 0 = state is local by default and every value passes a validating path. A cost = state leaks into globals, or values arise without validation.

Memory

  • 0 = the language states when storage is released and who owns it. A cost = the program must hold that answer in convention, not in the language.

Error

  • 0 = failures travel a declared path and force a decision. A cost = failures travel by side channel, and nobody must handle them.

Concurrency

  • 0 = parallel work is expressible and kept off shared state. A cost = shared state is the default, and races go undetected.

Platform

  • 0 = the artifact runs beyond one vendor or domain. A cost = the deployment unit is a single vendor, domain, or dead platform.

1.3 Ecosystem Coupling Dimensions Matrix

How each language handles ecosystem-level coupling. The leading column is the axis score; the rest are the per-dimension costs that produce it.

Rank Language Ecosystem Coupling (score) Performance (cost) Ecosystem (cost) Evolution (cost) Domain (cost) Learning (cost) Syntax (cost) Testing (cost) Security (cost)
1 SQL (SQL:2023) 80 0 −8 −4 0 0 0 0 −8
2 Unison (M5b) 60 −8 −8 −8 0 −8 0 −8 0
3 Rust (1.96) 84 0 0 −8 0 −8 0 0 0
4 Rocq (9.0) 69 0 −8 0 −15 −8 0 0 0
5 Lean 4 (4.31) 65 0 −8 0 −15 −12 0 0 0
6 Swift (6.2) 73 0 −15 (−16) −8 0 −4 0 0 0
7 Ada (2022) 60 0 −8 −4 −8 −12 −8 0 0
8 Haskell (GHC 9.12) 56 −8 −8 −8 0 −12 0 −8 0
9 SPARK (Pro 25) 69 0 −8 0 −15 −8 0 0 0
10 Elixir (1.20) 84 0 −8 0 0 −4 0 −4 0
11 Erlang (OTP 29) 76 0 0 0 −8 −12 0 −4 0
12 PureScript (0.15) 68 −8 −8 0 0 −8 0 −8 0
13 Clojure (1.12) 80 −4 −8 0 0 −8 0 0 0
14 Zig (0.16) 57 0 −8 −8 0 −4 0 −8 −15
15 Racket (8.17) 84 0 −8 0 0 −8 0 0 0
16 Scheme (R7RS) 84 0 −8 0 0 −8 0 0 0
17 OCaml (5.4) 84 0 −8 0 0 −8 0 0 0
18 Transact-SQL (SQL Server) 69 0 −8 0 −15 0 0 0 −8
19 D (2.112) 84 −8 −8 0 0 0 0 0 0
20 Tcl (9.0) 77 0 −8 0 0 0 0 0 −15 (−16)
21 F# (9) 84 −12 0 0 0 −4 0 0 0
22 Dart (3.12) 84 −8 −8 0 0 0 0 0 0
23 Scratch (3.0) 65 0 −8 0 −15 (−23) 0 0 −12 0
24 Prolog (SWI 9.4) 45 −8 −12 0 −15 (−23) −8 0 −4 −8
25 Java (26) 61 −12 −15 (−16) 0 −8 −4 0 0 0
26 Scala (3.8) 72 −8 0 −8 0 −12 0 0 0
27 Kotlin (2.4) 76 −12 −8 0 0 −4 0 0 0
28 Crystal (1.15) 92 0 −8 0 0 0 0 0 0
29 C++ (C++23) 61 0 −12 0 0 −12 0 0 −15
30 Solidity (0.8.x) 61 0 −8 0 −15 −8 0 0 −8
31 SAS (9.4) 54 0 −15 (−16) 0 −15 −8 −8 0 0
32 C# (13) 60 −12 −8 0 −8 −4 0 0 −8
33 Visual Basic (.NET) 69 −8 0 −15 0 0 −8 0 0
34 COBOL (1989:2023) 54 0 −15 (−16) 0 −15 −8 −8 0 0
35 R (4.5) 50 −8 0 0 −15 −8 0 −4 −15 (−16)
36 Common Lisp (ANSI) 72 −8 −8 0 0 −8 −4 0 0
37 Smalltalk (ANSI) 72 0 −8 0 0 −8 0 −4 −8
38 Eiffel (ECMA-367) 46 −8 −15 (−16) 0 −15 −8 −8 0 0
39 Go (1.26) 76 −8 −8 0 −8 0 0 0 0
40 Nim (2.2) 64 −8 −8 −8 0 −4 0 −8 0
41 Bash (5.3) 53 −8 −12 0 0 0 0 −12 −15 (−16)
42 Fish (4.0) 49 −8 −12 0 −8 0 0 −15 (−20) −8
43 C shell (tcsh) 57 −8 −12 0 0 0 0 −15 (−20) −8
44 Ksh (93u+) 68 −8 −4 0 0 0 0 −12 −8
45 Sh (POSIX) 57 −8 −4 −4 0 0 0 −12 −15 (−16)
46 Zsh (5.9) 68 −8 −4 0 0 0 0 −12 −8
47 Lua (5.5) 84 0 −8 0 0 −8 0 0 0
48 PowerShell (7.6) 65 −15 (−20) 0 0 0 −4 −8 0 −8
49 Objective-C (2.0) 65 0 −8 −4 −15 −8 0 0 0
50 Delphi (12.3) 84 0 −8 0 0 0 −8 0 0
51 VBScript (6.0) 39 0 −15 (−16) −15 −15 0 0 −8 −8
52 Groovy (5.x) 80 −12 0 0 −8 0 0 0 0
53 PL/SQL (Oracle) 61 0 −8 0 −15 0 −8 0 −8
54 MATLAB (R2026a) 61 −8 −8 0 −15 −8 0 0 0
55 Turbo Pascal (7.0) 54 0 −8 −15 (−19) 0 0 −8 −15 (−16) 0
56 Python (3.14) 73 −8 0 0 0 0 0 −4 −15 (−16)
57 Julia (1.12) 73 −4 −8 0 −15 0 0 0 0
58 Fortran (2023) 68 0 −8 0 −8 −8 −8 0 0
59 JavaScript (ES2025) 73 −8 0 0 0 0 0 −4 −15 (−16)
60 TypeScript (6.0) 73 −8 0 0 0 0 0 −4 −15 (−16)
61 Ruby (4.0) 58 −8 −15 (−16) 0 0 0 0 −4 −15 (−16)
62 PHP (8.5) 69 0 −8 0 0 0 −8 0 −15 (−16)
63 Perl (5.42) 53 −8 0 0 0 −8 −12 −4 −15 (−16)
64 C (C23) 73 0 −12 0 0 0 0 0 −15
65 Assembly (x86-64) 58 0 −4 0 −8 0 0 −15 (−16) −15

The leading column is a score; the rest are costs. A dimension carries a cost, not a percentage: 0 means the language forces no mechanism in that dimension, and a negative number is the cost it forces. The subtotal is capped at −15, which is what the total uses; where the cap bites, the uncapped cost follows in parentheses, so two languages pinned at the cap stay distinguishable. The cells therefore do not sum to the total.

1.3.1 Ecosystem Coupling Dimension Explanations

Performance

  • 0 = predictable, deterministic performance. A cost = GC pauses, warm-up, or interpretation couple logic to the runtime.

Ecosystem & Tooling

  • 0 = standardized tooling and a rich ecosystem. A cost = fragmented or thin tooling couples the project to its toolchain.

Language Evolution

  • 0 = stable and backward compatible. A cost = breaking changes couple the codebase to a version.

Domain Suitability

  • 0 = works across domains. A cost = coupled to one domain, or to one framework’s architecture.

Learning Curve

  • 0 = quick to productivity. A cost = productivity couples to deep, unusual expertise.

Syntax & Ergonomics

  • 0 = concise and readable. A cost = verbosity or inconsistency couples intent to ceremony.

Testing & Debugging

  • 0 = strong tools and early detection. A cost = poor tools couple understanding to manual inspection.

Security

  • 0 = memory- and type-safe. A cost = correctness couples to security awareness.

1.4 Engineering Readiness Dimensions Matrix

How each language builds reproducibly, ships verifiably, can be observed, is quick to work in, connects to other languages, and is governed. Higher is better; the score is reported separately from the two coupling scores.

Rank Language Readiness (score) Reproducibility (cost) Supply chain (cost) Observability (cost) Feedback (cost) Interop (cost) Governance (cost)
1 SQL (SQL:2023) 76 0 −8 −12 0 −4 0
2 Unison (M5b) 76 0 −8 −12 0 −4 0
3 Rust (1.96) 68 0 −12 −12 −8 0 0
4 Rocq (9.0) 49 −15 (−16) −12 −12 0 −12 0
5 Lean 4 (4.31) 64 −8 −12 −12 0 −4 0
6 Swift (6.2) 69 −8 −8 0 0 0 −15 (−16)
7 Ada (2022) 57 −15 (−16) −12 −12 0 −4 0
8 Haskell (GHC 9.12) 53 −15 (−16) −12 −12 −8 0 0
9 SPARK (Pro 25) 42 −15 (−16) −12 −12 0 −4 −15 (−16)
10 Elixir (1.20) 72 −8 −12 −8 0 0 0
11 Erlang (OTP 29) 72 −8 −12 −8 0 0 0
12 PureScript (0.15) 64 −8 −12 −12 0 −4 0
13 Clojure (1.12) 69 −15 (−16) −4 −8 0 −4 0
14 Zig (0.16) 72 −8 −12 −8 0 0 0
15 Racket (8.17) 57 −15 (−16) −12 −12 0 −4 0
16 Scheme (R7RS) 57 −15 (−16) −12 −12 0 −4 0
17 OCaml (5.4) 61 −15 (−16) −12 −12 0 0 0
18 Transact-SQL (SQL Server) 61 0 −8 −12 0 −4 −15 (−16)
19 D (2.112) 65 −15 (−16) −12 −8 0 0 0
20 Tcl (9.0) 53 −15 (−16) −12 −12 −4 −4 0
21 F# (9) 88 −8 −4 0 0 0 0
22 Dart (3.12) 72 −8 −12 −8 0 0 0
23 Scratch (3.0) 56 0 −8 −12 −4 −12 −8
24 Prolog (SWI 9.4) 53 −15 (−16) −12 −12 −4 −4 0
25 Java (26) 85 −15 (−16) 0 0 0 0 0
26 Scala (3.8) 85 −15 (−16) 0 0 0 0 0
27 Kotlin (2.4) 77 −15 (−16) 0 −8 0 0 0
28 Crystal (1.15) 68 −8 −12 −8 0 −4 0
29 C++ (C++23) 65 −15 (−16) −8 −4 −8 0 0
30 Solidity (0.8.x) 56 −8 −12 −12 0 −12 0
31 SAS (9.4) 34 −15 (−16) −8 −12 −4 −12 −15 (−16)
32 C# (13) 88 −8 −4 0 0 0 0
33 Visual Basic (.NET) 88 −8 −4 0 0 0 0
34 COBOL (1989:2023) 61 −15 (−16) −8 −12 0 −4 0
35 R (4.5) 61 −15 (−16) −12 −12 0 0 0
36 Common Lisp (ANSI) 57 −15 (−16) −12 −12 0 −4 0
37 Smalltalk (ANSI) 57 −15 (−16) −12 −12 0 −4 0
38 Eiffel (ECMA-367) 57 −15 (−16) −8 −12 −4 −4 0
39 Go (1.26) 100 0 0 0 0 0 0
40 Nim (2.2) 72 −8 −12 −8 0 0 0
41 Bash (5.3) 68 0 −8 −12 0 −12 0
42 Fish (4.0) 68 0 −8 −12 0 −12 0
43 C shell (tcsh) 64 0 −8 −12 −4 −12 0
44 Ksh (93u+) 64 0 −8 −12 −4 −12 0
45 Sh (POSIX) 64 0 −8 −12 −4 −12 0
46 Zsh (5.9) 64 0 −8 −12 −4 −12 0
47 Lua (5.5) 61 −15 (−16) −12 −12 0 0 0
48 PowerShell (7.6) 61 −15 (−16) −12 −8 0 −4 0
49 Objective-C (2.0) 53 −8 −12 −8 0 −4 −15 (−16)
50 Delphi (12.3) 38 −15 (−16) −12 −12 −4 −4 −15 (−16)
51 VBScript (6.0) 57 0 −8 −12 −4 −4 −15 (−16)
52 Groovy (5.x) 81 −15 (−16) 0 0 0 −4 0
53 PL/SQL (Oracle) 46 −15 (−16) −8 −12 0 −4 −15 (−16)
54 MATLAB (R2026a) 42 −15 (−16) −12 −12 0 −4 −15 (−16)
55 Turbo Pascal (7.0) 42 −15 (−16) −8 −12 −4 −4 −15 (−16)
56 Python (3.14) 81 −15 (−16) −4 0 0 0 0
57 Julia (1.12) 68 −8 −12 −8 0 −4 0
58 Fortran (2023) 65 −15 (−16) −8 −12 0 0 0
59 JavaScript (ES2025) 96 0 −4 0 0 0 0
60 TypeScript (6.0) 96 0 −4 0 0 0 0
61 Ruby (4.0) 88 −8 −4 0 0 0 0
62 PHP (8.5) 84 −8 −8 0 0 0 0
63 Perl (5.42) 65 −15 (−16) −8 −8 0 −4 0
64 C (C23) 65 −15 (−16) −8 −12 0 0 0
65 Assembly (x86-64) 68 0 −8 −12 0 −4 −8

The leading column is a score; the rest are costs. A dimension carries a cost, not a percentage: 0 means the language forces no mechanism in that dimension, and a negative number is the cost it forces. The subtotal is capped at −15, which is what the total uses; where the cap bites, the uncapped cost follows in parentheses, so two languages pinned at the cap stay distinguishable. The cells therefore do not sum to the total.

1.4.1 Readiness Dimension Explanations

Reproducibility

  • 0 = the artifact rebuilds byte-identically and dependencies are pinned. A cost = the build or its dependency graph is not reproducible.

Supply chain

  • 0 = published packages carry provenance and live in a namespaced registry. A cost = origin is trusted rather than verified.

Observability

  • 0 = traces, metrics, and structured logs are standard. A cost = a running program cannot be observed with standard tooling.

Feedback

  • 0 = the edit-build-test loop is short and the editor answers as you type. A cost = a change pays a long rebuild, or the editor cannot answer.

Interop

  • 0 = the language calls other languages and compiles to a portable target. A cost = it is an island.

Governance

  • 0 = an independent body or an open specification owns the language. A cost = one vendor, or a closed specification, does.

1.5 Complete per-language data

Rank Language (Version) Core Meta Readiness Present Core mechanisms Present Meta mechanisms Present Readiness mechanisms
1 SQL (SQL:2023) 85 80 76 T4, T5, T10, T12, T14 Ec2, V4, Q3 Y3, Y5, Y6, Y10
2 Unison (M5b) 84 60 76 T14, M2, M3 R2, Ec3, V1, L1, G2 Y3, Y5, Y6, Y10
3 Rust (1.96) 85 84 68 T8, T12, T13, T14 V1, L1 Y3, Y4, Y5, Y6, Y7
4 Rocq (9.0) 85 69 49 P1 Ec3, D1, L1 Y1, Y2, Y3, Y4, Y5, Y6, Y9, Y10
5 Lean 4 (4.31) 81 65 64 T14, P1 Ec3, D1, L1, L3 Y1, Y3, Y4, Y5, Y6, Y10
6 Swift (6.2) 77 73 69 T7, T12, T13, T14, P2 V1, L2, Ec5, Ec6 Y1, Y3, Y11, Y12
7 Ada (2022) 77 60 57 T8, T12, T14, C2, Er4 Ec3, V4, D2, L1, L2, S1 Y1, Y2, Y3, Y4, Y5, Y6, Y10
8 Haskell (GHC 9.12) 76 56 53 T8, T14, M2, M3, Er3 R2, Ec3, V1, L1, L2, G2 Y1, Y2, Y3, Y4, Y5, Y6, Y7
9 SPARK (Pro 25) 73 69 42 T12, T14, P1 Ec3, D1, L1 Y1, Y2, Y3, Y4, Y5, Y6, Y10, Y11, Y12
10 Elixir (1.20) 69 84 72 T1, T3, T4, T5, T12, T14, M2, Er2 G3, L2, Ec6 Y1, Y3, Y4, Y5
11 Erlang (OTP 29) 69 76 72 T1, T3, T4, T5, T12, T14, M2, Er2 G3, D2, L1, L2 Y1, Y3, Y4, Y5
12 PureScript (0.15) 69 68 64 T14, M2, M3, K1 R2, Ec3, L1, G2 Y1, Y3, Y4, Y5, Y6, Y10
13 Clojure (1.12) 62 80 69 T1, T3, T4, T5, T8, T12, T14, M2, M3, M4, Er2 R3, Ec3, L1 Y1, Y2, Y4, Y5, Y10
14 Zig (0.16) 61 57 72 T12, T14, M1, M4, K3, K4 V1, Ec3, L3, G2, Q1 Y1, Y3, Y4, Y5
15 Racket (8.17) 62 84 57 T1, T3, T4, T5, T8, T12, T14, M2, M3, M4, Er2 Ec3, L1 Y1, Y2, Y3, Y4, Y5, Y6, Y10
16 Scheme (R7RS) 62 84 57 T1, T3, T4, T5, T8, T12, T14, M2, M3, M4, Er2 Ec3, L1 Y1, Y2, Y3, Y4, Y5, Y6, Y10
17 OCaml (5.4) 58 84 61 T8, T12, T14, C2, M2, M3, M4, Er2 Ec3, L1 Y1, Y2, Y3, Y4, Y5, Y6
18 Transact-SQL (SQL Server) 58 69 61 T10, T12, T14, Er3, K2, P1 Ec4, D1, Q3 Y3, Y5, Y6, Y10, Y11, Y12
19 D (2.112) 57 84 65 T8, T14, C2, M2, M3, M4, Er2, K3 R2, Ec3 Y1, Y2, Y3, Y4, Y5
20 Tcl (9.0) 58 77 53 T1, T4, T5, T6, T9, T10, T11, T12, T14, C1, C2, C4, Er3, P2 Ec3, Q2, Q3 Y1, Y2, Y3, Y4, Y5, Y6, Y8, Y10
21 F# (9) 54 84 88 T8, T10, T12, T14, M2, M3, M4, Er2, K3 R2, R3, L2 Y2, Y4
22 Dart (3.12) 54 84 72 T12, T13, T14, M2, M3, M4, Er2, K3 R2, Ec3 Y1, Y3, Y4, Y5
23 Scratch (3.0) 55 65 56 T1, T4, T5, T6, T10, T11, T12, C1, C2, Er1, Er3, Er4 Ec3, D1, D2, G1, G3 Y3, Y5, Y6, Y8, Y9, Y10, Y12
24 Prolog (SWI 9.4) 55 45 53 T1, T4, T5, T6, T11, T12, T14, C1, C2, M2, M3, M4 R1, Ec1, Ec3, D1, D2, L1, G3, Q2 Y1, Y2, Y3, Y4, Y5, Y6, Y8, Y10
25 Java (26) 50 61 85 T7, T10, T12, T14, C2, M2, M3, M4, Er2, K3 R2, R3, L2, Ec6, Ec7, D3 Y1, Y2
26 Scala (3.8) 50 72 85 T7, T8, T12, T14, C2, M2, M3, M4, Er2, K3 R2, V1, L1, L2 Y1, Y2
27 Kotlin (2.4) 50 76 77 T7, T8, T12, T13, T14, C2, M2, M3, M4, Er2, K3 R2, R3, L2, Ec6 Y1, Y2, Y5
28 Crystal (1.15) 50 92 68 T8, T12, T14, C2, M2, M3, M4, Er2, K3 Ec3 Y1, Y3, Y4, Y5, Y10
29 C++ (C++23) 50 61 65 T2, T8, T10, T12, T14, C2, M4, Er2, K2, K3 Ec1, Ec2, L1, L2, Q1 Y1, Y2, Y3, Y6, Y7
30 Solidity (0.8.x) 50 61 56 T4, T12, C4, Er3, K1, P1 Ec3, D1, L1, Q3 Y2, Y3, Y4, Y5, Y6, Y9, Y10
31 SAS (9.4) 51 54 34 T1, T12, C2, Er1, P1 Ec3, Ec4, D1, L1, S1 Y1, Y2, Y3, Y5, Y6, Y8, Y9, Y10, Y11, Y12
32 C# (13) 46 60 88 T4, T7, T12, T13, T14, C2, M2, M3, M4, Er2, Er4, K3 R2, R3, L2, Q3, Ec6, D3 Y2, Y4
33 Visual Basic (.NET) 46 69 88 T2, T10, T12, T14, C2, M2, M3, M4, Er2, Er3, K3 R2, V3, S1 Y2, Y4
34 COBOL (1989:2023) 47 54 61 T2, T12, T14, C1, Er1, P2 Ec3, Ec4, D1, S1, L1 Y1, Y2, Y3, Y5, Y6, Y10
35 R (4.5) 47 50 61 T1, T12, T14, C1, C2, M2, M3, M4, Er2 R1, D1, L1, G3, Q2, Q3 Y1, Y2, Y3, Y4, Y5, Y6
36 Common Lisp (ANSI) 47 72 57 T1, T3, T4, T5, T8, T12, T14, C1, C2, M2, M3, M4, Er2 R2, Ec3, L1, S3 Y1, Y2, Y3, Y4, Y5, Y6, Y10
37 Smalltalk (ANSI) 47 72 57 T1, T3, T4, T5, T6, T10, T11, T12, T14, C1, C2, M2, M3, M4, Er2 Ec3, L1, Q2, G3 Y1, Y2, Y3, Y4, Y5, Y6, Y10
38 Eiffel (ECMA-367) 46 46 57 T4, T9, T12, T14, C2, M2, M3, M4, Er4, K3, P2 R2, Ec3, Ec4, D1, L1, S1 Y1, Y2, Y3, Y5, Y6, Y8, Y10
39 Go (1.26) 43 76 100 T4, T12, T14, M2, M3, M4, Er2, Er4, K2, K3 R2, Ec2, D3 —
40 Nim (2.2) 43 64 72 T8, T13, T14, C2, M2, M4, Er2, K2, K3 R2, Ec3, V1, L2, G2 Y1, Y3, Y4, Y5
41 Bash (5.3) 43 53 68 T1, T4, T5, T6, T9, T10, T11, T12, C1, C2, C4, Er1, Er3, Er4, K5, P2 R1, Ec1, Ec3, G1, G3, Q2, Q3 Y3, Y5, Y6, Y9, Y10
42 Fish (4.0) 43 49 68 T1, T4, T5, T6, T10, T11, T12, C1, C2, Er1, Er3, Er4, K5, P2 R1, Ec1, Ec3, D2, G1, G2, G3, Q3 Y3, Y5, Y6, Y9, Y10
43 C shell (tcsh) 43 57 64 T1, T4, T5, T6, T10, T11, T12, C1, C2, Er1, Er3, Er4, K5, P2 R1, Ec1, Ec3, G1, G2, G3, Q2 Y3, Y5, Y6, Y8, Y9, Y10
44 Ksh (93u+) 43 68 64 T1, T4, T5, T6, T9, T10, T11, T12, C1, C2, C4, Er1, Er3, Er4, K5, P2 R1, Ec1, G1, G3, Q2 Y3, Y5, Y6, Y8, Y9, Y10
45 Sh (POSIX) 43 57 64 T1, T4, T5, T6, T9, T10, T11, T12, C1, C2, C4, Er1, Er3, Er4, K5, P2 R1, Ec1, V4, G1, G3, Q2, Q3 Y3, Y5, Y6, Y8, Y9, Y10
46 Zsh (5.9) 43 68 64 T1, T4, T5, T6, T9, T10, T11, T12, C1, C2, C4, Er1, Er3, Er4, K5, P2 R1, Ec1, G1, G3, Q2 Y3, Y5, Y6, Y8, Y9, Y10
47 Lua (5.5) 43 84 61 T1, T3, T4, T5, T6, T8, T12, T14, C1, C2, M2, M3, M4, Er2, Er3 Ec3, L1 Y1, Y2, Y3, Y4, Y5, Y6
48 PowerShell (7.6) 43 65 61 T1, T4, T5, T10, T12, T14, C2, M2, M3, M4, Er2, Er3, Er4, K3 R1, R2, R3, L2, S1, Q3 Y1, Y2, Y3, Y4, Y5, Y10
49 Objective-C (2.0) 42 65 53 T3, T6, T7, T12, T14, C2, M2, M3, M4, Er2, K3, P2 Ec4, D1, V2, L1 Y1, Y3, Y4, Y5, Y10, Y11, Y12
50 Delphi (12.3) 43 84 38 T4, T12, T14, C2, M1, M3, M4, Er2, K2, K3 Ec3, S1 Y1, Y2, Y3, Y4, Y5, Y6, Y8, Y10, Y11, Y12
51 VBScript (6.0) 40 39 57 T1, T6, T11, T12, T14, C1, Er1, P1 Ec3, Ec4, D1, V3, G1, Q3 Y3, Y5, Y6, Y8, Y10, Y11, Y12
52 Groovy (5.x) 38 80 81 T1, T3, T7, T8, T12, T14, C2, M2, M3, M4, Er2, K2, K4, P2 R2, R3, D3 Y1, Y2, Y10
53 PL/SQL (Oracle) 39 61 46 T10, T12, T14, C1, Er3, Er4, K2, P1 Ec4, D1, S1, Q3 Y1, Y2, Y3, Y5, Y6, Y10, Y11, Y12
54 MATLAB (R2026a) 39 61 42 T1, T12, T14, C1, C2, M2, M3, M4, Er2, K3 R1, Ec4, D1, L1 Y1, Y2, Y3, Y4, Y5, Y6, Y10, Y11, Y12
55 Turbo Pascal (7.0) 39 54 42 T4, T5, T12, T14, C2, M1, M3, M4, Er1, Er4, K5, P3 Ec3, V2, V3, S1, G1, G2 Y1, Y2, Y3, Y5, Y6, Y8, Y10, Y11, Y12
56 Python (3.14) 32 73 81 T1, T3, T4, T5, T10, T12, T13, T14, C1, C2, M2, M3, M4, Er2, K1, K2, K3 R1, G3, Q2, Q3 Y1, Y2, Y4
57 Julia (1.12) 32 73 68 T1, T3, T12, T14, C1, C2, M2, M3, M4, Er2, K2, K3 R3, Ec3, D1 Y1, Y3, Y4, Y5, Y10
58 Fortran (2023) 32 68 65 T2, T4, T5, T8, T12, T14, C1, C2, C4, M1, M3, M4, Er1, Er3, Er4, K2 Ec3, D2, L1, S1 Y1, Y2, Y3, Y5, Y6
59 JavaScript (ES2025) 28 73 96 T1, T3, T4, T5, T10, T12, T13, T14, C1, C2, M2, M3, M4, Er2, Er3, K1, K2, K3 R2, G3, Q2, Q3 Y4
60 TypeScript (6.0) 28 73 96 T3, T7, T12, T13, T14, C1, C2, M2, M4, Er2, Er3, K1, K2, K3 R2, G3, Q2, Q3 Y4
61 Ruby (4.0) 28 58 88 T1, T3, T4, T5, T10, T12, T14, C1, C2, M2, M3, M4, Er2, Er3, K1, K2 R1, G3, Q2, Q3, Ec6, Ec7 Y1, Y4
62 PHP (8.5) 28 69 84 T1, T2, T5, T10, T12, T14, C1, C2, M3, M4, Er2, Er3, Er4, K1, K2, K3 S2, Q2, Q3, Ec6 Y1, Y3
63 Perl (5.42) 28 53 65 T1, T3, T4, T5, T6, T9, T10, T11, T12, T14, C1, C2, C4, M3, M4, Er1, Er2, Er3, Er4, K1, K2, K3, K4 R1, L1, S2, S3, G3, Q2, Q3 Y1, Y2, Y3, Y5, Y10
64 C (C23) 25 73 65 T1, T2, T5, T6, T8, T9, T10, T11, T12, T14, C1, C2, C3, C4, M1, M3, M4, Er1, Er3, Er4, K2, K3, K4 Ec1, Ec2, Q1 Y1, Y2, Y3, Y5, Y6
65 Assembly (x86-64) 10 58 68 T1, T4, T5, T6, T10, T11, T12, T14, C1, C2, C3, C4, M1, M3, M4, Er1, Er3, Er4, K2, K3, K4, P1 Ec1, D2, G1, G2, Q1 Y3, Y5, Y6, Y10, Y12

The formal development. The definitions, theorems, and proofs behind this page are published in:

All published papers