Session 1 Slides
Session 1 · 75 minutes · slides

Choosing a Programming Language

What software is written in, and how the choice is made

  1. 1.1 What a programming language is
  2. 1.2 Fit for purpose
  3. 1.3 Popularity, maturity, and community
  4. 1.4 The ecosystem: packages and libraries
  5. 1.5 Speed and memory
  6. 1.6 Platforms and portability
  7. 1.7 Making the decision in the age of AI

Arrow keys or space to move, F for full screen. Every slide has a Book button back to the full text.

Session 1 · 1.1 What a programming language is · 1/3Book ↗

From human ideas to machine instructions

Session 1 · 1.1 What a programming language is · 2/3Book ↗

Two ways to translate

Session 1 · 1.1 What a programming language is · 3/3Book ↗

Language, library, framework

In the age of AI: syntax is the part AI has fully absorbed. The trade-offs below have not gone away.
Session 1 · 1.2 Fit for purpose · 1/3Book ↗

Was the language built for the job?

Session 1 · 1.2 Fit for purpose · 2/3Book ↗

Where each language lives

Browser HTML · CSS (structure, style) JavaScript · TypeScript (logic) only JavaScript can run here Phone Swift (iPhone) · Kotlin (Android) Dart/Flutter, React Native (both) Device (embedded) C · C++ · Rust tiny processors, no room for waste Server (back end) Python · JavaScript/Node · TypeScript Java · C# · Go · Ruby · PHP Rust (when speed is critical) the widest choice; any of these works Database SQL, and only SQL Data & AI work Python · R · SQL Where the code runs decides which languages are even possible.
Where each language lives. Some places admit only one language (the browser, the database). The server admits almost any, which is why the back-end choice is the one most worth thinking about.
Session 1 · 1.2 Fit for purpose · 3/3Book ↗

A product is never one language

In the age of AI: fit for purpose is unchanged. Using several languages in one product is cheaper than it was.
Session 1 · 1.3 Popularity, maturity, and community · 1/2Book ↗

A language is a community, not just a notation

Session 1 · 1.3 Popularity, maturity, and community · 2/2Book ↗

The mainstream, and the caution about the new

In the age of AI: popularity matters MORE. AI learns from public code, so mainstream, stable languages get the best help.
Session 1 · 1.4 The ecosystem: packages and libraries · 1/2Book ↗

Nobody writes it from scratch

Session 1 · 1.4 The ecosystem: packages and libraries · 2/2Book ↗

The ecosystem steers the choice

If the product is mostly about…The ecosystem pulls toward
AI, machine learning, dataPython
Rich interactive web front endJavaScript / TypeScript
Conventional web back endPython, JavaScript, Ruby, Java, C#, Go
Enterprise integrationJava, C#
GamesC# (Unity), C++ (Unreal)
Native phone appSwift / Kotlin
In the age of AI: ecosystems matter as much as ever. Watch for hallucinated packages that do not exist.
Session 1 · 1.5 Speed and memory · 1/2Book ↗

The fastest language is usually the wrong question

Session 1 · 1.5 Speed and memory · 2/2Book ↗

When performance genuinely decides

SituationWhyTypical choice
Embedded devices, wearablesKilobytes of memory, a batteryC, C++, Rust
Games, video16 ms per frameC++, C#, Rust
Trading, real-time controlMicroseconds are money or safetyC++, Rust
Very large services10× efficiency = thousands of serversGo, Rust, Java
Mobile appsBattery and memory limitsSwift, Kotlin
Build in the productive language, measure, then rewrite only the proven hot spot. In the age of AI that last step is cheap.
Session 1 · 1.6 Platforms and portability · 1/4Book ↗

A platform is processor + operating system

Session 1 · 1.6 Platforms and portability · 2/4Book ↗

Three ways to reach three platforms

source code what ships each platform 1. Compile per platform (C, C++, Rust, Go, Swift) app.cpp app.exe (Windows, x86) app (macOS, ARM) app (Linux, x86) 3 compiles Windows PC Mac Linux server Fastest programs; one build (and one round of testing) per platform 2. Compile once to a virtual machine (Java, Kotlin, C#) App.java App.class (bytecode) 1 compile Windows + JVM Mac + JVM Linux + JVM "Write once, run anywhere": the same file runs wherever the virtual machine is installed 3. Interpret the source directly (Python, JavaScript, Ruby) app.py app.py, unchanged no compile Windows + Python Mac + Python Linux + Python
Three ways to reach three platforms. Compiled languages produce a separate program per platform. Java-style languages compile once to an intermediate form that a virtual machine runs anywhere. Interpreted languages ship the source itself. Each step down trades speed for portability.
Session 1 · 1.6 Platforms and portability · 3/4Book ↗

Recompile, virtual machine, or interpret

Session 1 · 1.6 Platforms and portability · 4/4Book ↗

Phones are the special case

In the age of AI: porting code between platforms is cheaper. Testing on every real device is not.
Session 1 · 1.7 Making the decision in the age of AI · 1/2Book ↗

How each factor shifts

FactorBefore AIWith AI assistance
Fit for purposeDecisiveUnchanged
Popularity and maturityHighHigher: AI quality tracks public code
EcosystemHighUnchanged to higher; verify packages
Speed and memoryDecisive in a few domainsSame domains; elsewhere lower
PlatformsHigh (duplicated work)Lower for writing; same for testing
Your own familiarityOften decisiveLower, but you still review the code
Session 1 · 1.7 Making the decision in the age of AI · 2/2Book ↗

Three conclusions

This module uses HTML, CSS, JavaScript in the browser; Python on the server; SQL in the database.
1 / 1Choosing a Programming Language