1. Introduction to Programming Languages¶
1 What are programming languages¶
Imperative Languages¶
Language | Creation Date | Developer | Purpose | Notes |
---|---|---|---|---|
Fortran | 1950s | John Backus (IBM) | Scientific computing | Updated in 1966, 1977, 1990 |
Cobol | 1950s | Grace Hopper (Ministry of Defense) | Business computing | Designed as short-term solution, but still in use today |
Pl/1 | 1960s | IBM | Scientific computing | Stayed with IBM computers; has all features of Cobol and Algol |
Algol | 1960s | International Group | Scientific computing | |
Pascal | 1970s | Niklaus Wirth (ETH Zurich) | Scientific computing | |
C | 1970s | Dennis Ritchie (Bell Labs) | System programming | Influenced by Algol, the famous one is ANSI C. |
C++ | 1980s | Bjarne Stroustrup (Bell Labs) | System programming | Object-oriented version of C |
Ada | 1980s | US Department of Defense | Military systems | |
Ada 95 | 1990s | US Department of Defense | Military systems |
Data oriented languages¶
Language | Creation Date | Developer | Purpose | Notes |
---|---|---|---|---|
Lisp | 1950s | John McCarthy (MIT) | Artificial intelligence | famous DS: Linked List. |
APL | 1960s | Kenneth Iverson (IBM) | Scientific computing | Famous Ds: Vector and Matrix. Designed for mathematical notation. |
Snobol | 1960s | Bell Labs | String manipulation | Famous DS: String. |
Icon | 1970s | Ralph Griswold (University of AZ) | String manipulation | Famous DS: String. |
Setl | 1970s | Jacob T. Schwartz (NYU) | Set manipulation | Famous DS: Set. |
Object oriented languages¶
Language | Creation Date | Developer | Purpose | Notes |
---|---|---|---|---|
Simula | 1960s | Kristen Nygaard (Norway) | Simulation | The first OOP language. |
Smalltalk | 1970s | Alan Kay (Xerox PARC) | Education | |
Eiffel | 1980s | Bertrand Meyer (ETH Zurich) | Software engineering | |
Java | 1990s | Sun Microsystems | Internet programming |
2 Elements of Programming Languages¶
- Syntax: The form of the program.
- Semantics: The meaning of the program.
- Data: The data manipulated by the program using language native data types and data structures.
- Type checking: The process of ensuring that the program is manipulating data in a manner consistent with the data type.
- Control structures: If, while, for, etc.
- Subprograms: Functions, procedures, methods, etc.
- Modules: A collection of subprograms with a common purpose.
3 Von Neumann, Turing, and Church¶
- Von Neuman:
- All programs and instructions are stored in memory to enable general-purpose computing.
- Alan Turing:
- Student of Von Neuman.
- Turning Complete: A system that can compute anything that can be computed using a Turing Machine.
- Computability relies on the ability to change the state of the machine (assignment, load to memory, compute, save the change back).
- A task is computable if it is possible to specify a sequence of instructions which will result in the completion of the task when they are carried out by some machine.
- Alonzo Church:
- Student of Von Neuman.
- Invented Lambda Calculus, which is the basis of functional programming languages.
References¶
-
Ben-Ari, M. (2006). Understanding programming languages. Weizman Institute of Science. Chapter 1: What are programming languages. ↩
-
Ben-Ari, M. (2006). Understanding programming languages. Weizman Institute of Science. Chapter 2: Elements of Programming Languages. ↩
-
UoPeople. (2023). CS4402 Video Lecture 2: von Neumann, Turing, and Church. https://my.uopeople.edu/mod/kalvidres/view.php?id=370741 ↩