Unit 6. PROGRAMMING LANGUAGES

A programming language is an artificial language that can be used to control the behaviour of a machine, particularly a computer. A prominent purpose of programming languages is to provide instructions to a computer. Programming languages are defined by syntactic and semantic rules which describe their structure and meaning respectively. Programming languages are also used to facilitate communication about the task of organizing and manipulating information, and to express algorithms precisely. Some authors restrict the term "programming language" to those languages that can express all possible algorithms; sometimes the term "computer language" is used for more limited artificial languages.

The first programming languages predate the modern computer. The 19th century had "programmable" looms and player piano scrolls which implemented what are today recognized as examples of domain-specific programming languages. By the beginning of the twentieth century, punch cards encoded data and directed mechanical processing. In the 1940s, the first electrically powered digital computers were created. The first high-level programming language to be designed for a computer was Plankalkül, developed by Konrad Zuse between 1943 and 1945.

The computers of the early 1950s used machine language programs. First generation machine language programming was quickly superseded by a second generation of programming languages known as Assembly languages. Later in the 1950s, assembly language programming, which had evolved to include the use of macro instructions, was followed by the development of three higher-level programming languages: FORTRAN, LISP, and COBOL. Updated versions of all of these are still in general use, and each has strongly influenced the development of later languages. Thousands of different programming languages have been created so far, and new languages are created every year.

Machine Language refers to the "ones and zeroes" that digital processors use as instructions. Machine Language is painfully difficult to work with, and almost never worth the effort anymore. Instead programmers use the higher-level languages, which are either compiled or interpreted into machine language by the computer itself.

An assembly language (or assembler language) is a low-level programming language for a computer, or other programmable device, in which there is a very strong correspondence between the language and the architecture's machine code instructions. Each assembly language is specific to particular computer architecture, in contrast to most high-level programming languages, which are generally portable across multiple architectures.

Assembly language is converted into executable machine code by a utility program referred to as an assembler; the conversion process is referred to as assembly, or assembling the code.

Assembly language uses a mnemonic to represent each low-level machine instruction or operation. Typical operations require one or more operands in order to form a complete instruction, and most assemblers can therefore take labels, symbols and expressions as operands to represent addresses and other constants, freeing the programmer from tedious manual calculations. Macro assemblers include a macroinstruction facility so that assembly language text can be represented by a name, and that name can be used to insert the expanded text into other code. Many assemblers offer additional mechanisms to facilitate program development, to control the assembly process, and to aid debugging.

Pascal is a historically influential imperative and procedural programming language, designed in 1968–1969 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring. It was named in honor of the French mathematician and philosopher Blaise Pascal. Initially, Pascal was largely, but not exclusively, intended to teach students structured programming. A generation of students used Pascal as an introductory language in undergraduate courses.

Pascal has a strong typing on all objects, which means that one type of data cannot be converted or interpreted as another without explicit conversions. Pascal allows nested procedure definitions to any level of depth. It also allows most kinds of definitions and declarations inside subroutines (procedures and functions). This enables a very simple and coherent syntax where a complete program is syntactically nearly identical to a single procedure or function (except for the heading, which has one of these three keywords). Pascal defines a range of values and a set of operations that are permissible to be performed on variables of that type. The predefined types are: integer (integer or whole numbers), real (floating-point numbers), Boolean (TRUE or FALSE), char (a single character from an ordered character set), string (a group or "string" of characters). The range of values allowed for each (except boolean) is implementation defined. The programmer has the freedom to define other commonly used data types (e.g. byte, string, etc.) in terms of the predefined types using Pascal's type declaration facility.

While very popular in the 1980s and early 1990s, implementations of Pascal that closely followed Wirth's initial definition of the language were widely criticized for being unsuitable for use outside teaching. Nevertheless, Pascal continued to evolve. Variants of Pascal have also frequently been used for everything from research projects to games and embedded systems. There exist newer Pascal compilers which are widely used today.