Insights into the World of Programming Languages
Explore the fascinating realm of programming languages, from their fundamental definition as systems for computation to the diverse range of language designs that reflect different perspectives on the world. Learn about the essential characteristics that make a language Turing Complete, discover the vast number of programming languages that exist, and delve into the intriguing distinctions between natural language and programming language. Gain insights into how language design shapes our understanding and experience of coding.
Download Presentation
Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
E N D
Presentation Transcript
The History of Programming Languages CS 170b Benjamin Gaska, much help from William Mitchell
What is a programming language A simple definition: A system for describing computation. It is generally agreed that in order for a language to be considered a programming language it must be Turing Complete. One way to prove a language is Turing Complete is to use it to implement a Turing Machine, a theoretical device capable of performing any algorithmic computation.
How many programming languages are there? Some of the many attempts at a family tree of languages: http://www.digibarn.com/collections/posters/tongues/ http://www.levenez.com/lang/ http://rigaux.org/language-study/diagram.html http://en.wikipedia.org/wiki/Alphabetical_list_of_programming_lang uages ( 650+/-) The Language List http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm (about 2,500)
Natural Language vs. Programming Language Both of them are ways to convey information Both have syntax Syntax is the way things are structured to create larger meaning Both have semantics Semantics are what individual words mean
But it is clear that they are quite different beasts Programming languages must be unambiguous Ultimately, all programming languages reach the level of machine code Programming languages are limited in what they can describe The descriptive power of human speech far outstrips that of programming languages
Aside: The Sapir- Whorf Hypothesis The structure of a language affects how we conceptualize the world. Ex. There are languages that do not make a distinction between the colors blue and green. Native speakers of these languages have difficulty separating these colors in tests.
What does a language design say about how it views the world? Each programming language is created with a purpose. Sometimes that can be to achieve an important goal C was designed to allow for system programming Sometimes it can be for fun Malbolge was designed to be as difficult to comprehend as possible 99-Bottles of Beer in Malboge
Simplified Timeline TimeLine of Languages Fortran 1954 LISP 1956 SNOBOL 1962 & ICON 1977 C 1972 Smalltalk 1972 Java 1995 Rust - 2010
Fortran - 1954 John Backus One of the oldest programming languages Incredibly influential Was created for engineering and scientific computation Everything in it is a multidimensional array Still in use today
LISP - 1956 John McCarthy Created in order to allow for programming of mathematical notation The earliest language used (and still used today) for serious AI research The father of all functional languages
SNOBOL 1962 Icon 1977 Ralph Griswold SNOBOL (StriNg Oriented symBOlic Language) was one of the earliest languages for string manipulation Icon was created here at the UA. Used an interesting Goal-Directed evaluation style A General-purpose language known for its beauty and grace
C 1972 Dennis Ritchie Designed for system level programming, needed a language just above assembly code. Was created, specifically to create the UNIX operating system Possibly the most influential programming language of all time Source of the Hello, world archetype Also famous for its tendency to create bugs
Smalltalk 1972 Alan Kay The earliest major object oriented programming language Smalltalk fits on a postcard! Defined the concept of a laptop The best way to predict the future is to invent it
Java 1995 James Gosling Write once, run anywhere Utilizes a bytecode that allows it to run on any machine Most rapid growth of any language in history Garbage collection
Rust 2010 Graydon Hoare (initial) Built with pure-functional programming and concurrency in mind Open-Source, the language is designed and implemented by the community Multi-paradigm, melting together many ideas from all the languages we ve seen