Blog
Development of Computer Languages
By Chris Tipping · 7 April 2011 · 5 min read
“Why a Babel of computer languages?”
The history of programming languages is very interesting. The following post discusses the evolution of programming and why there have been paradigm shifts in languages over time.Electronic computers were introduced in the late 1930’s.
When the Von Neumann Architecture was introduced computers were able to store instructions. The computers were programmed with a language. The first of these languages was machine code and following that was assembly code, these were both very low level languages that needed to be developed using binary (0’s and 1’s). In assembly language the code is written with mnemonic codes that would represent the basic machine-language instructions of a computer. The instructions can be interpreted by an assembler to produce a computer program in machine language; the assembler was the main difference between machine code and assembly code. These languages at the time were used by highly intelligent scientists and mathematicians; however this was due to change.The 1950’s and 1960’s saw the development of programming languages.
These would move away from first and second level languages. The first of these languages was to be developed by John Backus. It was called FORTRAN which was and still is classed as a high-level language. The language was seen as a turning point in programming languages. The compiler technology the software equivalent to the transistor. The advantage to this language is that it opened up programming to a wider audience, allowing the translation of algebraic symbols through the compiler. As it was easier to use than assembly code it would reduce the amount of programming time needed, allowing for faster development. FORTRAN was procedural, the key point for procedural programming is identification and articulation of the process or steps that must be followed. This made the language imperative and the steps were to become known as procedures and involved basic elements: • looping • conditional statements • logical constructs • functions1958 saw the introduction of LISP (LISt Processing language).
A language that started the functional paradigm, even though it is actually a multi-paradigm language. LISP would start the development of many declarative and functional languages. It is still commonly used in AI (Artificial Intelligence). Functional languages are based on lambda calculus. They are designed to reflect the way that people think mathematically. They would also avoid side effects. For example if you pass a value into a function it will not be changed and the function will not cause other changes somewhere else. A declarative language will also describe what computation should be performed and not how to compute it, an example of some of these languages are PROLOG, HTML, CSS, SQL and OWL. PROLOG is actually a logic programming paradigm which is relational, whereas the rest are domain specific.In contrast to LISP, another imperative language was being developed called Algol-60.
This language is key to many of the modern languages used today. It introduced many of the data structures used today and also used a predefined syntax, allowing programmers to code in a structured way. The language was also procedural and according to Guzdial procedural programming was the dominant form of programming in the 1960’s and 1970’s, however this soon became a problem as programs became larger and more complex. If many programmers were working on the same program, procedural programming started to break down.The problems were conflicts with procedures.
The programs would be written to modify data in a way other people did not expect. Different functions would be written with the same names, so when it came to integrating the code with large programs conflicts would arise. These conflicts needed to be solved, thus a new paradigm for programming was needed. The concepts for object oriented language were thought of in 1961 by Ole-Johan Dahl and Kristen Nygaard, who were based in the Norwegian Computing Centre. The idea was to develop a language that could be used for both system description (for people) and for system prescription (as a computer program through a compiler). The first of these languages was called Simula 1, which was fully developed by 1965.Quickly following Simula 1 was Simula 67.
Which introduced most of the key concepts of object-oriented programming: objects, classes, subclasses, inheritance, encapsulation and polymorphism. Object-oriented is noun-oriented programming, for example if someone was building an object-oriented program the nouns in the given problem need to be identified – what are the people and things that are part of the problem and its solution. Compared to procedural programming being about verbs: tell the computer to do this, tell the computer to do that. The features of Simula were highly influential on modern programming paradigm, in 1972 a pure object oriented language was created using many of the concepts from Simula this was called SmallTalk. The language was created by Alan Kay and according to Lount on the SmallTalk website.“Remember that Alan coined the phrase "Object-Oriented".