Chapters List
- A Mental Model for Programming
- What Happens When a Program Runs
- Programming Languages
- Variables and Data
- Decisions: Conditional Logic
- Repetition: Loops
- Functions: Building Reusable Code
- Data Structures: Organizing Information
- Debugging: Fixing Programs
- How Programs Become Real Software
- Different Types of Programming
- Modern Programming and Software Development
programming
Programming Languages
Learn why programming languages exist and how major language categories differ.
In the previous chapter we saw how programs are executed by real machines.
That raises a natural question:
If CPUs run machine instructions, why do we need many high-level programming languages?
Why Programming Languages Exist
Machine code is fast for CPUs but painful for humans.
Programming languages provide abstractions that let people express logic clearly.
Languages help us:
- write less code
- reason about complex systems
- avoid low-level mistakes
- build software faster
Different languages optimize for different tradeoffs: performance, safety, simplicity, ecosystem, or developer speed.
High-Level vs Low-Level
A useful distinction is abstraction level.
| Type | Characteristics | Examples |
|---|---|---|
| Low-level | Closer to hardware, more manual control | Assembly, C |
| High-level | More abstraction, easier expression | Python, JavaScript, Go |
Low-level languages usually give tighter control over memory and hardware behavior.
High-level languages usually improve productivity and readability.
Neither is “better” in all contexts.
Compiled vs Interpreted
Another distinction is execution model.
graph TD
A[Source Code] --> B{Execution Model}
B --> C[Compiled]
B --> D[Interpreted]
C --> E[Binary or Bytecode]
D --> F[Runtime Interpreter]
In practice, modern runtimes are often hybrid (for example, bytecode + JIT compilation).
So think of this as a conceptual model, not a rigid rule.
Common Language Examples
Python
- Very readable syntax
- Popular for automation, scripting, data science, and AI
- Large ecosystem and fast prototyping
C
- Low-level control and strong performance
- Common in systems programming, embedded software, and infrastructure
- Manual memory management teaches deep computer fundamentals
JavaScript
- Core language of the web browser
- Also used on servers via Node.js
- Dominant for frontend and common in full-stack development
Go
- Designed for simplicity and concurrency
- Strong for backend services and cloud infrastructure
- Fast compilation and good tooling
Choosing a Language
Beginners often ask, “Which language should I learn first?”
A better question is: What kind of problems do I want to solve?
Language choice should consider:
- domain (web, systems, data, mobile)
- ecosystem and libraries
- team or industry standards
- performance and deployment constraints
The good news: core programming ideas transfer across languages.
Key Ideas to Remember
- Languages exist to make software development practical for humans.
- High-level and low-level languages serve different goals.
- Compiled and interpreted models describe different execution approaches.
- Python, C, JavaScript, and Go represent distinct tradeoff profiles.
- Problem domain should guide language choice.
→ Related resources: Programming Languages & Development Resources
What Comes Next
Now that we have language context, we can start writing useful logic.
The first building block is data:
how programs store values using variables and types.