History of Programming Language
History of Programming Language
Before 1940
The first programming languages predate the modern computer. At first, the languages were codes. The Jacquard loom, invented in 1801, used holes in punched cards to represent sewing loom arm movements in order to generate decorative patterns automatically. During a nine-month period in 1842-1843, Ada Lovelace translated the memoir of Italian mathematician Luigi Menabrea about Charles Babbage's newest proposed machine, the Analytical Engine. With the article, she appended a set of notes which specified in complete detail a method for calculating Bernoulli numbers with the Engine, recognized by some historians as the world's first computer program.
Before 1940
Herman Hollerith realized that he could encode information on punch cards when he observed that train conductors encode the appearance of the ticket holders on the train tickets using the position of punched holes on the tickets. Hollerith then encoded the 1890 census data on punch cards. The first computer codes were specialized for their applications. In the first decades of the 20th century, numerical calculations were based on decimal numbers. Eventually it was realized that logic could be represented with numbers, not only with words. The Turing machine was an abstraction of the operation of a tape-marking machine, for example, in use at the telephone companies.
Before 1940
Turing machines set the basis for storage of programs as data in the von Neumann architecture of computers by representing a machine through a finite number.
The 1940s
In the 1940s, the first recognizably modern, electrically powered computers were created. The limited speed and memory capacity forced programmers to write hand tuned assembly language programs. It was soon discovered that programming in assembly language required a great deal of intellectual effort and was error-prone.
The 1940s
In 1948, Konrad Zuse published a paper about his programming language Plankalkl. However, it was not implemented in his lifetime and his original contributions were isolated from other developments.
Current trends
Programming language evolution continues, in both industry and research. Some of the current trends include:
Constructs to support concurrent and distributed programming. Mechanisms for adding security and reliability verification to the language: extended static checking, information flow control, static thread safety. Alternative mechanisms for modularity: mixins, delegates, aspects. Component-oriented software development. Metaprogramming, reflection or access to the abstract syntax tree Increased emphasis on distribution and mobility. Integration with databases, including XML and relational databases. Support for Unicode so that source code (program text) is not restricted to those characters contained in the ASCII character set; allowing, for example, use of non-Latin-based scripts or extended punctuation. XML for graphical interface (XUL, XAML).