What do low-level and high-level mean in programming?

NicolasBrondinBernard

Author
@NicolasBrondinBernard

You've surely already heard these terms, so here's their detailed meaning!

Article published on 15/09/2022, last updated on 10/08/2026

When you start discovering programming, the concepts and the different languages that exist, you quickly find yourself talking about "low-level" languages and "high-level" languages.

But what does that actually mean?

Contrary to what you might think, "level" doesn't refer to the level of skill required—it's actually rather the opposite...

A low-level language means it is a language that is very close to the level of electronic components, while a high-level language is a language more easily understood by humans (developers), and it will need to be transformed to be understood by the machine.

In English, we talk about "low-level" and "high-level".

If we take the most extreme examples, the lowest-level language possible is binary, while one of the highest-level languages is JavaScript (but there are dozens of them).

Binary will be interpreted directly by the electronic components (0V or 5V for example), whereas to be interpreted by the components, JavaScript must first be interpreted by the browser, then by the OS, then by the BIOS, and finally by the components.

We can see that JavaScript is at the very top of the execution/interpretation stack, which is why we call it "high-level"!

Why use a high-level language?

Since a low-level language will be directly understood by the machine, it will be executed much more efficiently, and conversely, the higher-level a language is, the more it will potentially lose in efficiency...

For example, JavaScript is executed about 30 times slower than the same code in C.

So one might wonder: but why not code everything in a low-level language?

Because being at the very top of the stack isn't always a bad thing. Far from it! Code written in a high-level language is code that will be compiled toward a language closer to the machine, so depending on the compilation methods (specific to each language), you'll end up with more or less performance.

But high-level languages, since they rely on other existing systems and tools, can be ported almost anywhere, to any machine, whereas a very low-level language will need to be modified if the hardware changes.

Example:

  • A program written in binary (or assembly) will need to change as soon as the processor changes
  • A program written in C will need to change or be recompiled if the operating system changes
  • A JavaScript program can run on Linux, Windows, or MacOS

How to choose?

The choice of one language over another should only be made based on the project, according to constraints, usage, etc...

If you need to control electronics directly (such as with Arduino, for example), then it will be a low-level language (C/C++). Same thing if you're working at the operating system level and need high performance (C/C++/Rust), or in video games, data processing, etc... then the same applies (with C#, for example).

If, on the other hand, your application needs to run on hundreds of different machines, on different OSs, then a somewhat higher-level language will be used (Java, Python, JavaScript,...).

Of course, these are just examples to simplify understanding—the choice is sometimes subject to constraints far more complex than those mentioned here!


Vishnu Mohanan sur Unsplash

Finished reading this article?
Our complete courses
Take it to the next level with our courses!

Complete courses, exercises and certificates to really learn programming!

4.8 average rating

Comments (0)

to leave a comment

No comments yet