A programming language is how you turn ideas into instructions a machine runs — each trades differently between speed, safety, and expressiveness. Start with Python, the friendliest on-ramp in computer science. More languages are on the way.
5Live now
137Programs
9Modules
0Coming soon
Start here
What is programming, really?
A computer only understands one thing: numbers that mean "add these", "store that", "jump there". Writing those numbers by hand is how it was done in the 1940s, and it was miserable. A programming language is the fix — you write something a human can read, and a translator turns it into those numbers for you.
Two kinds of translator, and it's the single biggest split between languages. A compiler translates the whole program up front, then you run the result — fast, but you wait to build. An interpreter translates line by line as it runs — instant feedback, slower execution.
So why hundreds of languages instead of one? Because every language is a set of trade-offs: run faster or write faster, catch mistakes early or stay flexible, control memory yourself or let the machine handle it. A language that's perfect for a game engine is a poor fit for a data analysis script. Pick by what you're building — that's what this page is for.
The three questions
How languages actually differ
Almost every language decision comes down to these three. The tags on each language below use this vocabulary.
When is it translated?
CompiledvsInterpreted
Compiled languages translate ahead of time and run at full machine speed. Interpreted ones translate as they go — you skip the build step and get instant feedback, at a runtime cost.
C++, Java, Go · Python, JavaScript, Ruby
When are type errors caught?
StaticvsDynamic
Static typing checks that you never put a string where a number belongs before the program runs — more upfront ceremony, fewer 3am surprises. Dynamic typing checks while running: faster to write, easier to break.
Manual memory means you decide exactly when every byte is freed — maximum control, and the origin of most famous security bugs. A garbage collector reclaims memory for you, costing unpredictable pauses.
C, C++ · Java, Python, Go, JavaScript
Side by side
The same program in four languages
A counter class, a loop, and a print — the same logic in each. Watch what changes: how types are declared, how blocks are marked, how much ceremony wraps the idea.
Python — indentation marks blocks, no type declarations
classCounter:
def__init__(self):
self.count = 0defbump(self):
self.count += 1return self.count
c = Counter()
for _ inrange(3):
print(c.bump())
JavaScript — braces mark blocks, still no types
classCounter {
constructor() {
this.count = 0;
}
bump() {
return ++this.count;
}
}
const c = newCounter();
for (let i = 0; i < 3; i++) {
console.log(c.bump());
}
Java — every type declared, everything inside a class
classCounter {
private int count = 0;
public intbump() {
return ++count;
}
}
public classMain {
public static voidmain(String[] args) {
Counter c = newCounter();
for (int i = 0; i < 3; i++) {
System.out.println(c.bump());
}
}
}
C++ — types declared, plus an explicit include and entry point
#include <iostream>
classCounter {
int count = 0;
public:
intbump() { return ++count; }
};
intmain() {
Counter c;
for (int i = 0; i < 3; i++) {
std::cout << c.bump() << std::endl;
}
}
Same idea, four dialects. Python says it in 11 lines with no type names; Java needs a class wrapper and a declared type on everything. Neither is "better" — the ceremony Java charges you buys errors caught before the program ever runs.
The atlas
Which language for which job
Grouped by what you want to build, not by family tree. Where TechForge teaches it, there's a link — where another section covers it, that link goes there instead.
Web frontend
Everything that runs inside the browser tab. One real language, plus the markup and styling it manipulates.
C++ speed with the memory bugs designed out — the compiler refuses to build code that could corrupt memory. Steep to learn, increasingly in Linux and Windows.
Context only
Mobile
Phone apps. Largely decided by which platform you're shipping to.
Kotlin
compiledstaticJVM
Google's official language for Android. Everything Java does, far less typing, and fully interoperable with it.
Context only
Swift
compiledstatic
Apple's language for iOS and macOS. Modern, safe by default, and the only first-class route to the App Store.
Context only
Dart
compiledstatic
The language behind Flutter — one codebase that ships to Android, iOS and the web. The main cross-platform contender.
Context only
Data & machine learning
Analysis, models, pipelines. One language dominates, with specialists around the edges.
The Unity language, and the most common on-ramp into game development — far gentler than C++.
Context only
Lua
interpreteddynamic
Tiny and embeddable — engines use it for gameplay scripting on top of a C++ core. Also Roblox and Neovim.
Context only
Your setup
Where the code actually gets written
Before the language choice, you need somewhere to type and a way to see what your program did. Two tools cover almost all of it.
An editor edits text and highlights syntax — fast, light, and language-agnostic. An IDE bundles that editor with everything around it: the compiler or interpreter wired up, a debugger, project navigation, refactoring, test running and version control. The difference is not power, it is how much is pre-connected.
The editor
VS Code is the default answer and works with every language on this page through extensions. Language-specific IDEs — IntelliJ for Java, PyCharm for Python, Visual Studio for C++ — trade breadth for knowing one ecosystem deeply.
Start with one and stay there a while →
The debugger
Set a breakpoint, run to it, then step line by line and read every variable as it changes. It replaces scattering print statements and then forgetting to remove them — and it is the fastest way to understand code you did not write.
Python: breakpoint() →
The terminal
Every language is ultimately run by a command. Learning to run, install and inspect from the shell means you are not stuck when the button in your IDE stops working — and it is how every build server on earth does it.
Linux basics in DevOps →
Pick your language
Compiled or interpreted, static or dynamic — every language is a different set of trade-offs. Five full tracks are live: Python, JavaScript, TypeScript, Java and C++.