All Topics  
High-level programming language

 

   Email Print
   Bookmark   Link






 

High-level programming language



 
 
In computing, a high-level programming language is a programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
 with strong abstraction
Abstraction (computer science)

In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time....
 from the details of the computer. In comparison to low-level programming language
Low-level programming language

In computer science, a low-level programming language is a programming language that provides little or no abstraction from a computer's instruction set architecture....
s, it may use natural language
Natural language

In the philosophy of language, a natural language is a language that is spoken, Sign language, or writing by humans for general-purpose communication, as distinguished from formal languages and from constructed languages....
 elements, be easier to use, or more portable
Porting

In computer science, porting is the process of adapting software so that an executable Computer program can be created for a computing environment that is different from the one for which it was originally designed ....
 across platforms. Such languages hide the details of CPU
Central processing unit

A central processing unit is an electronic circuit that can execute computer programs. This broad definition can easily be applied to many early computers that existed long before the term "CPU" ever came into widespread usage....
 operations such as memory access models and management of scope
Scope (programming)

In computer programming, scope is an enclosing context where values and expressions are associated. Various programming languages have various types of scopes....
.

This greater abstraction and hiding of details is generally intended to make the language user-friendly
Usability

Usability is a term used to denote the ease with which people can employ a particular tool or other human-made object in order to achieve a particular goal....
, as it includes concepts from the problem domain
Problem domain

A problem domain is the area of expertise or application that needs to be examined to solve a problem. A problem domain is simply looking at only the topics you are interested in, and excluding everything else....
 instead of those of the machine used.






Discussion
Ask a question about 'High-level programming language'
Start a new discussion about 'High-level programming language'
Answer questions from other users
Full Discussion Forum



Encyclopedia


In computing, a high-level programming language is a programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
 with strong abstraction
Abstraction (computer science)

In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time....
 from the details of the computer. In comparison to low-level programming language
Low-level programming language

In computer science, a low-level programming language is a programming language that provides little or no abstraction from a computer's instruction set architecture....
s, it may use natural language
Natural language

In the philosophy of language, a natural language is a language that is spoken, Sign language, or writing by humans for general-purpose communication, as distinguished from formal languages and from constructed languages....
 elements, be easier to use, or more portable
Porting

In computer science, porting is the process of adapting software so that an executable Computer program can be created for a computing environment that is different from the one for which it was originally designed ....
 across platforms. Such languages hide the details of CPU
Central processing unit

A central processing unit is an electronic circuit that can execute computer programs. This broad definition can easily be applied to many early computers that existed long before the term "CPU" ever came into widespread usage....
 operations such as memory access models and management of scope
Scope (programming)

In computer programming, scope is an enclosing context where values and expressions are associated. Various programming languages have various types of scopes....
.

This greater abstraction and hiding of details is generally intended to make the language user-friendly
Usability

Usability is a term used to denote the ease with which people can employ a particular tool or other human-made object in order to achieve a particular goal....
, as it includes concepts from the problem domain
Problem domain

A problem domain is the area of expertise or application that needs to be examined to solve a problem. A problem domain is simply looking at only the topics you are interested in, and excluding everything else....
 instead of those of the machine used. A high level language isolates the execution semantics of a computer architecture from the specification of the program, making the process of developing a program simpler and more understandable with respect to a low-level language. The amount of abstraction provided defines how 'high level' a programming language is.

Historical Note

The first high-level programming language was the "Plankalkül
Plankalkül

Plankalk?l is a computer language developed for engineering purposes by Konrad Zuse. It was the first high-level programming language von Neumann programming languages programming language to be designed for a computer and was designed between 1943 and 1945....
", created by Konrad Zuse
Konrad Zuse

Konrad Zuse was a Germany Civil engineering and computer pioneer. His greatest achievement was the world's first functional program-controlled Turing-complete computer, the Z3 , in 1941 ....
.

Features

The term "high-level language" does not imply that the language is superior to low-level programming language
Low-level programming language

In computer science, a low-level programming language is a programming language that provides little or no abstraction from a computer's instruction set architecture....
s - in fact, in terms of the depth of knowledge of how computers work required to productively program in a given language, the inverse may be true. Rather, "high-level language" refers to the higher level of abstraction from machine language. Rather than dealing with registers, memory addresses and call stacks, high-level languages deal with usability
Usability

Usability is a term used to denote the ease with which people can employ a particular tool or other human-made object in order to achieve a particular goal....
, thread
Thread

----A thread is a kind of thin yarn used for textiles and sewing. Thread may also refer to:*Thread , a cotton yarn measure, equal to 54 inches...
s, locks, object
Object

Object may refer to,* Object , a thing, being or concept** Entity, something that is tangible and within the grasp of the senses* Object , a sentence element, such as a direct object or an indirect object...
s, variables, arrays and complex arithmetic or boolean expressions. In addition, they have no opcodes that can directly compile the language into machine code, unlike low-level assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
. Other features such as string handling routines, object-oriented language features and file input/output may also be present.

Abstraction penalty

Stereotypically, high-level languages make complex programming simpler, while low-level languages tend to produce more efficient code. Abstraction penalty is the barrier preventing applying high level programming techniques in situations where computational resources are limited. High level programming features like more generic data structures, run-time interpretation and intermediate code files often result in slower execution speed, higher memory consumption and larger binary size . For this reason, code which needs to run particularly quickly and efficiently may be written in a lower-level language, even if a higher-level language would make the coding easier.

However, with the growing complexity of modern microprocessor
Microprocessor

A microprocessor incorporates most or all of the functions of a central processing unit on a single integrated circuit . The first microprocessors emerged in the early 1970s and were used for electronic calculators, using Binary-coded decimal arithmetic on 4-bit Word ....
 architectures, well-designed compilers for high-level languages frequently produce code comparable in efficiency to what most low-level programmers can produce by hand, and the higher abstraction may allow for more powerful techniques providing better overall results than their low-level counterparts in particular settings.

Relative meaning

The terms high-level and low-level are inherently relative. Some decades ago, the C language
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
, and similar languages, was most often considered "high-level", as it supported concepts such as expression evaluation, parameter
Parameter

In mathematics, statistics, and the mathematical sciences, a parameter is a quantity that defines certain characteristics of systems or function s....
ised recursive functions, and data types and structures, while assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
 was considered "low-level". Many programmers today might refer to C as low-level, as it lacks a large runtime
Runtime

In computer science, runtime or run time describes the operation of a computer program, the duration of its execution, from beginning to termination ....
-system (no garbage collection etc), basically supports only scalar operations, and provides direct memory addressing. It therefore readily blends with assembly language and the machine level of CPUs and microcontroller
Microcontroller

A microcontroller is a small computer on a single integrated circuit consisting of a relatively simple CPU combined with support functions such as a crystal oscillator, timers, watchdog, serial and analog I/O etc....
s.

Also note that assembly language may itself be regarded as a higher level (but often still one-to-one if used without macros) representation of machine code
Machine code

Machine code or machine language is a system of instructions and data executed directly by a computer's central processing unit. Machine code may be regarded as a primitive programming language or as the lowest-level representation of a compiled and/or assembly language computer program....
, as it supports concepts such as constants and (limited) expressions, sometimes even variables, procedures, and data structure
Data structure

A data structure in computer science is a way of storing data in a computer so that it can be used efficiently. It is an organization of mathematical and logical concepts of data....
s. Machine code
Machine code

Machine code or machine language is a system of instructions and data executed directly by a computer's central processing unit. Machine code may be regarded as a primitive programming language or as the lowest-level representation of a compiled and/or assembly language computer program....
, in its turn, is inherently at a slightly higher level than the microcode
Microcode

Microcode is a layer of lowest-level instructions involved in the implementation of machine code instructions in many computers and other processors; it resides in a special high-speed memory and translates machine instructions into sequences of detailed circuit-level operations....
 or micro-operation
Micro-operation

In computer central processing units, micro-operations, also known as a micro-ops or ?ops, are detailed low-level instructions used in some designs to implement complex machine instructions ....
s used internally in many processors. See .

Execution models

There are three models of execution for modern high-level languages: Interpreted :Interpreted language
Interpreted language

In computer programming an interpreted language is a programming language whose implementation often takes the form of an interpreter . Theoretically, any language may be compiler or interpreted, so this designation is applied purely because of common implementation practice and not some underlying property of a language....
s are read and then executed directly, with no compilation stage. Compiled :Compiled language
Compiled language

A compiled language is a programming language whose programming language implementations are typically compilers , and not interpreter s .The term is somewhat vague; in principle any language can be implemented with a compiler or with an interpreter....
s are transformed into an executable form before running. There are two types of compilation:
;Intermediate representations :When a language is compiled to an intermediate representation, that representation can be optimized or saved for later execution without the need to re-read the source file. When the intermediate representation is saved it is often represented as bytecode
Bytecode

Bytecode is a term which has been used to denote various forms of instruction sets designed for efficient execution by a software Interpreter as well as being suitable for further compilation into machine language....
.
;Machine code generation :Some compilers compile source code directly into machine code
Machine code

Machine code or machine language is a system of instructions and data executed directly by a computer's central processing unit. Machine code may be regarded as a primitive programming language or as the lowest-level representation of a compiled and/or assembly language computer program....
. Virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
s that execute bytecode directly or transform it further into machine code have blurred the once clear distinction between intermediate representations and truly compiled languages.
Translated :A language may be translated into a low-level programming language for which native code compilers are already widely available. The C programming language
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
 is a common target for such translators.

See also

  • Abstraction (computer science)
    Abstraction (computer science)

    In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time....
  • Generational list of programming languages
    Generational list of programming languages

    Here, a genealogy of programming languages is shown. Languages are categorized under the ancestor language with the strongest influence. Of course, any such categorization has a large arbitrary element, since programming languages often incorporate major ideas from multiple sources....
     -
  • Low-level programming language
    Low-level programming language

    In computer science, a low-level programming language is a programming language that provides little or no abstraction from a computer's instruction set architecture....
    s
  • Very high-level programming language
    Very high-level programming language

    A very high-level programming language is a programming language with a very high level of abstraction , used primarily as a professional programmer productivity tool....
    s
  • Categorical list of programming languages
    Categorical list of programming languages

    This is a list of programming languages grouped by category. Some languages are listed in multiple categories....


External links

  • - The WikiWikiWeb
    WikiWikiWeb

    WikiWikiWeb was the first wiki application ever written. It was developed in 1994 by Ward Cunningham in order to make the exchange of ideas between programmers easier and was based on the ideas developed in HyperCard stacks that he built in the late 1980s....
    's article on high-level programming languages