The Scoreboard: All 65 Languages Ranked
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:
- On the Nature of Coupling: All Coupling as Shared Resource Access — Zenodo, 2026 — doi:10.5281/zenodo.21925122
- A Self-Contained Derivation of the Optimal Modularization from Coupling — Zenodo, 2026 — doi:10.5281/zenodo.21925268