A high-level language compiles code into assembly language, which is an abstraction, a human readable version of machine code, which is binary numbers.
The high-level language is designed to write software using a particular paradigm, a particular way of approaching a problem. The compiler determines what you want to do by analysing your logic (functions, loops, variables, etc) and converts that to assembly, which would be incredibly tedious to write yourself. A couple of lines of a high-level language could become hundreds, maybe thousands of assembly lines.
A new language is usually designed to do something fundamentally different or streamline a problem.
A modern example would be C/C++ vs Rust. The former requires the programmers to take control of basically all memory management, allocating and deallocating memory for variables. The latter is very controlling to the point where it might feel insufferably pedantic about what you can and can’t do, but you can almost guarantee there won’t be memory related issues. Both languages solve basically the same problems, but both do it in wildly different ways.
Think of it all like a woodworker wanting to join two bits of wood together to make some furniture. Nails and hammers could work. Maybe even metal brackets and screws. You might make a series of interlocking slots and glue them together. There are many ways to achieve a similar result and each have pros, cons and a more appropriate time and place to use them.
Latest Answers