Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Choosing Your Kitchen: A Guide to Programming Languages

You're about to learn the universal rules of cooking—the core concepts like variables, logic, and loops that are the same no matter what kitchen you're in.

But before you start, you need to pick your primary kitchen.

Think of programming languages as specialized kitchens. A bakery is optimized for making bread, while a sushi bar is designed for preparing fish. You can probably make a sandwich in both, but each one is built to excel at a specific kind of task.

This guide will help you understand the different types of kitchens so you can choose a focus for the interactive examples that follow.

The most important advice: Your first choice is not a final commitment. Learning your first language is like learning to use a chef's knife. Once you master that fundamental skill, picking up a different knife—or moving to a different kitchen—is much, much easier.

Kitchens Grouped by Purpose

  • The Web Development Kitchen (What the Customer Sees): This is the world of JavaScript, used to build the interactive websites you use every day.
  • The Backend & Cloud Kitchen (The Engine Room): This is the "behind-the-scenes" work that powers everything. Top choices here include Go (for speed), Python (for versatility), C# (for enterprise applications), and PHP (a classic workhorse of the web).
  • The Systems & Infrastructure Kitchen (The Forge): This is where the kitchen equipment itself is built. Rust is the modern choice for building ultra-fast and safe foundational software like game engines and operating systems.

Your First Choice: Just Start Cooking

You now have a map of the different kitchens available. For this tutorial, the interactive examples will work best with Python and JavaScript, but the concepts apply to all of them.

To avoid getting stuck, here is our simple recommendation:

  • If you are a complete beginner and not sure what to build, start with Python. Its clean syntax and gentle learning curve make it the best all-around language for learning the fundamentals.
  • If you know you want to build websites, start with JavaScript. You can see your results come to life in the browser instantly.

Pick one that seems interesting. The most important thing you can do right now is to just start. You can always explore other kitchens later.

Want to go deeper? Learn about the different types of kitchens.

Here is a more detailed breakdown of what makes these languages different. This is extra information for the curious—you don't need to memorize it to continue with the tutorial!

Three Key Characteristics to Consider

Beyond their main purpose, languages also have different "personalities."

1. How is the recipe followed? (Interpreted vs. Compiled)

  • Interpreted (A Chef Translating as They Go): An interpreter reads your code one line at a time and runs it immediately. It’s great for learning and getting instant feedback. (e.g., Python, JavaScript)
  • Compiled (Translating the Whole Cookbook First): A compiler translates your entire recipe into a super-optimized format before it's run. This means incredible performance and the ability to catch many errors upfront. (e.g., Rust, Go, C#)

2. How much help do I want from the kitchen inspector? (Type Safety)

  • Strict Inspectors (Statically Typed): These languages check all your "ingredients" before you start cooking, preventing many common errors. (e.g., Rust, Go, C#)
  • Relaxed Inspectors (Dynamically Typed): These languages trust you to use the right ingredients and only check for errors as the code is running. (e.g., Python, JavaScript)

3. How close to the stove's wiring do I want to get? (Level of Abstraction)

  • High-Level (Simple Buttons): These languages hide the complex details and give you simple commands to get work done. (e.g., Python, JavaScript)
  • Low-Level (Wiring and Coils): These languages give you fine-grained control over the computer's resources for maximum performance. (e.g., Rust)

More detail in language guide.