The programming language landscape

~13 min

“Why don’t we just rewrite it in Python?”

Somewhere, a technical team is probably having a version of this debate.

To follow the conversation, you do not need to know how to program in every language. You need a basic map: which languages you are likely to hear about, what they are commonly used for, and why a company cannot casually replace one with another.

Programming languages overlap considerably. Most can be used for more than one purpose, and the same type of product can often be built with several different languages.

The categories in this lesson are therefore tendencies, not strict rules.

Python: the approachable generalist

Concept · lights on your mapPythonA readable general-purpose language, especially prominent in data analysis, AI and machine learning, automation, and backends. Its huge collection of libraries is why it dominates data and AI work, and why this module used it for examples. is the language used in the code examples throughout this module.

It is known for syntax that is relatively readable and concise, which makes it popular with beginners as well as experienced engineers.

Python is especially common in:

  • Data analysis
  • Artificial intelligence and machine learning
  • Automation and scripts
  • Scientific computing
  • Backend applications

Its large collection of libraries is one reason it has become so prominent in data and AI work. Engineers can use existing tools instead of implementing every mathematical or data-processing capability themselves.

Python is not always the fastest language at executing intensive work. However, many Python libraries perform their most demanding operations using faster code underneath, allowing developers to combine Python’s readability with high-performance tools.

A useful association is: Python is a readable general-purpose language that is especially prominent in data, automation, backend development, and AI.

JavaScript: the language of interactive web pages

Concept · lights on your mapJavaScriptThe standard language for making webpages interactive inside a browser and, via runtimes like Node.js, a server-side language too. HTML structures a page, CSS styles it, JavaScript drives much of its behavior. is the standard programming language used to make webpages interactive inside a browser.

HTML provides the structure of a webpage, CSS controls its appearance, and JavaScript controls much of its behavior, so when a menu opens, a form checks your input, or a page updates without fully reloading, JavaScript may be involved.

JavaScript can also run outside the browser through environments such as Node.js, a runtime that allows developers to use JavaScript for backend services, command-line tools, and other server-side software.

This means a development team can use JavaScript in both the frontend and backend of an application — one language covering both ends.

A useful association is: JavaScript is the central language of interactive web development and can also run on servers through Node.js.

TypeScript: JavaScript with additional safeguards

TypeScript is closely related to JavaScript and has become extremely common in modern web development. It adds a system for describing the expected types of values in a program, which can help teams catch certain mistakes before the code runs.

For example, it can warn that a function expects a number but receives a string.

TypeScript code is translated into JavaScript before it runs because browsers and JavaScript runtimes ultimately execute JavaScript.

You do not need to understand its syntax. The useful association is: TypeScript is JavaScript with additional type information that helps larger teams manage complex code.

When engineers say that a frontend is “written in TypeScript,” it still belongs to the broader JavaScript ecosystem — the same family, wearing extra safeguards.

Java: the enterprise workhorse

Concept · lights on your mapJavaA mature general-purpose language known for stability, tooling, and a large ecosystem. Common in large backend systems, banking, enterprise software, and existing Android apps. No close technical relation to JavaScript, despite the name. is a widely used general-purpose language known for stability, mature tools, and a large ecosystem.

It is especially common in:

  • Large backend systems
  • Banking and financial software
  • Enterprise applications
  • Android applications, particularly older or existing ones
  • Systems that need to run reliably for many years

Many large organizations have substantial Java codebases developed and maintained over decades.

Java tends to require more explicit structure than Python, which can make its code feel more verbose, but that structure can also help large teams organize complicated systems.

Despite their similar names, Java and JavaScript are different languages with different histories, ecosystems, and common uses. The shared name does not signal a close technical relationship.

A useful association is: Java is a mature language frequently used for large, long-lived backend and enterprise systems.

C and C++: control and performance

Concept · lights on your mapC/C++Languages that give relatively direct control over memory and hardware. Operating systems, game engines, browsers, embedded devices, and databases are built with them. Fast and efficient, with more opportunity for dangerous memory-related mistakes. give programmers relatively direct control over how a computer uses memory and hardware resources.

They are commonly found in:

  • Operating systems
  • Game engines
  • Browsers
  • Embedded devices
  • Databases
  • Performance-intensive software
  • Foundational systems used by other languages

They are not literally the lowest-level languages available, since assembly language and machine code sit closer to the CPU, but C and C++ expose more hardware-level detail than languages such as Python or JavaScript.

That control can produce extremely fast and efficient software, but it also gives programmers more opportunities to make dangerous memory-related mistakes. Power cuts both ways.

A useful association is: C and C++ are used when performance, efficiency, and hardware-level control matter greatly.

Go: software for servers and infrastructure

Concept · lights on your mapGoGoogle’s language, also called Golang: relatively simple, fast to compile, and suited to software that handles many activities at once (backend services, networking, cloud infrastructure). Docker and Kubernetes contain substantial Go code., also called Golang, was created at Google and was designed to be relatively simple, fast to compile, and well suited to software that handles many activities at the same time.

Go is commonly used for:

  • Backend services
  • Networking software
  • Cloud infrastructure
  • Command-line tools
  • Distributed systems

Major infrastructure technologies such as Docker and Kubernetes include substantial amounts of Go code.

That does not mean Go is used only for infrastructure or only inside Google. It is a general-purpose language used by many companies.

A useful association is: Go is a relatively simple, efficient language commonly used for backend and cloud-infrastructure software.

Ruby: a language associated with rapid web development

Concept · lights on your mapRubyA general-purpose language known for expressive, human-friendly syntax, made prominent by the Ruby on Rails web framework. GitHub and Shopify built major parts of their early products on it, and large Ruby systems still run today. is a general-purpose language known for expressive, human-friendly syntax.

It became especially prominent through Ruby on Rails, a web framework that helped teams build complete web applications quickly.

Companies such as GitHub and Shopify built major parts of their early products using Ruby and Rails, and substantial Ruby systems continue to operate today.

Ruby may receive less attention in new projects than it did during the height of the Rails startup era, but it remains part of many successful codebases.

A useful association is: Ruby is strongly associated with productive web development and the rise of modern startup software.

Swift and Kotlin: modern mobile development

Concept · lights on your mapSwiftApple’s primary modern language for building applications across iPhone, iPad, Mac, Apple Watch, and Apple TV. If a company has “an iOS team,” they are likely writing Swift. is Apple’s primary modern language for building applications across platforms such as the iPhone, iPad, Mac, Apple Watch, and Apple TV.

Concept · lights on your mapKotlinA preferred modern language for Android development. Android applications can also be written in Java, and many existing Android codebases contain both languages. is a preferred modern language for Android development, though Android applications can also be written in Java, and many existing Android codebases contain both languages.

Companies building separate native iOS and Android applications often have different teams and codebases for each platform, and a feature with the same product requirements may need to be implemented once in Swift and again in Kotlin or Java.

This does not always mean every mobile feature is built twice, since some companies use cross-platform technologies that share code between iOS and Android, but separate native development remains common.

A useful association is: Swift is central to Apple-platform development, while Kotlin is a major language for modern Android development.

Interactive — sort them

A feature needs building. Based on the map, where does each language most likely show up?

Tap an item to pick it up.

Other languages worth recognizing

You do not need to memorize every language. But a few additional names may appear in technical conversations.

Rust is a systems language designed to provide high performance while preventing many memory-related errors common in lower-level programming, and it is increasingly used in infrastructure, security-sensitive software, and performance-intensive systems.

C# is a language created by Microsoft and commonly used for enterprise software, backend systems, Windows applications, and games built with the Unity engine.

PHP is a language used heavily in web development, and large platforms and content-management systems, including WordPress, rely on it.

These names belong on your map. You do not need detailed knowledge of them at this stage.

Compiled, interpreted, and runtime

You may hear engineers describe a language as compiled or interpreted.

A Recognition — just know it existscompilerA tool that translates source code into another form before it runs: machine code, or an intermediate representation intended for another system. Compiled languages are translated before execution. translates source code into another form before it runs, and that output might be machine code or an intermediate representation intended for another system.

An Recognition — just know it existsinterpreterA tool that executes or evaluates code with translation occurring as the program runs. Interpreted languages are translated while executing. executes or evaluates code with translation occurring as the program runs.

A Recognition — just know it existsruntimeThe supporting environment that helps code execute: memory management, built-in capabilities, and connections to the operating system. Node.js, for example, is a JavaScript runtime. is the supporting environment that helps code execute, and it may provide memory management, built-in capabilities, and connections to the operating system.

Node.js, for example, is a JavaScript runtime.

The simple distinction is often presented as:

  • Compiled languages are translated before execution.
  • Interpreted languages are translated while executing.

Real systems are more complicated. Many languages combine compilation, interpretation, and just-in-time compilation, which translates parts of a program while it is running.

You only need to recognize the vocabulary and understand that source code must pass through supporting tools or environments before the CPU can execute it.

Why teams choose different languages

A company does not choose a language based only on which syntax engineers personally prefer.

The decision may depend on:

  • What the product needs to do
  • Required speed and performance
  • Existing libraries and frameworks
  • Security and reliability needs
  • The skills of the current team
  • The availability of engineers who know the language
  • Compatibility with existing systems
  • The tools and cloud services the company uses
  • How long the software is expected to operate

Two teams can reasonably choose different languages for similar products because they face different constraints. Both can be right.

Why companies rarely rewrite everything

Return to the original suggestion: “Why don’t we rewrite it in Python?”

A language is not merely a different way to express the same instructions. It comes with an entire ecosystem:

  • Libraries and frameworks
  • Development tools
  • Testing systems
  • Hiring pools
  • Operational knowledge
  • Years of existing source code
  • Integrations with other systems
  • Lessons the team has learned from running the software

Rewriting a working system means rebuilding much more than its visible features. The team must reproduce existing behavior, handle every edge case, migrate data, reconnect integrations, retrain engineers, and operate the old and new systems during the transition.

The old system also continues changing while the replacement is being built, so a rewrite can take years while introducing new risks and delivering little immediate value to users.

Companies sometimes do replace languages or rebuild systems when the existing technology creates serious limitations, but more often they migrate one component at a time rather than rewriting everything at once.

The real question is not: which language is best?

It is: which language and ecosystem best fit this problem, this team, and the systems that already exist?

The mental model to remember

Python is a readable general-purpose language especially prominent in data, automation, backend development, and AI.

JavaScript is the primary programming language of interactive webpages and can also run on servers through Node.js.

TypeScript adds type information and additional safeguards to the JavaScript ecosystem.

Java is widely used for large, mature backend and enterprise systems.

C and C++ provide performance and lower-level control for operating systems, games, embedded devices, and other demanding software.

Go is common in backend services and cloud infrastructure.

Ruby is strongly associated with productive web development and established startup codebases.

Swift is central to Apple-platform development, while Kotlin is a major modern language for Android.

Languages are not limited to one purpose, and there is rarely a universally best choice. Selecting a language means committing to its surrounding ecosystem, which is why replacing one is much more difficult than changing its syntax.

Check — then the lesson continues

A startup's app is in Ruby. A new engineer proposes rewriting it in Go “because Go is faster.” The CTO says no almost instantly. What's the CTO most likely weighing?

▼ answer the check to continue ▼