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.
Browser: only JavaScript. Database: only SQL
The server admits almost anything: that is the real choice
Machine code for one platform is gibberish to another
Every extra platform is another version to build, test, and support
Session 1 · 1.6 Platforms and portability · 2/4Book ↗
Three ways to reach three platforms
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
Recompile per platform (C, C++, Rust): fastest; one build per platform. Apple's 2020 move to ARM forced every Mac app to be rebuilt
Compile once to bytecode (Java, Kotlin, C#): "write once, run anywhere" on a virtual machine
Interpret the source (Python, JavaScript): ship the file itself. JavaScript's interpreter is in every browser, so the web is the most portable platform ever
Session 1 · 1.6 Platforms and portability · 4/4Book ↗
Phones are the special case
Apple prefers Swift; Google prefers Kotlin. Both compiled for the phone
The best app on both platforms means writing it twice
Cross-platform frameworks (React Native, Flutter) produce both from one codebase, with some loss of polish
Electron does the same for desktop (Slack, VS Code, Discord)
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
Factor
Before AI
With AI assistance
Fit for purpose
Decisive
Unchanged
Popularity and maturity
High
Higher: AI quality tracks public code
Ecosystem
High
Unchanged to higher; verify packages
Speed and memory
Decisive in a few domains
Same domains; elsewhere lower
Platforms
High (duplicated work)
Lower for writing; same for testing
Your own familiarity
Often decisive
Lower, but you still review the code
Session 1 · 1.7 Making the decision in the age of AI · 2/2Book ↗
Three conclusions
Choose mainstream. Python, JavaScript/TypeScript, SQL; Java or C# when the enterprise requires; Swift and Kotlin for native mobile
Optimise for readability. When AI writes the code, the human's job is reading it
The language is rarely the risk. Products fail on requirements, data models, and security, not Python versus Go
This module uses HTML, CSS, JavaScript in the browser; Python on the server; SQL in the database.