Lably
Skip to content

High-level programming language

Programming language with hardware abstraction

  • 8 min read
  • 4 chapters

Learn it on Lably

High-level refers to a level of abstraction from the hardware details of a processor inherent in machine and assembly code. Rather than dealing with registers, memory addresses, and call stacks, high-level languages deal with variables, arrays, objects, arithmetic and Boolean expressions, functions, loops, threads, locks, and other computer science abstractions, intended to facilitate correctness and maintainability. Unlike low-level assembly languages, high-level languages have few, if any, language elements that translate directly to a machine's native opcodes. Other features, such as string handling, object-oriented programming features, and file input/output, may also be provided. A high-level language allows for source code that is detached and separated from the machine details. That is, unlike low-level languages like assembly and machine code, high-level language code may result in data movements without the programmer's knowledge. Some control of what instructions to execute is handed to the compiler.

Niklaus Wirth, who designed Pascal, wrote in 2008 that high-level language was “a poorly understood buzzword” and contrasted C with high-level programming languages. High-level programming languages were also referred to by the later buzzword third generation programming languages (3GLs) from around 1966.

History

In the early decades of electronic computing, programs were usually written in machine code or assembly language, which closely reflected the instruction set of a particular machine. High-level programming languages developed as a way to express algorithms in forms closer to mathematics, business rules, or human-readable procedure, while a compiler or interpreter translated the program into machine-executable instructions. In the 1950s and 1960s, the term autocode was often used for compiler-based high-level languages; examples included early Autocode systems as well as languages such as Fortran and COBOL.

The earliest high-level language designed for a computer is generally identified as Plankalkül, developed by Konrad Zuse in the 1940s. It included advanced features such as structured data, assignment, conditional execution, iteration, and subroutines, but it was not implemented during Zuse's lifetime. Because Zuse worked in wartime and postwar Germany, his work remained largely isolated from the main line of language development, though it influenced Heinz Rutishauser's Superplan and, to a lesser extent, early work associated with ALGOL.

The first high-level language to achieve wide practical adoption was Fortran, developed at IBM in the 1950s under John Backus. Fortran was aimed at scientific and numerical computing, allowing programmers to write algebraic formulas and loops without manually managing every machine instruction. Its success helped demonstrate that compiled high-level languages could produce efficient programs while greatly reducing programming effort.

Several other influential languages appeared around the same period. Lisp, created by John McCarthy, introduced symbolic list processing and made ideas from the lambda calculus central to practical programming-language design. COBOL was designed for business data processing and became associated with English-like syntax, records, and file-oriented commercial applications. The ALGOL family, especially ALGOL 60, influenced later language design through block structure, nested procedures, recursion, lexical scoping, a distinction between call by value and call by name, and the use of Backus–Naur form to define syntax formally.

During the 1960s and 1970s, high-level languages diversified into distinct programming styles. BASIC made interactive programming accessible in time-sharing and educational environments, while Pascal emphasized structured programming and teaching. C combined high-level control structures with comparatively low-level access to memory and hardware, making it influential in operating systems and system software. Simula introduced the class-and-object model that became central to object-oriented programming, and Smalltalk later developed object-oriented programming around message passing and a highly interactive programming environment.

By the 1980s and 1990s, high-level language development increasingly reflected large-scale software engineering, graphical computing, and the growth of the Internet. Ada was designed for large, long-lived systems, particularly in defense and embedded contexts. C++ extended C with classes and other abstraction mechanisms, allowing object-oriented and generic programming while retaining system-programming abilities. Scripting and rapid-application languages such as Perl, Python, Ruby, and PHP emphasized programmer productivity and text, web, or application scripting. Java promoted portable bytecode execution through the Java virtual machine, while JavaScript became the standard high-level scripting language of web browsers.

In the 21st century, newer high-level languages have often focused on safer abstraction, concurrency, large codebases, and interoperability with existing platforms. C# developed alongside the .NET platform, Scala and F# blended object-oriented and functional programming, and Kotlin targeted interoperability with Java while adding concise syntax and null-safety features. Go was designed for simple syntax, fast compilation, and built-in concurrency support. Rust emphasized memory safety and thread safety without a garbage collector, while Swift was introduced as a modern language for Apple-platform software development. TypeScript extended JavaScript with static typing for large-scale JavaScript applications.

Very high-level programming language

A very high-level programming language (VHLL) is a high-level programming language that supports operations on sets and emphasises data flow over control flow. Conventions employed by VHLLs "allow expression only of the minimum necessary functional operations on data, not the internal structure of the data."

Common features of VHLLs include associative referencing, aggregate operators, elimination of arbitrary sequencing, nondeterministic programming and parallelism, as well as pattern directed structures (for example, Markov algorithm, patterns in SNOBOL and pattern matching).

VHLLs are usually domain-specific languages, limited to a very specific application, purpose, or type of task, and they are often scripting languages (especially extension languages), controlling a specific environment. For this reason, very high-level programming languages are often referred to as goal-oriented programming languages.

Early notable VHLLs include APL, SETL and BDL. Such "very high-level" languages have now become fairly standard. The approach is considered to be an ancestor of object-oriented programming. Modern high-level programming languages used for scripting, such as Perl, Python, PHP, Ruby, and Visual Basic can be classed as VHLLs.

Sign in to keep reading

3 more chapters are free with a Lably account.

More in Computing and communication