From LQWiki
HLL stands for High Level Language. A HLL is a language where a program is written in "English", and is compiled into binary before being run. It is more abstract than assembly or machine code. It is less abstract than interpreted languages, which are not compiled, but run through an interpreter. Between HLLs and interperted languages are languages, like Java, which are compiled to produce bytecode.
In theory, HLLs are less optimized than assembly or machine code. In practice, HLLs are more optimized on average, because compilers don't make the same mistakes as humans. According to the 90% rule, 10% of a program generally take 90% of the programming time, performance gains can be made by writing the program in a HLL, compiling it, and then handhacking that 10% in assembly or even machine code. However, finding that 10% is often nontrivial.
In addition, as computers get more powerful, runtime becomes less important, relative to coding time and code maintainability. (See Real Programmer, Story of Mel.)
This trend is shown in the history of HLLs.
The first HLL to see widespread use was Fortran. It was not designed as a general-purpose language. Rather, it was used to quickly bang out scientific number-crunching applications. "Real" programming, such as operating systems still used assembly.
Early in its history, Unix was ported from assembler to C, allowing it to be ported to any architecture which had a C compiler. (After taking care of some bugs, see NUXI problem.) This gave Unix an advantage over other operating systems, which were still written in assembly, and therefore locked to a particular architecture. This portability is largely responsible for the influence Unix has to this day.
C is the most influential programming language of all time. It is still in widespread use, but is starting to show its age, especially in the area of memory management.
Today, "real" programming is done in HLLs. Handhacking is reserved for optimization in cases where speed is of the essence, such as kernels and device drivers. Bytecode Java is increasingly being used for use in applications, for ease of portability. Interpreted languages are used for web-based applications (such as this wiki), but are also seeing use in more general-purpose uses.
High Level Languages
This article is based, in whole or in part, on entry or entries in the Jargon File.

This page is available under a