TIMELINE OF PROGRAMMING LANGUAGES Presented by: Lanz Christian Buyao How did it start? How It Started • We first saw the "History of Programming Languages" diagram, created by Éric Lévénez, while visiting our French office. We were so taken with the level of detail and the visual impact of viewing 50 years of programming history that we wanted to come up with a way to share it more widely. We started big. We printed it out full-size, all 18 feet of it, on our plotter and ran it along a wall at our Mac OS X Conference last fall. So many people came by to make notations on the diagram that we knew there would be a lot more interest and discussion if we could only get it in a more manageable format. With Éric's permission, we collected comments from our authors, editors, and friends, and rebuilt the file so we could print it at its current dimensions, 39" x 17". Éric maintains a site with his original diagram, change logs, an explanation of how he creates his charts, and links to additional resources such as Bill Kinnersley's Language List of over 2,500 programming languages. Éric also has Windows and Unix historical diagrams that he makes available for non-commercial purposes, all at www.levenez.com. THE TIMELINE OF EVENTS IN CHRONOLOGICAL ORDER Pre-1950’s • • • • • • Plankalkül is a programming language designed for engineering purposes by Konrad Zuse between 1943 and 1945. It was the first high-level non-von Neumann programming language to be designed for a computer. Plankalkül was not published at that time owing to a combination of factors such as conditions in wartime and postwar Germany and his efforts to commercialize the Z3 computer and its successors. In 1944 Zuse met with the German logician and philosopher Heinrich Scholz and they discussed Zuse's Plankalkül. 1943-1946 - ENIAC coding system created by John Von Neumann, John Mauchly, J. Presper Eckert, Herman Goldstine after Alan Turing. 1946 – ENIAC Short Code & Von Neumann and Goldstine graphing system 1947 - ARC Assembly by Kathleen Booth 1948 – CPC Coding Scheme and Curry Notation System by Howard Aiken and Haskell Curry 1949 - Short Code by John Mauchly and William F. Schmitt 1950’s • • • • 1950 - Short Code was proposed by John Mauchly in 1949 and originally known as Brief Code. William Schmitt implemented a version of Brief Code in 1949 for the BINAC computer, though it was never debugged and tested. Short Code was one of the first higher-level languages ever developed for an electronic computer. Unlike machine code, Short Code statements represented mathematic expressions rather than a machine instruction. 1951 – Superplan by Heinz Rutishauser ALGAE by Edward A Voorhees and Karl Balke Intermediate Programming Language by Arthur Burks Regional Assembly Language by Maurice Wilkes .... And the list goes on. The Sort Merge Generator was an application developed by Betty Holberton in 1951 for the Univac I and is one of the first examples of using a computer to create a computer program. The A-0 system (Arithmetic Language version 0), written by Grace Hopper in 1951 and 1952 for the UNIVAC I, was the first compiler ever developed for an electronic computer. The A-0 functioned more as a loader or linker than the modern notion of a compiler. 1950’s • • • • • Glennie’s Autocode - The first autocode and its compiler were developed by Alick Glennie in 1952 for the Mark 1 computer at the University of Manchester and is considered by some to be the first compiled programming language.. Speedcoding or Speedcode was the first high order or high-level language created for an IBM computer. The language was developed by John Backus in 1953 for the IBM 701 to support computation with floating point numbers. The Laning and Zierler system (sometimes called "George" by its users) was one of the first operating algebraic compilers, that is, a system capable of accepting mathematical formulae in algebraic notation and producing equivalent machine code (the term compiler had not yet been invented and the system was referred to as "an interpretive program"). It was implemented in 1954 for the MIT WHIRLWIND by J. Halcombe Laning and Neal Zierler. The second autocode for the Mark 1 was planned in 1954 and developed by R. A. Brooker in 1955 and was called the "Mark 1 Autocode". The language was nearly machine-independent and had floating-point arithmetic, unlike the first one. 1954-1955 – FORTRAN Concept 1950’s • ARITH-MATIC is an extension of Grace Hopper's A-2 programming language, developed around 1955. ARITH-MATIC was originally known as A-3, but was renamed by the marketing department of Remington Rand UNIVAC. • MATH-MATIC is the marketing name for the AT-3 compiler, an early programming language for the UNIVAC I and UNIVAC II. Intended as an improvement over FORTRAN. Created by a group led by Charles Katz in 1957. • Information Processing Language (IPL) is a programming language created by Allen Newell, Cliff Shaw, and Herbert A. Simon at RAND Corporation and the Carnegie Institute of Technology at about 1956. Newell had the job of language specifier-application programmer, Shaw was the system programmer, and Simon took the job of application programmer-user. • FLOW-MATIC, originally known as B-0 (Business Language version 0), was the first Englishlike data processing language. It was developed for the UNIVAC I at Remington Rand under Grace Hopper during the period from 1955 until 1959. 1950’s • PACT was a series of compilers for the IBM 701 and IBM 704 scientific computers. Their development was conducted jointly by IBM and a committee of customers starting in 1954. PACT I was developed for the 701, and PACT IA for the 704. The emphasis in that early generation of compilers was minimization of the memory footprint, because memory was a very expensive resource at the time. • Lisp (historically, LISP) is a family of computer programming languages with a long history and a distinctive, fully parenthesize dPolish prefix notation. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older (by one year). Like Fortran, Lisp has changed a great deal since its early days, and a number of dialects have existed over its history. Today, the most widely known general-purpose Lisp dialects are Common Lisp and Scheme. 1950’s • COMTRAN (COMmercial TRANslator) is an early programming language developed at IBM. It was intended as the business programming equivalent of the scientific programming language FORTRAN (FORmula TRANslator). It served as one of the forerunners to the COBOL language. Developed by Bob Bemer, in 1957, the language was the first to feature the programming language element known as a picture clause. • In 1957, Charles Leonard Hamblin invented the programming language GEORGE. It was designed around a push-down pop-up stack for arithmetic operations, and employed reverse Polish notation. The language included loops, subroutines, conditionals, vectors, and matrices. • IBM's FORTRAN II appeared in 1958. The main enhancement was to support procedural programming by allowing user-written subroutines and functions which returned values, with parameters passed by reference. • COMIT was the first string processing language (compare SNOBOL, TRAC, and Perl), developed on the IBM 700/7000 series computers by Dr. Victor Yngve and collaborators at MIT from 1957-1965. 1950’s • 1958 - ALGOL 58, originally known as IAL, is one of the family of ALGOL computer programming languages. It was an early compromise design soon superseded by ALGOL 60. According to John Backus. ALGOL 58 introduced the fundamental notion of the compound statement, but it was restricted to control flow only, and it was not tied to identifier scope in the way that Algol 60's blocks were. • FACT was an early computer programming language, created by the Datamatic Division of Minneapolis Honeywell for its model 800 series business computers in 1959. FACT was an acronym for "Fully Automated Compiling Technique". It was an influence on the design of the COBOL programming language. • Some of the design of FACT was based on the linguistic project Basic English, developed about 1925 by C.K. Ogden. The software was actually designed by Computer Sciences Corporation (Fletcher Jones, Roy Nutt, and Robert L. Patrick) under contract to Richard Clippinger of Honeywell. 1950’s • COBOL is a compiled English-like computer programming language designed for business use. It is imperative, procedural and, since 2002, object-oriented. COBOL is primarily used in business, finance, and administrative systems for companies and governments. COBOL was designed in 1959 by the Conference on Data Systems Languages (CODASYL) and was partly based on previous programming language design work by Grace Hopper, commonly referred to as "the (grand)mother of COBOL". It was created as part of a US Department of Defense effort to create a portable programming language for data processing • JOVIAL was developed as a new "high-order" programming language beginning in 1959 by a team at System Development Corporation (SDC) headed by Jules Schwartz to compose software for the electronics of military aircraft. The name JOVIAL is an acronym for "Jules Own Version of the International Algorithmic Language. JOVIAL is a high-level computer programming language similar to ALGOL, but specialized for the development of embedded systems (specialized computer systems designed to perform one or a few dedicated functions, usually embedded as part of a complete device including mechanical parts). 1950’s • MAD (Michigan Algorithm Decoder) is a programming language and compiler for the IBM 704 and later the IBM 709, IBM 7090,IBM 7040, UNIVAC 1107, UNIVAC 1108, Philco 210-211, and eventually the IBM S/370 mainframe computers. Developed in 1959 at the University of Michigan by Bernard Galler, Bruce Arden and Robert M. Graham, MAD is a variant of the ALGOL language. • TRAC (for Text Reckoning And Compiling) Language is a programming language developed in the early 1960s by Calvin Mooers. It was one of three "first languages" recommended by Ted Nelson in Computer Lib. 1960’s • ALGOL 60 was used mostly by research computer scientists in the United States and in Europe. Its use in commercial applications was hindered by the absence of standard input/output facilities in its description and the lack of interest in the language by large computer vendors. ALGOL 60 did however become the standard for the publication of algorithms and had a profound effect on future language development. John Backus developed the Backus normal form method of describing programming languages specifically for ALGOL 58. It was revised and expanded by Peter Naur for ALGOL 60, and at Donald Knuth's suggestion renamed Backus–Naur Form • COMIT was the first string processing language (compare SNOBOL, TRAC, and Perl), developed on the IBM 700/7000 series computers by Dr. Victor Yngve and collaborators at MIT from 1957-1965. • Starting in 1961, as a result of customer demands, IBM began development of a FORTRAN IV that removed the machine-dependent features of FORTRAN II (such as READ INPUT TAPE), while adding new features such as a LOGICAL data type, logical Boolean expressions and the logical IF statement as an alternative to the arithmetic IF statement. FORTRAN IV was eventually released in 1962 1960’s • APL (named after the book A Programming Language) is a programming language developed in the 1960s by Kenneth E. Iverson. Its central datatype is the multidimensional array. It uses a large range of special graphic symbols[8] to represent most operators, leading to very concise code. •Simula is a name for two simulation programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard. Syntactically, it is a fairly faithful superset of ALGOL 60 •CPL (from Combined Programming Language and Cambridge Programming Language before that) is a multi-paradigmprogramming language, that was developed in the early 1963s. •SNOBOL (StriNg Oriented and symBOlic Language) is a series of computer programming languages developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph E. Griswold and Ivan P. Polonsky, culminating in SNOBOL4. It was one of a number of text-stringoriented languages developed during the 1950t from most programming languages by having patterns as a first-class data types and 1960s; others included COMIT and TRAC. SNOBOL4 stands apar 1960’s •ALGOL 68 (short for ALGOrithmic Language 1968) is an imperative computer programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously defined syntax and semantics. • JOSS (an acronym for JOHNNIAC* Open Shop System) was one of the very first interactive, time-sharing programming languages. JOSS I, developed by J. Clifford Shaw at RAND was first implemented, in beta form, on the JOHNNIAC computer in May 1963. The full implementation was deployed in January 1964, supporting five terminals and the final version, supporting ten terminals, was deployed in January 1965 • Starting in 1961, as a result of customer demands, IBM began development of a FORTRAN IV that removed the machine-dependent features of FORTRAN II (such as READ INPUT TAPE), while adding new features such as a LOGICAL data type, logical Boolean expressions and the logical IF statement as an alternative to the arithmetic IF statement. FORTRAN IV was eventually released in 1962 * John v. Neumann Numerical Integrator and Automatic Computer 1960’s • MIMIC, known in capitalized form only, is a former simulation computer language developed 1964 by H. E. Petersen, F. J. Sansom and L. M. Warshawsky of Systems Engineering Group within the Air Force Materiel Command at the Wright-Patterson AFB in Dayton, Ohio, USA. MIMIC is a further development from MIDAS (Modified Integration Digital Analog Simulator), which represented analog computer design. Written completely in FORTRAN but one routine in COMPASS, and ran on Control Data supercomputers, MIMIC is capable of solving much larger simulation models. •COWSEL (COntrolled Working SpacE Language) is a programming language designed between 1964 and 1966 by Robin Popplestone. It was based on an RPN form of Lisp combined with some ideas from CPL. •PL/I ("Programming Language One", pronounced /piː ɛl wʌn/) is a procedural, imperative computer programming language designed for scientific, engineering, business and systems programming applications. It has been used by various academic, commercial and industrial organizations since it was introduced in the 1964, and continues to be actively used as of 2009. 1960’s •BASIC (an acronym for Beginner's All-purpose Symbolic Instruction Code) is a family of generalpurpose, high-level programming languages whose design philosophy emphasizes ease of use. In 1964, John G. Kemeny and Thomas E. Kurtz designed the original BASIC language at Dartmouth College in New Hampshire. RPG is a high-level programming language (HLL) for business applications. RPG is an IBM proprietary programming language and its later versions are only available on IBM i or OS/400 based systems. •MARK IV is a Fourth-generation programming language that was created by Informatics, Inc. (later, Sterling Software) in the 1960s. Informatics, Inc. took advantage of IBM's decision to unbundle their software; MARK IV was the first "software product to have cumulative sales of $10 million". •Speakeasy is a numerical computing interactive environment also featuring an interpreted programming language. It was initially developed for internal use at the Physics Division of Argonne National Laboratory by the theoretical physicist Stanley Cohen.[2] He eventually founded Speakeasy Computing Corporation to make the program available commercially. 1960’s •P′′ is a primitive computer programming language created by Corrado Böhm in 1964 to describe a family of Turing machines. •IITRAN was a programming language created in the mid-1960s. It was designed as a first language for students, and its syntax resembled that of PL/I. The name derives fromIllinois Institute of Technology, where it was developed. •MAD/I has a syntactic structure similar to ALGOL 60 together with important features from the original MAD and from PL/I. MAD/I was designed as an extensible language. •TELCOMP was a programming language developed at Bolt, Beranek and Newman (BBN) in about 1964 and in use until at least 1974. BBN offered TELCOMP as a paid service, with first revenue in October 1965. •Atlas Autocode (AA) was a programming language developed around 1965 at Manchester University for the Atlas Computer. ("Autocode" was basically an early term for "programming language"; different autocodes could be totally different, unlike, say, different FORTRANs.) It was developed by Tony Brooker and Derrick Morris as a variant of the ALGOL programming language 1960’s •JOSS II, was developed by Charles L. Baker, Joseph W. Smith, Irwin D. Greenwald, and G. Edward Bryan for the PDP-6 computer between 1964 and February 1966. •1966 - ALGOL W is a programming language. It was based on a proposal for ALGOL X by Niklaus Wirth and C. A. R. Hoare as a successor to ALGOL 60 in IFIP Working Group 2.1. When the committee decided that the proposal was not a sufficient advance over ALGOL 60, the proposal was published as A contribution to the development of ALGOL. After making small modifications to the language. Wirth supervised a high quality implementation for the IBM/360 at Stanford University that was widely distributed •ISWIM is an abstract computer programming language (or a family of programming languages) devised by Peter J. Landin and first described in his article The Next 700 Programming Languages, published in the Communications of the ACM in 1966. The acronymstands for "If you See What I Mean •CORAL (Computer On-line Real-time Applications Language) is a programming language originally developed in 1964 at the Royal Radar Establishment (RRE), Malvern, UK, as a subset of JOVIAL 1960’s •BCPL (Basic Combined Programming Language) is a procedural, imperative, and structured computer programming language designed by Martin Richards of the University of Cambridge in 1966. •MUMPS (Massachusetts General Hospital Utility Multi-Programming System) or alternatively M, is a general-purpose computer programming language that provides ACID (Atomic, Consistent, Isolated, and Durable) transaction processing. Originally designed in 1966 for the healthcare industry, M continues to be used today by many large hospitals and banks to provide highthroughput transaction data processing •Interlisp (also seen with a variety of capitalizations) was a programming environment built around a version of the Lisp programming language. Interlisp development began in 1967 at Bolt, Beranek and Newman in Cambridge, Massachusetts as BBN LISP, which ran on PDP-10 machines running the TENEX operating system. •SNOBOL4 stands apart from most programming languages by having patterns as a first-class data type (i.e. a data type whose values can be manipulated in all ways permitted to any other data type in the programming language) and by providing operators for pattern concatenation and alternation. Strings generated during execution can be treated as programs and executed. 1960’s •XPL is a programming language based on PL/I, and a portable one-pass compiler written in its own language, and a parser generator tool for easily implementing similar compilers for other languages. XPL was designed in 1967 as a way to teach compiler design principles and as starting point for students to build compilers for their own languages. XPL was designed and implemented by William McKeeman and David B. Wortman at University of California, Santa Cruz and James J. Horning and others at Stanford University. XPL was first announced at the 1968 Fall Joint Computer Conference. The methods and compiler are described in detail in the 1971 textbook A Compiler Generator. •DiBOL or Digital's Business Oriented Language is a generalpurpose, procedural, imperative programming language, designed for use in Management Information Systems (MIS) software development. It has a syntax similar to FORTRAN and BASIC, along with BCD arithmetic. It shares the COBOL program structure of data and procedure divisions. DIBOL was originally marketed by Digital Equipment Corporation (DEC) in 1970. •Logo is an educational programming language, designed in 1967 by Daniel G. Bobrow, Wally Feurzeig, Seymour Papert andCynthia Solomon. 1960’s •Refal (Recursive functions algorithmic language) "is a functional programming language oriented toward symbol manipulation", including "string processing, translation, [and] artificial intelligence". It is one of the oldest members of this family, first conceived in 1966 as a theoretical tool with the first implementation appearing in 1968. Refal was intended to combine mathematical simplicity with practicality for writing large and sophisticated programs. •TTM is a string oriented, general purpose macro processing programming language developed in 1968 by Steven Caine and E. Kent Gordon at the California Institute of Technology. •B is a programming language developed at Bell Labs circa 1969. It is the work of Ken Thompson with Dennis Ritchie. •The Polymorphic Programming Language (PPL) was developed in 1969 at Harvard University by Thomas A. Standish. It is an interactive, extensible language with a base language similar to APL. •SETL (SET Language) is a very high-level programming language based on the mathematical theory of sets. It was originally developed by Jack Schwartz at the NYU Courant Institute of Mathematical Sciences in the late 1969. 1960’s •Refal (Recursive functions algorithmic language) "is a functional programming language oriented toward symbol manipulation", including "string processing, translation, [and] artificial intelligence". It is one of the oldest members of this family, first conceived in 1966 as a theoretical tool with the first implementation appearing in 1968. Refal was intended to combine mathematical simplicity with practicality for writing large and sophisticated programs. •TTM is a string oriented, general purpose macro processing programming language developed in 1968 by Steven Caine and E. Kent Gordon at the California Institute of Technology. •B is a programming language developed at Bell Labs circa 1969. It is the work of Ken Thompson with Dennis Ritchie. •The Polymorphic Programming Language (PPL) was developed in 1969 at Harvard University by Thomas A. Standish. It is an interactive, extensible language with a base language similar to APL. •SETL (SET Language) is a very high-level programming language based on the mathematical theory of sets. It was originally developed by Jack Schwartz at the NYU Courant Institute of Mathematical Sciences in the late 1969. 1960’s •TUTOR (also known as PLATO Author Language) is a programming language developed for use on the PLATO system at theUniversity of Illinois at Urbana-Champaign around 1965 •Edinburgh IMP is a development of ATLAS Autocode, initially developed around 1966-1969 at Edinburgh University, Scotland. IMP was a general-purpose programming language which was used heavily for systems programming. •Forth is an imperative stack-based computer programming language and programming environment. Language features include structured programming, reflection (the ability to modify the program structure during program execution), concatenative programming (functions are composed with juxtaposition) and extensibility (the programmer can create new commands). •MAPPER (MAintain, Prepare, and Produce Executive Reports) is a database management and processing system. It is a software tool that enables end-users to share computer power in a corporation. Users are able to develop their own applications and process them interactively. The product has a number of unique characteristics that may appear technically impossible to persons unfamiliar with its method of operation. 1970’s •POP-2, often referred to as POP2 was a programming language developed around 1970 from the earlier language POP-1 (developed by Robin Popplestone in 1968, originally named COWSEL) by Robin Popplestone and Rod Burstall at the University of Edinburgh •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. •BLISS is a system programming language developed at Carnegie Mellon University by W. A. Wulf, D. B. Russell, and A. N. Habermann around 1970. •KRL is a knowledge representation language, developed by Daniel G. Bobrow and Terry Winograd while at Xerox PARC andStanford University, respectively. It is a frame-based language. 1975 •Compiler Description Language, or CDL, is a programming language based on affix grammars. It is very similar to Backus–Naur form(BNF) notation. It was designed for the development of compilers. It is very limited in its capabilities and control flow; and intentionally so. The benefits of these limitations are twofold. 1970’s •Smalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human– computer symbiosis. •The PL/M programming language (an acronym of Programming Language for Microcomputers) is a high-level language developed by Gary Kildall in 1972 for Intel for its microprocessors. •C is a general-purpose, imperative computer programming language, supporting structured programming,lexical variable scope and recursion, while a static type system prevents many unintended operations. By design, C provides constructs that map efficiently to typical machine instructions, and therefore it has found lasting use in applications that had formerly been coded in assembly language, including operating systems, as well as various application software for computers ranging from supercomputers to embedded systems. C was originally developed by Dennis Ritchie between 1969 and 1973 at AT&T Bell Labs and used to re-implement the Unixoperating system. •The Compiler Language With No Pronounceable Acronym, abbreviated INTERCAL, is an esoteric programming language that was created as a parody by Don Woods and James M. Lyon, two Princeton University students, in 1972. 1970’s •Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics. The language was first conceived by a group around Alain Colmerauer in Marseille, France, in the early 1970s and the first Prolog system was developed in 1972 by Colmerauer with Philippe Roussel. •SQL (Structured Query Language) is a special-purpose programming language designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS). •COMAL (Common Algorithmic Language) is a computer programming language developed in Denmark by Benedict Løfstedt andBørge R. Christensen in 1973. •LIS (Language d'Implementation de Systèmes) was a system implementation programming language designed by Jean Ichbiah, who later designed Ada. LIS was used to implement the compiler for the Ada-0 subset of Ada at Karlsruhe on the BS2000 Siemens operating system •CLU is a pioneering programming language created at MIT by Barbara Liskov and her students between 1974 and 1975. While it did not find extensive use itself, it introduced many features that are now widely used, and is seen as a step in the development ofobject-oriented programming (OOP) 1970’s •GRASS (GRAphics Symbiosis System) was a programming language created to script 2D vector graphics animations. GRASS was similar to BASIC in syntax, but added numerous instructions for specifying 2D object animation, including scaling, translation, rotation and color changes over time •PROSE was the mathematical 4GL virtual machine which established the holistic modeling paradigm known as Synthetic Calculus (AKA MetaCalculus). A successor to the SLANG/CUE simulation and optimization language developed at TRW Systems, it was introduced in 1974 on Control Data supercomputers. •ABC is an imperative general-purpose programming language and programming environment developed at CWI, Netherlands byLeo Geurts, Lambert Meertens, and Steven Pemberton. It is interactive, structured, high-level, and intended to be used instead of BASIC, Pascal, or AWK. It is not meant to be a systems-programming language but is intended for teaching or prototyping. The language had a major influence on the design of the Python programming language (as a counterexample); Guido van Rossum, who developed Python, previously worked for several years on the ABC system in the early 1980s 1970’s •Scheme was created during the 1975s at the MIT AI Lab and released by its developers, Guy L. Steele and Gerald Jay Sussman, via a series of memos now known as the Lambda Papers. It was the first dialect of Lisp to choose lexical scope and the first to require implementations to perform tail-call optimization, giving stronger support for functional programming and associated techniques such as recursive algorithms. •Altair BASIC was an interpreter for the BASIC programming language that ran on the MITS Altair 8800 and subsequent S-100 bus computers. It was Microsoft's first product (as Micro-Soft), distributed by MITS under a contract. Altair BASIC was the start of the Microsoft BASIC product range. 1978 •Plus is a "Pascal-like" system implementation language from the University of British Columbia (UBC), Canada, based on the SUE[1]system language developed at the University of Toronto, circa 1971 •SAM76 is a macro programming language used from the late 1970s to the present 2007 initially ran on CP/M. •Ratfor (short for Rational Fortran) is a programming language implemented as a preprocessor for Fortran 66. It provided modern control structures, unavailable in Fortran 66, to replace GOTOs and statement numbers. 1976 1970’s •S, on 1976, is a statistical programming language developed primarily by John Chambers and (in earlier versions) Rick Becker and Allan Wilks of Bell Laboratories. The aim of the language, as expressed by John Chambers, is "to turn ideas into software, quickly and faithfully". The SAS language is a computer programming language used for statistical analysis, originated by a project at the North Carolina State University. It can read in data from common spreadsheets and databases and output the results of statistical analyses. •FP (short for Function Programming) is a programming language created by John Backus to support the function-level programming paradigm. This allows eliminating named variables. •The Bourne shell (sh) is a shell, or command-line interpreter, for computer operating systems. The Bourne shell was the default Unix shell of Unix Version 7. Most Unix-like systems continue to have /bin/sh—which will be the Bourne shell, or a symbolic link or hard link to a compatible shell even when other shells are used by most users. Developed by Stephen Bourne at Bell Labs, it was a replacement for the Thompson shell, whose executable file had the same name—sh. It was released in 1977 in the Version 7 Unix release distributed to colleges and universities •Commodore BASIC, also known as PET BASIC, is the dialect of the BASIC programming language used in Commodore International's 8-bit home computer line, stretching from the PET of 1977 to the C128 of 1985. 1970’s •IDL (1977), short for Interactive Data Language, is a programming language used for data analysis. It is popular in particular areas of science, such as astronomy, atmospheric physics and medical imaging. •Icon(1977) is a very high-level programming language featuring goal directed execution and many facilities for managing strings and textual patterns. It is related to SNOBOL and SL5, string processing languages. Icon is not object-oriented, but an object-oriented extension called Idol was developed in 1996 which eventually became Unicon. •The C shell (csh or the improved version, tcsh, on most machines) is a Unix shell that was created by Bill Joy while he was a graduate student at University of California, Berkeley in the late 1978. •HAL/S (High-order Assembly Language/Shuttle) is a real-time aerospace programming language, best known for its use in the Space Shuttle program. It was designed byIntermetrics in the 1970s for NASA. HAL/S is written in XPL, a dialect of PL/I. •MATLAB (matrix laboratory) is a multi-paradigm numerical computing environment and fourthgeneration programming language. A proprietary programming language developed by MathWorks, MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages, including C, C++, Java, Fortran and Python. 1970’s •SMALL, Small Machine Algol Like Language, is a programming language developed by Dr. Nevil Brownlee of Auckland University. •VisiCalc (for "visible calculator") was the first spreadsheet computer program for personal computers, originally released for the Apple II. It is often considered the application that turned the microcomputer from a hobby for computer enthusiasts into a serious business tool, and is considered the Apple II's killer app. VisiCalc sold over 700,000 copies in six years, and as many as 1 million copies over its history. •Modula-2 is a computer programming language designed and developed between 1977 and 1985 by Niklaus Wirth at the Swiss Federal Institute of Technology in Zurich (ETH Zurich) as a revision of Pascal to serve as the sole programming language for the operating system and application software for the personal workstation Lilith. 1977 - AWK is an interpreted programming language designed for text processing and typically used as a data extraction and reporting tool. It is a standard feature of most Unix-like operating systems. The AWK language is a data-driven scripting language consisting of a set of actions to be taken against streams of textual data – either run directly on files or used as part of a pipeline 1970’s •1979 dBase (also stylized dBASE) was one of the first database management systems for microcomputers, and the most successful in its day. The dBase system includes the core database engine, a query system, a forms engine, and a programming language that ties all of these components together. dBase's underlying file format, the .dbf file, is widely used in applications needing a simple format to store structured data. LET’S TAKE A BREAK 1980’s •Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented highlevel computer programming language, extended from Pascal and other languages. Ada was originally designed bteam led by Jean Ichbiah of CII Honeywell Bull under contract to the United States Department of Defense (DoD) from 1977 to 1983 to supersede the hundreds of programming languages then used by the DoD. Ada was named after Ada Lovelace (1815–1852), who is credited as being the first computer programmer. •1983 – C with Classes •CBASIC is a compiled version of the BASIC programming language written for the CP/M operating system by Gordon Eubanks in 1976–77. It is an enhanced version of BASIC-E, his master's thesis project. •BBC BASIC is a programming language, developed in 1981 as a native programming language for the MOS Technology 6502based Acorn BBC Micro home/personal computer, mainly by Sophie Wilson. It is a version of the BASIC programming language adapted for a UK computer literacy project of the BBC 1980’s •The IBM Personal Computer Basic, commonly shortened to IBM BASIC, is a programming language first released by IBM with the IBM Personal Computer (model 5150) in 1981. IBM released four different versions of the Microsoft BASIC interpreter, licensed from Microsoft for the PC and PCjr. •Speakeasy is a numerical computing interactive environment also featuring an interpreted programming language. It was initially developed for internal use at the Physics Division of Argonne National Laboratory by the theoretical physicist Stanley Cohen •Draco was a shareware programming language for CP/M and the Amiga, created by Chris Gray in the early 1980s, and discontinued sometime around 1990 •PostScript (PS) is a computer language for creating vector graphics. It is a dynamically typed, concatenative programming language and was created by John Warnock, Charles Geschke, Doug Brotz, Ed Taft and Bill Paxton in 1982. It is used as a page description language in the electronic and desktop publishing areas. 1980’s •GW-BASIC is a dialect of the BASIC programming language developed by Microsoft from BASICA, originally for Compaq. It is otherwise identical to Microsoft/IBM BASICA, but is a fully selfcontained executable and does not need the ROM BASIC. It was bundled with MS-DOS operating systems on IBM PC compatibles by Microsoft. •Turbo Pascal is a software development system that includes a compiler and an integrated development environment (IDE) for thePascal programming language running on CP/M, CP/M-86, and DOS, developed by Borland under Philippe Kahn's leadership. Objective-C is a general-purpose, object-oriented programming language that adds Smalltalkstyle messaging to the C programming language. It is the main programming language used by Apple for the OS X and iOS operating systems, and their respective application programming interfaces (APIs), Cocoa and Cocoa Touch. The programming language Objective-C was originally developed in the early 1980s. C++ is a general-purpose programming language. It has imperative, objectorientedand generic programming features, while also providing facilities for low-level memory manipulation. It is designed with a bias toward system programming and embedded, resourceconstrained and large systems, with performance, efficiency and flexibility of use as its design highlights Made in 1983 1980’s •GW-BASIC is a dialect of the BASIC programming language developed by Microsoft from BASICA, originally for Compaq. It is otherwise identical to Microsoft/IBM BASICA, but is a fully selfcontained executable and does not need the ROM BASIC. It was bundled with MS-DOS operating systems on IBM PC compatibles by Microsoft. •Turbo Pascal is a software development system that includes a compiler and an integrated development environment (IDE) for thePascal programming language running on CP/M, CP/M-86, and DOS, developed by Borland under Philippe Kahn's leadership. Objective-C is a general-purpose, object-oriented programming language that adds Smalltalkstyle messaging to the C programming language. It is the main programming language used by Apple for the OS X and iOS operating systems, and their respective application programming interfaces (APIs), Cocoa and Cocoa Touch. The programming language Objective-C was originally developed in the early 1980s. C++ is a general-purpose programming language. It has imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation. It is designed with a bias toward system programming and embedded, resourceconstrained and large systems, with performance, efficiency and flexibility of use as its design highlights Made in 1983 1980’s •True BASIC, 1985, is a variant of the BASIC programming language descended from Dartmouth BASIC — the original BASIC — invented by college professors John G. Kemeny and Thomas E. Kurtz. •occam is a concurrent programming language that builds on the communicating sequential processes (CSP) process algebra, and shares many of its features. It is named after William of Ockham of Occam's Razor fame. •ABAP (Advanced Business Application Programming, originally Allgemeiner BerichtsAufbereitungs-Prozessor, German for "general report creation processor“) is a high-level programming language created by the German software company SAP. It is currently positioned, alongside Java, as the language for programming the SAP Application Server, which is part of the NetWeaverplatform for building business applications. •KornShell (ksh) is a Unix shell which was developed by David Korn at Bell Labs in the early 1980s and announced at USENIX on July 14, 1983. The initial development was based on Bourne shell source code. 1980’s •Clipper, 1985, is a computer programming language that is used to create software programs that originally operated primarily under DOS. Although it is a powerful general-purpose programming language, it was primarily used to create database/business programs. •Common Lisp (CL),1984, is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 (R2004) (formerly X3.226-1994 (R1999)).From the ANSI Common Lisp standard the Common Lisp HyperSpec, a hyperlinked HTML version, has been derived. RPL, 1984, is a structured programming language based on RPN, but equally capable of processing algebraic expressions and formulae, implemented as a threaded interpreter.[9] RPL has many similarities to Forth, both languages being stack-based, as well as the list-based LISP. Contrary to previous HP RPN calculators, which had a fixed four-level stack, the stack used by RPL is only limited by available calculator RAM Standard ML (SML) is a general-purpose, modular, functional programming language with compile-time type checking and type inference. It is popular among compiler writers and programming language researchers, as well as in the development of theorem provers. 1980’s •Core War, 1984, is a programming game created by D. G. Jones and A. K. Dewdney in which two or more battle programs (called "warriors") compete for control of a virtual computer. These battle programs are written in an abstract assembly language called Redcode. •Open Programming Language (OPL), 1986, is an embedded programming language for portable devices that run the Symbian Operating System. •Paradox is a relational database management system currently published by Corel Corporation. It was originally released for DOS by Ansa Software, and then by Borland after it bought the company. A Windows version was released by Borland in 1992. •Microsoft QuickBASIC (also QB) is an Integrated Development Environment (or IDE) and compiler for the BASICprogramming language that was developed by Microsoft. QuickBASIC runs mainly on DOS, though there was a short-lived version for Mac OS. Microsoft released the first version of QuickBASIC on August 18, 1985 on a single 5.25" 360kB floppy disk. •CorVision, 1986, is a fourth generation programming tool (4GL) currently owned by Attunity, Inc. CorVision was developed by Cortex Corporation for the VAX/VMS ISAM environment. 1980’s •Eiffel, 1986, is an ISO-standardized, object-oriented programming language designed by Bertrand Meyer (an object-orientation proponent and author of Object-Oriented Software Construction) and Eiffel Software. The design of the language is closely connected with the Eiffel programming method. •GFA BASIC is a dialect of the BASIC programming language, by Frank Ostrowski. The name is derived from the company ("GFA Systemtechnik GmbH", in Kiel and Düsseldorf), which distributed the software. GFA is an acronym for "Gesellschaft für Automatisierung" ("Company for Automatization"). The first version was released in 1986 •Informix-4GL is a 4GL programming language developed by Informix during the mid-1980s. •LabVIEW (short for Laboratory Virtual Instrument Engineering Workbench) is a system-design platform and development environment for a visual programming language from National Instruments. Miranda is a lazy, purely functional programming language designed by David Turner as a successor to his earlier programming languages SASL and KRC, using some concepts from ML and Hope. It was produced by Research Software Ltd. of England (which holds a trademark on the name Miranda) and was the first purely functional language to be commercially supported. Miranda was first released in 1985, as a fast interpreter in C for Unix-flavour operating systems, with subsequent releases in 1987 and 1989. The later Haskell programming language is similar in many ways to Miranda. 1980’s •Object Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Embarcadero Delphi. •PROMAL (PROgrammer's Microapplication Language) is a C-like programming language from Systems Management Associates for MS-DOS, Commodore 64, and Apple II. PROMAL features simple syntax, no line numbers, long variable names, functions and procedures with argument passing, real number type, arrays, strings, pointer, and a built-in I/O library. Like ABC and Python, indentation is part of the language syntax. •Self is an object-oriented programming language based on the concept of prototypes. Self was a dialect of Smalltalk, beingdynamically typed and using just-in-time compilation (JIT) as well as the prototype-based approach to objects: it was first used as an experimental test system for language design in the 1980s and 1990s •HyperTalk is a high-level, procedural programming language created in 1987 by Dan Winkler and used in conjunction with Apple Computer's HyperCard hypermedia program by Bill Atkinson. 1980’s SPARK is a formally defined computer programming language based on the Ada programming language, intended for the development of high integrity software used in systems where predictable and highly reliable operation is essential. It facilitates the development of applications that demand safety, security, or business integrity. A+ is an array programming language descendent from the programming language A, which in turn was created to replace APL in 1988 PowerBASIC is the brand of several commercial compilers by PowerBASIC Inc. that compile a dialect of the BASICprogramming language. Bash is a Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell. Released in 1989 1980’s •Perl is a family of high-level, general-purpose, interpreted, dynamic programming languages. The languages in this family include Perl 5 and Perl 6. •Though Perl is not officially an acronym, there are various backronyms in use, the most wellknown being "Practical Extraction and Reporting Language".Perl was originally developed by Larry Wall in 1987 •Oberon is a general-purpose programming language created in 1986 by Professor Niklaus Wirth and the latest member of the Wirthian family of ALGOL-like languages •Turbo Basic is a BASIC compiler and dialect originally created by Robert "Bob" Zale (1945-2012) and bought from him by Borland. This software is from the 1987-1988 period and features the Borland "black screen" similar to Turbo Pascal 4.0, Turbo C 1.0/1.5, andTurbo Prolog 1.1. •The language Clean first appeared in 1987 and is still being further developed. It shares many properties with Haskell: referential transparency, list comprehension, guards, garbage collection, higher order functions, currying and lazy evaluation. •GNU Octave, 1988, is software featuring a high-level programming language, primarily intended for numerical computations 1990’s •AMOS BASIC is a dialect of the BASIC programming language implemented on the Amiga computer. AMOS BASIC was published by Europress Software and originally written by François Lionet with Constantin Sotiropoulos. •AMPL, an acronym for "A Mathematical Programming Language", is an algebraic modeling language for describing and solving high-complexity problems for large-scale mathematical computation (i.e. large-scale optimization and scheduling-type problems). It was developed by Robert Fourer, David Gay and Brian Kernighan at Bell Laboratories •Object Oberon is a programming language which is based on the Oberon programming language with features for object-oriented programming. Oberon-2 was essentially a redesign of Object Oberon. •The J programming language, developed in the early 1990s by Kenneth E. Iverson and Roger Hui, is a synthesis of APL (also by Iverson) and the FP and FL function-level languages created by John Backus •Haskell is a standardized, general-purpose purely functional programming language, with nonstrict semantics and strong static typing. It is named after logician Haskell Curry. 1990’s •Python, 1991, is a widely used general-purpose, high-level programming language. Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than would be possible in languages such as C++ or Java Oz is a multiparadigm programming language, developed in the Programming Systems Lab at Université catholique de Louvain, for programming language education. It has a canonical textbook: Concepts, Techniques, and Models of Computer Programming. Oz was first designed by Gert Smolka and his students in 1991. Q , 1991, (short for equational programming language) is an interpreted, interactive functional programming language created by Albert Gräf at the University of Mainz in Germany. Q programs are just collections of equations which are used to evaluate expressions in a symbolic fashion. •Visual Basic is a legacy third-generation event-driven programming language and integrated development environment (IDE) from Microsoft for its COM programming model first released in 1991 •K, 1993, is a proprietary array processing language developed by Arthur Whitney and commercialized by Kx Systems. Since then, an open-source implementation known as Kona has also been developed 1990’s •R is a programming language and software environment for statistical computing and graphics. The R language is widely used among statisticians and data miners for developing statistical software and data analysis •ZPL , 1993, (short for Z-level Programming Language) is an array programming language designed to replace C and C++ programming languages in engineering and scientific applications •NewtonScript, 1993 by Apple Computer, is a prototype-based programming language created to write programs for the Newton platform. It is heavily influenced by the Self programming language, but modified to be more suited to needs of mobile and embedded devices. •Pike, 1994 by Frederik Hubinette, is an interpreted, general-purpose, high-level, crossplatform, dynamic programming language, with a syntax similar to that of C. Unlike many other dynamic languages, Pike is both statically and dynamically typed, and requires explicit type definitions 1990’s •Java, 1995 by James Gosling and Sun Microsystems and developed by Oracle Productions is a general-purpose computer programming language that is concurrent, class-based, objectoriented, and specifically designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere" (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. •PHP, 1995 by Rasmus Lerdorf ,is a server-side scripting language designed for web development but also used as a general-purpose programming language •Ruby is a dynamic, reflective, object-oriented, general-purpose programming language. It was designed and developed in 1995 by Yukihiro "Matz" Matsumoto in Japan. •JavaScript is a high level, dynamic, untyped, and interpreted programming language. It has been standardized in the ECMAScript language specification. Alongside HTML and CSS, it is one of the three essential technologies of World Wide Web content production; the majority of websites employ it and it is supported by all modern web browsers without plug-ins 1990’s •Lasso is an application server and server management interface used for developing internet applications as well as a general-purpose, high-level programming language •Perl Data Language (abbreviated PDL), 1996 by Karl Glazebrook, Jarle Brinchmann, Tuomas Lukka, and Christian Soeller is a set of free software array programming extensions to the Perl programming language. PDL extends the data structures built into Perl, to include large multidimensional arrays, and adds functionality to manipulate those arrays as vector objects. •E is an object-oriented programming language for secure distributed computing, created by Mark S. Miller, Dan Bornstein, and others at Electric Communities in 1997. Pico is a programming language developed at the Software Languages Lab at Vrije Universiteit Brussel. The language was created to introduce the essentials of programming to non-computer science students. Pico can be seen as an effort to generate a palatable and enjoyable language for people who do not want to study hard for the elegance and power of a language. They have done it by adapting Scheme's semantics. The Squeak programming language is a dialect of Smalltalk. It is object-oriented, classbased and reflective. 1990’s •F-Script is based on a pure object paradigm (every entity manipulated within the language is an object), its base syntax and concepts being identical to those of Smalltalk (the canonical example of the category) with specific extensions to support array programming as in APL. •PureBasic is a commercially distributed procedural computer programming language and integrated development environmentbased on BASIC and developed by Fantaisie Software for Windows 32/64-bit, Linux 32/64-bit, and Mac OS X. An Amiga version is available, although it has been discontinued and released as open source. The first public release of PureBasic for Windows was on December 17, 2000. It has been continually updated since. •UnrealScript (often abbreviated to UScript), 1998, is the scripting language that Unreal Engine used for authoring game code andgameplay events before the release of Unreal Engine 4. The language was designed for simple, high-level game programming. The UnrealScript interpreter was programmed by Tim Sweeney, who also created an earlier game scripting language, ZZT-oop. •GameMaker: Studio (originally named Animo and later Game Maker), November 15, 1999 is a proprietary game creation system created by Mark Overmars in the Delphi programming language 2000’s •Join Java, 2000, is a programming language based on the join-pattern that extends the standard Java programming language with the join semantics of the join-calculus. It was written at the University of South Australia within the Reconfigurable Computing Lab by Dr. Von Itzstein. •The Joy programming language, 2001 in computer science is a purely functional programming language that was produced by Manfred von Thun of La Trobe University in Melbourne, Australia. Joy is based on composition of functions rather than lambda calculus. •The D programming language is an object-oriented, imperative, multi-paradigm system programming language created by Walter Bright of Digital Mars and released in 2001. Bright was joined in the design and development effort in 2006 by Andrei Alexandrescu. •C#, 2000, is a multi-paradigm programming language encompassing strong typing, imperative,declarative, functional, generic, object-oriented (class-based), and componentoriented programming disciplines. •Visual Basic .NET (VB.NET) is a multi-paradigm, high level programming language, implemented on the .NET Framework. Microsoft launched VB.NET in 2002 as the successor to its original Visual Basic language. Although the ".NET" portion was dropped in 2005, this article uses "Visual Basic .NET" to refer to all Visual Basic languages releases since 2002, in order to distinguish between them and the classic Visual Basic. Along with Visual C#, it is one of the two main languages targeting the .NET framework. 2000’s Falcon, 2003, is an open source, multi-paradigm programming language. Design and implementation is led by Giancarlo Niccolai, a native of Bologna, Italy and Information Technology graduate from Pistoia. Falcon translates computer source code to virtual machine instructions for evaluation. The virtual machine is intended to be both a stand-alone interpreter as well as for integration in third-party embedding applications. Boo, 2003, is an object-oriented, statically typed, general-purpose programming language that seeks to make use of the Common Language Infrastructure's support for Unicode, internationalization, and web applications, while using a Python-inspired syntax and a special focus on language and compiler extensibility. FreeBASIC, 2004, is a multiplatform, free/open source (GPL) BASIC compiler for Microsoft Windows, protected-mode DOS (DOS extender), Linux, FreeBSD and Xbox. The Xbox version is no longer maintained F#, 2005, is a strongly typed, multi-paradigm programming language that encompasses functional, imperative, andobject-oriented programming techniques. F# is most often used as a cross-platform CLI language, but can also be used to generate JavaScript and GPU code. 2000’s Scratch, 2005 is a visual programming language. It can be accessed as a free desktop and online multimedia authoring tool that can be used by students, scholars, teachers, and parents to easily create games and provide a stepping stone to the more advanced world of computer programming. LOLCODE, 2007, is an esoteric programming language inspired by lolspeak, the language expressed in examples of the lolcat Internet meme. The language was created in 2007 by Adam Lindsay, researcher at the Computing Department of Lancaster University CoffeeScript, 2009, is a programming language that transcompiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python andHaskell in an effort to enhance JavaScript's brevity and readability. Specific additional features include list comprehension andpattern matching. Go, also commonly referred to as golang, is a programming language developed at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. It is a statically typed language with syntax loosely derived from that of C, adding garbage collection, type safety, some dynamictyping capabilities, additional built-in types such as variable-length arrays & key-value maps, and a large standard library. 2000’s Chapel, 2009, the Cascade High Productivity Language, is a parallel programming language developed by Cray. It is being developed as part of the Cray Cascade project, a participant in DARPA's High Productivity Computing Systems (HPCS) program, which had the goal of increasing supercomputer productivity by the year 2010. It is being developed as an open source project, under the BSD license. Rust, 2009, is a general-purpose, multi-paradigm, compiled programming language developed by Mozilla Research. It is designed to be a "safe, concurrent, practical language“, supporting purefunctional, concurrent-actor, imperative-procedural, and object-oriented styles. Hack is a programming language HipHop Virtual Machine (HHVM), created by Facebook as a dialect of PHP. The language implementation is open source, licensed under the BSD License Julia, 2012, is a high-level dynamic programming language designed to address the requirements of high-performance numerical and scientific computing while also being effective for general-purpose programming, even web use or as a specification language Swift is a multi-paradigm, compiled programming language created by Apple Inc. for iOS, OS X, and watchOS development. Swift is designed to work with Apple's Cocoa and Cocoa Touch frameworks and the large body of existing Objective-C code written for Apple products. 2000’s C++14 is the informal name for the most recent revision of the C++ ISO/IEC standard, formally "International Standard ISO/IEC 14882:2014(E) Programming Language C++". C++14 is intended to be a small extension over C++11, featuring mainly bug fixes and small improvements. The committee draft of the C++14 standard, N3690, was published May 15, 2013, the working draft, N3936, was published March 2, 2014, the final ballot period closed on August 15, 2014, and the results (unanimous approval) were announced on August 18. C++14 was released on December 15, 2014.