Programming languages
Which language for which job, and what each costs you.
Choosing
The decision, in one place.
Systems languages
Control over memory and latency.
Rust
lowC-level speed without a garbage collector, with memory and data-race safety checked at compile time; paid for in learning curve and compile time.
C and C++
lowMaximum control and the largest native ecosystem (engines, drivers, HPC, finance), at the price of undefined behavior and memory-safety bugs you must actively prevent.
Zig
lowA small, explicit C replacement: no hidden allocations or control flow, compile-time code instead of macros, and the best cross-compiling toolchain around; still pre-1.0.
Managed & backend
Fast enough, productive, big ecosystems.
Go
lowA small, boring language with goroutines, a low-pause GC, fast compiles and single static binaries; the default for network services and infrastructure tools.
Java and Kotlin
lowThe JVM: near-native speed after JIT warmup, low-pause GCs, virtual threads and the deepest enterprise ecosystem; Kotlin is the nicer language on top.
C#
lowFast managed language on .NET: JIT or native AOT, value types and spans for low-allocation code, async/await, and Unity/Godot for games.
Dynamic & glue
Speed of writing over speed of running.
Python
lowThe fastest language to write and the home of ML and data science; slow as an interpreter, fast when C/CUDA libraries do the work.
TypeScript and JavaScript
lowThe only first-class browser language, also a fast-enough server runtime with a single-threaded event loop; TypeScript adds static types that vanish at runtime.
Specialized
Languages for one job.
SQL
lowThe declarative language for relational data: you state the result, the planner picks the algorithm; mastering indexes, joins and transactions beats any ORM.
CUDA and GPU languages
lowProgramming GPUs: thousands of lockstep threads, bound by memory bandwidth; libraries first, Triton for fused kernels, CUDA C++ for peak speed.
Erlang and Elixir
lowThe BEAM VM: millions of isolated, preemptively scheduled processes with supervisors that restart failures; unmatched for connection-heavy, always-on systems, weak at number crunching.
WebAssembly
lowA portable, sandboxed bytecode that browsers and server runtimes compile to near-native code; pick it for hot kernels, safe plugins and one codebase everywhere, not for DOM glue.