brief history of programming languages
and other significant milestones
There have been literally thousands of programming languages, many of which have been lost to history.
This history of programming languages also discusses the developments of computer hardware, computer operating systems, games, and technology. Games are included because often the major advances in computer hardware and software technologies first appeared in games. As one famous example, the roots of UNIX were the porting of an early computer game to new hardware.
The earliest calculating machine was the abacus, believed to have been invented in Babylon around 2400 BCE. The abacus was used by many different cultures and civilizations, including the major advance known as the Chinese abacus from the 2nd Century BCE.
The Antikythera mechanism, discovered in a shipwreck in 1900, is an early mechanical analog computer from between 150 BCE and 100 BCE. The Antikythera mechanism used a system of 37 gears to compute the positions of the sun and the moon through the zodiac on the Egyptian calendar, and possibly also the fixed stars and five planets known in antiquity (Mercury, Venus, Mars, Jupiter, and Saturn) for any time in the future or past. The system of gears added and subtracted angular velocities to compute differentials. The Antikythera mechanism could accurately predict eclipses and could draw up accurate astrological charts for important leaders. It is likely that the Antikythera mechanism was based on an astrological computer created by Archimedes of Syracuse in the 3rd century BCE.
The Chinese developed the South Pointing Chariot in 115 BCE. This device featured a differential gear, later used in modern times to make analog computers in the mid-20th Century.
The Indian grammarian Panini wrote the Ashtadhyayi in the 5th Century BCE. In this work he created 3,959 rules of grammar for Indias Sanskrit language. This important work is the oldest surviving linguistic book and introduced the idea of metarules, transformations, and recursions, all of which have important applications in computer science.
The Inca created digital computers using giant loom-like wooden structures that tied and untied knots in rope. The knots were digital bits. These computers allowed the central government to keep track of the agricultural and economic details of their far-flung empire. The Spanish conquered the Inca during fighting that stretched from 1532 to 1572. The Spanish destroyed all but one of the Inca computers in the belief that the only way the machines could provide the detailed information was if they were Satanic divination devices. Archaeologists have long known that the Inca used knotted strings woven from cotton, llama wool, or alpaca wool called khipu or quipus to record accounting and census information, and possibly calendar and astronomical data and literature. In recent years archaeologists have figured out that the one remaining device, although in ruins, was clearly a computer.
Charles Babbage created the difference engine and the analytical engine, often considered to be the first modern computers. Augusta Ada King, the Countess of Lovelace, was the first modern computer programmer.
In the 1800s, the first computers were programmable devices for controlling the weaving machines in the factories of the Industrial Revolution. Created by Charles Babbage, these early computers used Punch cards as data storage (the cards contained the control codes for the various patterns). These cards were very similiar to the famous Hollerinth cards developed later. The first computer programmer was Lady Ada, for whom the Ada programming language is named.
In 1822 Charles Babbage proposed a difference engine for automated calculating. In 1933 Babbage started work on his Analytical Engine, a mechanical computer with all of the elements of a modern computer, including control, arithmetic, and memory, but the technology of the day couldnt produce gears with enough precision or reliability to make his computer possible. The Analytical Engine would have been programmed with Jacquards punched cards. Babbage designed the Difference Engine No.2. Lady Ada Lovelace wrote a program for the Analytical Engine that would have correctly calculated a sequence of Bernoulli numbers, but was never able to test her program because the machine wasnt built.
George Boole introduced what is now called Boolean algebra in 1854. This branch of mathematics was essential for creating the complex circuits in modern electronic digital computers.
In the 1900s, researchers started experimenting with both analog and digital computers using vacuum tubes. Some of the most successful early computers were analog computers, capable of performing advanced calculus problems rather quickly. But the real future of computing was digital rather than analog. Building on the technology and math used for telephone and telegraph switching networks, researchers started building the first electronic digital computers.
Leonardo Torres y Quevedo first proposed floating point arithmetic in Madrid in 1914. Konrad Zuse independently proposed the same idea in Berlin in 1936 and built it into the hardware of his Zuse computer. George Stibitz also indpendently proposed the idea in New Jersey in 1939.
The first modern computer was the German Zuse computer (Z3) in 1941. In 1944 Howard Aiken of Harvard University created the Harvard Mark I and Mark II. The Mark I was primarily mechanical, while the Mark II was primarily based on reed relays. Telephone and telegraph companies had been using reed relays for the logic circuits needed for large scale switching networks.
The first modern electronic computer was the ENIAC in 1946, using 18,000 vacuum tubes. See below for information on Von Neumanns important contributions.
The first solid-state (or transistor) computer was the TRADIC, built at Bell Laboratories in 1954. The transistor had previously been invented at Bell Labs in 1948.
Computers: Zuse Z1 (Germany, 1 OPS, first mechanical programmable binary computer, storage for a total of 64 numbers stored as 22 bit floating point numbers with 7-bit exponent, 15-bit signifocana [one implicit bit], and sign bit); Konrad Zuse called his floating point hardware semi-logarithmic notation and included the ability to handle infinity and undefined.
Computers: Atanasoff-Berry Computer; Zuse Z3 (Germany, 20 OPS, added floating point exceptions, plus and minus infinity, and undefined)
Computers: work started on Zuse Z4
Computers: Harvard Mark I (U.S.); Colossus 1 (U.K., 5 kOPS)
Computers: Colossus 2 (U.K., single processor, 25 kOPS); Harvard Mark II and AT&T Bell Labortories Model V (both relay computers) were the first American computers to include floating point hardware
Plankalkül (Plan Calculus), created by Konrad Zuse for the Z3 computer in Nazi germany, may have been the first programming language (other than assemblers). This was a surprisingly advanced programming language, with many features that didnt appear again until the 1980s.
Computers: Zuse Z4 (relay based computer, first commercial computer)
Computers: UPenn Eniac (5 kOPS); Colossus 2 (parallel processor, 50 kOPS)
Technology: electrostatic memory
Computers: IBM SSEC; Manchester SSEM
Technology: random access memory; magnetic drums; transistor
Short Code created in 1949. This programming language was compiled into machine code by hand.
Computers: Manchester Mark 1
Grace Hopper starts work on A-0.
Computers: Ferranti Mark 1 (first commercial computer); Leo I (frst business computer); UNIVAC I, Whirlwind
Autocode, a symbolic assembler for the Manchester Mark I computer, was created in 1952 by Alick E. Glennie. Later used on other computers.
A-0 (also known as AT-3), the first compiler, was created in 1952 by Grace Murray Hopper. She later created A-2, ARITH-MATIC, MATH-MATIC, and FLOW-MATIC, as well as being one of the leaders in the development of COBOL.Grace Hopper was working for Remington Rand at the time. Rand released the language as MATH-MATIC in 1957.
According to some sources, first work started on FORTRAN.
Computers: UNIVAC 1101; IBM 701
Games: OXO (a graphic version of Tic-Tac-Toe created by A.S. Douglas on the EDSAC computer at the University of Cambridge to demonstrate ideas on human-computer interaction)
FORTRAN (FORmula TRANslator) was created in 1954 by John Backus and other researchers at International Business Machines (now IBM). Released in 1957. FORTRAN is the oldest programming language still in common use. Identifiers were limited to six characters. Elegant representation of mathematic expressions, as well as relatively easy input and output. FORTRAN was based on A-0.
Often referred to as a scientific language, FORTRAN was the first high-level language, using the first compiler ever developed. Prior to the development of FORTRAN computer programmers were required to program in machine/assembly code, which was an extremely difficult and time consuming task, not to mention the dreadful chore of debugging the code. The objective during its design was to create a programming language that would be: simple to learn, suitable for a wide variety of applications, machine independent, and would allow complex mathematical expressions to be stated similarly to regular algebraic notation. While still being almost as efficient in execution as assembly language. Since FORTRAN was so much easier to code, programmers were able to write programs 500% faster than before, while execution efficiency was only reduced by 20%, this allowed them to focus more on the problem solving aspects of a problem, and less on coding.
FORTRAN was so innovative not only because it was the first high-level language [still in use], but also because of its compiler, which is credited as giving rise to the branch of computer science now known as compiler theory. Several years after its release FORTRAN had developed many different dialects, (due to special tweaking by programmers trying to make it better suit their personal needs) making it very difficult to transfer programs from one machine to another. Neal Ziring, The Language Guide, University of Michigan
Some of the more significant features of the language are listed below: Neal Ziring, The Language Guide, University of Michigan
- Simple to learn - when FORTRAN was design one of the objectives was to write a language that was easy to learn and understand.
- Machine Independent - allows for easy transportation of a program from one machine to another.
- More natural ways to express mathematical functions - FORTRAN permits even severely complex mathematical functions to be expressed similarly to regular algebraic notation.
- Problem orientated language
- Remains close to and exploits the available hardware
- Efficient execution - there is only an approximate 20% decrease in efficiency as compared to assembly/machine code.
- Ability to control storage allocation -programmers were able to easily control the allocation of storage (although this is considered to be a dangerous practice today, it was quite important some time ago due to limited memory.
- More freedom in code layout - unlike assembly/machine language, code does not need to be laid out in rigidly defined columns, (though it still must remain within the parameters of the FORTRAN source code form).
42. You can measure a programmers perspective by noting his attitude on the continuing vitality of FORTRAN. Alan Perlis, Epigrams on Programming, ACMs SIGPLAN Notices Volume 17, No. 9, September 1982, pages 7-13
Computers: IBM 650; IBM 704 (vacuum tube computer with floating point); IBM NORC (67 kOPS)
Technology: magnetic core memory
Operating Systems: GMOS (General Motors OS for IBM 701)
Computers: Harwell CADET
Researchers at MIT begin experimenting with direct keyboard input into computers.
IPL (Information Processing Language) was created in 1956 by A. Newell, H. Simon, and J.C. Shaw. IPL was a low level list processing language which implemented recursive programming.
Operating Systems: GM-NAA I/O
Computers: IBM 305 RAMAC; MIT TX-0 (83 kOPS)
Technology: hard disk
MATH-MATIC was released by the Rand Corporation in 1957. The language was derived from Grace Murray Hoppers A-0.
FLOW-MATIC, also called B-0, was created in 1957 by Grace Murray Hopper.
The first commercial FORTRAN program was run at Westinghouse. The first compile run produced a missing comma diagnostic. The second attempt was a success.
The U.S. government created the Advanced Research Project Group (ARPA) in esponse to the Soviet Unions launching of Sputnik. ARPA was intended to develop key technology that was too risky for private business to develop.
Computers: IBM 608
Technology: dot matrix printer
FORTRAN II in 1958 introduces subroutines, functions, loops, and a primitive For loop.
IAL (International Algebraic Logic) started as the project later renamed ALGOL 58. The theoretical definition of the language is published. No compiler.
LISP (LISt Processing) was created n 1958 and released in 1960 by John McCarthy of MIT. LISP is the second oldest programming language still in common use. LISP was intended for writing artificial intelligence programs.
Interest in artificial intelligence first surfaced in the mid 1950. Linguistics, psychology, and mathematics were only some areas of application for AI. Linguists were concerned with natural language processing, while psychologists were interested in modeling human information and retrieval. Mathematicians were more interested in automating the theorem proving process. The common need among all of these applications was a method to allow computers to process symbolic data in lists.
IBM was one of the first companies interested in AI in the 1950s. At the same time, the FORTRAN project was still going on. Because of the high cost associated with producing the first FORTRAN compiler, they decided to include the list processing functionality into FORTRAN. The FORTRAN List Processing Language (FLPL) was designed and implemented as an extention to FORTRAN.
In 1958 John McCarthy took a summer position at the IBM Information Research Department. He was hired to create a set of requirements for doing symbolic computation. The first attempt at this was differentiation of algebraic expressions. This initial experiment produced a list of of language requirements, most notably was recursion and conditional expressions. At the time, not even FORTRAN (the only high-level language in existance) had these functions.
It was at the 1956 Dartmouth Summer Research Project on Artificial Intelligence that John McCarthy first developed the basics behind Lisp. His motivation was to develop a list processing language for Artificial Intelligence. By 1965 the primary dialect of Lisp was created (version 1.5). By 1970 special-purpose computers known as Lisp Machines, were designed to run Lisp programs. 1980 was the year that object-oriented concepts were integrated into the language. By 1986, the X3J13 group formed to produce a draft for ANSI Common Lisp standard. Finally in 1992, X3J13 group published the American National Standard for Common Lisp. Neal Ziring, The Language Guide, University of Michigan
Some of the more significant features of the language are listed below: Neal Ziring, The Language Guide, University of Michigan
- Atoms & Lists - Lisp uses two different types of data structures, atoms and lists.
- Atoms are similar to identifiers, but can also be numeric constants
- Lists can be lists of atoms, lists, or any combination of the two
- Functional Programming Style - all computation is performed by applying functions to arguments. Variable declarations are rarely used.
- Uniform Representation of Data and Code - example: the list (A B C D)
- a list of four elements (interpreted as data)
- is the application of the function named A to the three parameters B, C, and D (interpreted as code)
- Reliance on Recursion - a strong reliance on recursion has allowed Lisp to be successful in many areas, including Artificial Intelligence.
- Garbage Collection - Lisp has built-in garbage collection, so programmers do not need to explicitly free dynamically allocated memory.
55. A LISP programmer knows the value of everything, but the cost of nothing. Alan Perlis, Epigrams on Programming, ACMs SIGPLAN Notices Volume 17, No. 9, September 1982, pages 7-13
Operating Systems: UMES
Computers: UNIVAC II; IBM AN/FSQ-7 (400 kOPS)
Games:Tennis For Two (developed by William Higinnotham using an osciliscope and an analog computer)
Technology: integrated circuit
COBOL (COmmon Business Oriented Language) was created in May 1959 by the Short Range Committee of the U.S. Department of Defense (DoD). The CODASYL committee (COnference on DAta SYstems Languages) worked from May 1959 to April 1960. Official ANSI standards included COBOL-68 (1968), COBOL-74 (1974), COBOL-85 (1985), and COBOL-2002 (2002). COBOL 97 (1997) introduced an object oriented version of COBOL. COBOL programs are divided into four divisions: identification, environment, data, and procedure. The divisions are further divided into sections. Introduced the RECORD data structure. Emphasized a verbose style intended to make it easy for business managers to read programs. Admiral Grace Hopper is recognized as the major contributor to the original COBOl language and as the inventor of compilers.
LISP 1.5 released in 1959.
DYNAMO is a computer program for translating mathematical models from an easy-to-understand notation into tabulated and plotted results.
A model written in DYNAMO consists of a number of algebraic relationships that relate the variables one to another. Although similar to FORTRAN, it is easier to learn and understand. DYNAMO stands for DYNAmic MOdels. It was written by Dr. Phyllis Fox and Alexander L. Pugh, III, and was completed in 1959. It grew out of an earlier language called SIMPLE (for Simulation of Industrial Management Problems with Lots of Equations), written in 1958 by Richard K. Bennett. Language Finger, Maureen and Mike Mansfield Library, University of Montana.
ERMA (Electronic Recording Method of Accounting), a magnetic ink and computer readable font, was created for the Bank of America.
Operating Systems: SHARE
Computers: IBM 1401
ALGOL (ALGOrithmic Language) was released in 1960. Major releases in 1960 (ALGOL 60) and 1968 (ALGOL 68). ALGOL is the first block-structured labguage and is considered to be the first second generation computer language. This was the first programming language that was designed to be machine independent. ALGOL introduced such concepts as: block structure of code (marked by BEGIN and END), scope of variables (local variables inside blocks), BNF (Backus Naur Form) notation for defining syntax, dynamic arrays, reserved words, IF THEN ELSE, FOR, WHILE loop, the := symbol for assignment, SWITCH with GOTOs, and user defined data types. ALGOL became the most popular programming language in Europe in the mid- and late-1960s.
C.A.R. Hoare invents the Quicksortin 1960.
Operating Systems: IBSYS
Computers: DEC PDP-1; CDC 1604; UNIVAC LARC (250 kFLOPS)
Operating Systems: CTSS, Burroughs MCP
Computers: IBM 7030 Stretch (1.2 MFLOPS)
APL (A Programming Language) was published in the 1962 book A Programming Language by Kenneth E. Iverson and a subset was first released in 1964. The language APL was based on a notation that Iverson invented at Harvard University in 1957. APL was intended for mathematical work and used its own special character set. Particularly good at matrix manipulation. In 1957 it introduced the array. APL used a special character set and required special keyboards, displays, and printers (or printer heads).
FORTRAN IV is released in 1962.
Simula was created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center between 1962 and 1965. A compiler became available in 1964. Simula I and Simula 67 (1967) were the first object-oriented programming languages.
SNOBOL (StroNg Oriented symBOli Language) was created in 1962 by D.J. Farber, R.E. Griswold, and F.P. Polensky at Bell Telephone Laboratories. Intended for processing strings, the language was the first to use associative arrays, indexed by any type of key. Had features for pattern-matching, concatenation, and alternation. Allowed running code stored in strings. Data types: integer, real, array, table, pattern, and user defined types.
SpaceWarI, the first interactive computer game, was created by MIT students Slug Russel, Shag Graetz, and Alan Kotok on DECs PDP-1.
Operating Systems: GECOS
Games: Spacewar! (created by group of M.I.T. students on the DEC PDP-1)
Computers: ATLAS, UNIVAC 1100/2200 (introduced two floating point formats, single precision and double precision; single precision: 36 bits, 1-bit sign, 8-bit exponent, and 27-bit significand; double precision: 36 bits, 1-bit sign, 11-bit exponent, and 60-bit significand), IBM 7094 (followed the UNIVAC, also had single and double precision numbers)
Technology: RAND Corporation proposes the internet
Work on PL/I starts in 1963.
Data-Text was the original and most general problem-oriented computer language for social scientists. It has the ability to handle very complicated data processing problems and extremely intricate statistical analyses. It arose when FORTRAN proved inadequate for such uses. Designed by Couch and others, it was first used in 1963/64, then extensively revised in 1971. The Data-Text System was originally programmed in FAP, later in FORTRAN, and finally its own language was developed. Language Finger, Maureen and Mike Mansfield Library, University of Montana.
Sketchpad, an interactive real time computer drawing system, was created in 1963 by Ivan Sutherland as his doctoral thesis at MIT. The system used a light pen to draw and manipulate geometric figures on a computer screen.
ASCII (American Standard Code for Information Interchange) was introduced in 1963.
Computers: DEC PDP-6
BASIC (Beginners All-purpose Symbolic Instruction Code) was designed as a teaching language in 1963 by John George Kemeny and Thomas Eugene Kurtz of Dartmouth College. BASIC was intended to make it easy to learn programming. The first BASIC program was run at 4 a.m. May 1, 1964.
PL/I (Programming Language One) was created in 1964 at IBMs Hursley Laboratories in the United Kingdom. PL/I was intended to combine the scientific abilities of FORTRAN with the business capabilities of COBOL, plus additional facilities for systems programming. Also borrows from ALGOL 60. Originally called NPL, or New Programming Language. Introduces storage classes (automatic, static, controlled, and based), exception processing (On conditions), Select When Otherwise conditional structure, and several variations of the DO loop. Numerous data types, including control over precision.
RPG (Report Program Generator) was created in 1964 by IBM. Intended for creating commercial and business reports.
APL\360 implemented in 1964.
Operating Systems: DTSS, TOPS-10
Computers: IBM 360; DEC PDP-8; CDC 6600 (first supercomputer, scalar processor, 3 MFLOPS)
Technology: super computing
SNOBOL 3 was released in 1965.
Attribute grammars were created in 1965 by Donald Knuth.
Operating Systems: OS/360; Multics
Technology: time-sharing; fuzzy logic; packet switching; bulletin board system (BBS); email
ALGOL W was created in 1966 by Niklaus Wirth. ALGOL W included RECORDs, dynamic data structures, CASE, passing parameters by value, and precedence of operators.
Euler was created in 1966 by Niklaus Wirth.
FORTRAN 66 was released in 1966. The language was rarely used.
ISWIM (If You See What I Mean) was described in 1966 in Peter J. Landins article The Next 700 Programming Languages in the Communications of the ACM. ISWIM, the first purely functional language, influenced functional programming languages. The first language to use lazy evaluation.
LISP 2 was released in 1966.
Logo was created in 1967 (work started in 1966) by Seymour Papert. Intended as a programming language for children. Started as a drawing program. Based on moving a turtle on the computer screen.
Simula 67 was created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in 1967. Introduced classes, methods, inheriteance, and objects that are instances of classes.
SNOBOL 4 (StroNg Oriented symBOli Language) was released in 1967.
CPL (Combined Programming Language) was created in 1967 at Cambridge and London Universities. Combined ALGOL 60 and functional language. Used polymorphic testing structures. Included the ANY type, lists, and arrays.
Operating Systems: ITS; CP/CMS; WAITS
ALGOL 68 in 1968 introduced the =+ token to combine assignment and add, UNION, and CASTing of types. It included the IF THEN ELIF FI structure, CASE structure, and user-defined operators.
Forth was created by Charles H. Moore in 1968. Stack based language. The name Forth was a reference to Moores claim that he had created a fourth generation programming language.
ALTRAN, a variant of FORTRAN, was released.
ANSI version of COBOL defined.
Edsger Dijkstra wrote a letter to the Communications of the ACM claiming that the use of GOTO was harmful.
Computers: DEC PDP-10
Technology: microprocessor; interactive computing (including mouse, windows, hypertext, and fullscreen word processing)
BCPL (Basic CPL) was created in 1969 in England. Intended as a simplified version of CPL, includes the control structures For, Loop, If Then, While, Until Repeat, Repeat While, and Switch Case.
BCPL was an early computer language. It provided for comments between slashes. The name is condensed from Basic CPL; CPL was jointly designed by the universities of Cambridge and London. Officially, the C stood first for Cambridge, then later for Combined. -- Unofficially it was generally accepted as standing for Christopher Strachey, who was the main impetus behind the language. Language Finger, Maureen and Mike Mansfield Library, University of Montana.
B (derived from BCPL) developed in 1969 by Ken Thompson of Bell Telephone Laboratories for use in systems programming for UNIX. This was the parent language of C.
SmallTalk was created in 1969 at Xerox PARC by a team led by Alan Kay, Adele Goldberg, Ted Kaehler, and Scott Wallace. Fully object oriented programming language that introduces a graphic environment with windows and a mouse.
RS-232-C standard for serial communication introduced in 1969.
UNIX created at AT&T Bell telephone Laboratories by Kenneth Thompson and Dennis Ritchie.
ARPA creates ARPAnet, the forerunner of the Internet (originally hosted by UCLA, UC Santa Barbara, University of Utah, and Stanford Research Institute).
Operating Systems: ACP; TENEX/TOPS-20; work started on Unix
Computers: CDC 7600 (36 MFLOPS)
Games: Space Travel (written by Jeremy Ben for Multics; when AT&T pulled out of the Multics project, J. Ben ported the program to FORTRAN running on GECOS on the GE 635; then ported by J. Ben and Dennis Ritchie in PDP-7 assembly language; the process of porting the game to the PDP-7 computer was the beginning of Unix)
Technology: ARPANET (military/academic precursor to the Internet); RS-232; networking; laser printer (invented by Gary Starkweather at Xerox)
Prolog (PROgramming LOGic) was created in 1972 in France by Alan Colmerauer with Philippe Roussel. Introduces Logic Programming.
Pascal (named for French religious fanatic and mathematician Blaise Pascal) was created in 1970 by Niklaus Wirth on a CDC 6000-series computer. Work started in 1968. Pascl was intended as a teaching language to replace BASIC, but quickly developed into a general purpose programming language. Programs compiled to a platform-independent intermediate P-code. The compiler for pascal was written in Pascal, an influential first in language design.
Forth used to write the program to control the Kitt Peaks telescope.
BLISS was a systems programming language developed by W.A. Wulf, D.B. Russell, and A.N. Habermann at Carnegie Mellon University in 1970. BLISS was a very popular systems programming language until the rise of C. The original compiler was noted for its optimizing of code. Most of the utilities for DECs VMS operating system were written in BLISS-32. BLISS was a typeless language based on expressions rather than statements. Expressions produced values, and possibly caused other actions, such as modification of storage, transfer of control, or looping. BLISS had powerful macro facilities, conditional execution of statements, subroutines, built-in string functions, arrays, and some automatic data conversions. BLISS lacked I/O instructions on the assumption that systems I/O would actually be built in the language.
Operating Systems: Unix; RT-11; RSTS-11
Computers: Datapoint 2200; DEC PDP-11
Technology: dynamic RAM; flight data processor
Computers: Intel 4004 (four-bit microprocessor)
Games: Computer Space (first commercial vidoe game)
Technology: floppy disk; first electronic calculator (T1)
C was developed from 1969-1972 by Dennis Ritchie of Bell Telephone Laboratories for use in systems programming for UNIX.
Pong, the first arcade video game, was introduced by Nolan Bushnell in 1972. His company was called Atari.
Operating Systems: VM/CMS
Computers: Intel 8008 (microprocessor); Rockwell PPS-4 (microprocessor); Fairchild PPS-25 (microprocessor)
Games: Pong; Magnavox Odysssey (first home video game console)
Technology: game console (Magnavox Odyssey); first scientific calculator (HP); first 32-bit minicomputer; first arcade video game
ML (Meta Language) was created in 1973 by R. Milner of the University of Edinburgh. Functional language implemented in LISP.
Actor is a mathematical model for concurrent computation first published bby Hewitt in 1973.
Actor is an object-oriented programming language. It was developed by the Whitewater Group in Evanston, Ill. Language Finger, Maureen and Mike Mansfield Library, University of Montana.
ARPA creates Transmission Control Protocol/Internet Protocol (TCP/IP) to network together computers for ARPAnet.
Computers: National IMP (microprocessor)
Technology: TCP/IP; ethernet
SQL (Standard Query Language) was designed by Donald D. Chamberlin and Raymond F. Boyce of IBM in 1974.
AWK (first letters of the three inventors) was designed by Aho, Weinberger, and Kerninghan in 1974. Word processing language based on regular expressions.
Alphard (named for the brightest star in Hydra) was designed by William Wulf, Mary Shaw, and Ralph London of Carnegie-Mellon University in 1974. A Pascal-like language intended for data abstraction and verification. Make use of the form, which combined a specification and an implementation, to give the programmer control over the impolementation of abstract data types.
Alphard is a computer language designed to support the abstraction and verification techniques required by modern programming methodology. Alphards constructs allow a programmer to isolate an abstraction, specifying its behavior publicly while localizing knowledge about its implementation. It originated from studies at both Carnegie-Mellon University and the Information Sciences Institute. Language Finger, Maureen and Mike Mansfield Library, University of Montana.
CLU began to be developed in 1974; a second version was designed in 1977. It consists of a group of modules. One of the primary goals in its development was to provide clusters which permit user-defined types to be treated similarly to built-in types. Language Finger, Maureen and Mike Mansfield Library, University of Montana.
Operating Systems: MVS
Computers: Intel 8080 (microprocessor); Motorola 6800 (microprocessor); CDC STAR-100 (100 MFLOPS)
Technology: Telenet (first commercial version of ARPANET)
Scheme, based on LISP, was created by Guy Lewis Steele Jr. and Gerald Jay Sussman at MIT in 1975.
Tiny BASIC created by Dr. Wong in 1975 runs on Intel 8080 and Zilog Z80 computers.
RATFOR (RATional FORtran) created by Brian Kernigan in 1975. Used as a precompiler for FORTRAN. RATFOR allows C-like control structures in FORTRAN.
Computers: Altair 880 (first personal computer); Fairchild F-8 (microprocessor); MOS Technology 6502 (microprocessor); Burroughs ILLIAC IV (150 MFLOPS)
Technology: single board computer; laser printer (commercial release by IBM)
Design System Language, a forerunner of PostScript, is created in 1976. The Forth-like language handles three dimensional databases.
SASL (Saint Andrews Static Language) is created by D. Turner in 1976. Intended for teaching functional programming. Based on ISWIM. Unlimited data structures.
CP/M, an operating system for microcomputers, was created by Gary Kildall in 1976.
Operating Systems: CP/M
Computers: Zilog Z-80 (microprocessor); Cray 1 (250 MFLOPS); Apple I
Technology: inkjet printer; Alan Kays Xerox NoteTaker developed at Xerox PARC
Icon, based on SNOBOL, was created in 1977 by faculty, staff, and students at the University of Arizona under the direction of Ralph E. Griswold. Icon uses some programming structures similar to pascal and C. Structured types include list, set, and table (dictionary).
OPS5 was created by Charles Forgy in 1977.
FP was presented by John Backus in his 1977 Turing Award lecture Can Programming be Liberated From the von Neumann Style? A Functional Style and its Algebra of Programs.
Modula (MODUlar LAnguage) was created by Niklaus Wirth, who started work in 1977. Modula-2 was released in 1979.
Computers: DEC VAX-11; Apple II; TRS-80; Commodore PET; Cray 1A
Games: Atari 2600 (first popular home video game consle)
CSP was created in 1978 by C.A.R. Hoare.
C.A.R. Hoare wrote a paper in 1978 about parallel computing in which he included a fragment of a language. Later, this fragment came to be known as CSP. In it, process specifications lead to process creation and coordination. The name stands for Communicating Sequential Processes. Later, the separate computer language Occam was based on CSP. Language Finger, Maureen and Mike Mansfield Library, University of Montana.
Operating Systems: Apple DOS 3.1; VMS (later renamed OpenVMS)
Programming Languages: CSP; FP; VISICALC
Computers: Intel 8086 (microprocessor)
Games: Space Invaders (arcade game using raster graphics; so popular in Japan that the government has to quadruple its supply of Yen)
Modula-2 was released in 1979. Created by Niklaus Wirth, who started work in 1977.
VisiCalc (VISIble CALculator) was created for the Apple II personal computer in 1979 by Harvard MBA candidate Daniel Bricklin and programmer Robert Frankston.
REXX (REstructured eXtended eXecutor) was designed by Michael Cowlishaw of IBM UK Laboratories. REXX was both an interpretted procedural language and a macro language. As a maco language, REXX can be used in application software.
Work started on C with Classes, the language that eventually became C++.
Computers: Motorola MC68000 (microprocessor); Intel 8088 (microprocessor)
Games: Lunar Lander (arcade video game, first to use vector graphics); Asteroids (vector arcade game); Galaxian (raster arcade game, color screen); first Multi-USer Dungeon (MUD, written by Roy Trubshaw , a student at Essex University, forrunner of modern massively multiplayer games); Warrior (first head-to-head arcade fighting game)
Technology: first spreadsheet (VisiCalc); object oriented programming; compact disk; Usenet discussion groups
dBASE II was created in 1980 by Wayne Ratliff at the Jet Propulsion Laboratories in Pasadena, California. The original version of the language was called Vulcan. Note that the first version of dBASE was called dBASE II.
Operating Systems: OS-9
Computers: Commodore VIC-20; ZX80; Apple III
Games: Battlezone (vector arcade video game, dual joystick controller and periscope-like viewer); Berzerk (raster arcade video game, used primative speech synthesis); Centipede (raster arcade video game, used trackball controller); Missile Command (raster arcade video game, used trackball controller); Defender (raster arcade video game); Pac-Man (raster arcade video game); Phoenix (raster arcade video game, use of musical score); Rally-X (raster arcade video game, first game to have a bonus round); Star Castle (vector arcade video game, color provided by transparent plastic screen overlay); Tempest (vector arcade video game, first color vector game); Wizard of Wor (raster arcade video game)
Relational Language was created in 1981 by Clark and Gregory.
Operating Systems: MS-DOS; Pilot
Computers: 8010 Star; ZX81; IBM PC; Osborne 1 (first portable computer); Xerox Star; MIPS I (microprocessor); CDC Cyber 205 (400 MFLOPS)
Games: Donkey Kong (raster arcade video game); Frogger (raster arcade video game); Scramble (raster arcade video game, horizontal scrolling); Galaga (raster arcade video game); Ms. Pac-Man (raster arcade video game); Qix (raster arcade video game); Gorf (raster arcade video game, synthesized speech); Zork (first adventure game)
Technology: portable PC; ISA bus; CGA video card
ANSI C The American National Standards Institute (ANSI) formed a technical subcommittee, X3J11, to create a standard for the C language and its run-time libraries.
InterPress, the forerunner of PostScript, was created in 1982 by John Warnock and Martin Newell at Xerox PARC.
Operating Systems: SunOS
Computers: Cray X-MP; BBC Micro; Commodore C64 (first home computer with a dedicated sound chip); Compaq Portable; ZX Spectrum; Atari 5200; Intel 80286 (microprocessor)
Games: BurgerTime (raster arcade video game); Dig Dug (raster arcade video game); Donkey Kong Junior (raster arcade video game); Joust (raster arcade video game); Moon Patrol (raster arcade video game, first game with parallax scrolling); Pole Position (raster arcade video game); Q*bert (raster arcade video game); Robotron 2084 (raster arcade video game, dual joystick); Time Pilot (raster arcade video game); Tron (raster arcade video game); Xevious (raster arcade video game, first game promoted with a TV commercial); Zaxxon (raster arcade video game, first game to use axonometric projection)
Technology: MIDI; RISC; IBM PC compatibles
Ada was first released in 1983 (ADA 83), with major releases in 1995 (ADA 95) and 2005 (ADA 2005). Ada was created by the U.S. Department of Defense (DoD), originally intended for embedded systems and later intended for all military computing purposes. Ada is named for Augusta Ada King, the Countess of Lovelace, the first computer programmer inmodern times.
Concurrent Prolog was created in 1983 by Shapiro.
Parlog was created in 1983 by Clark and Gregory.
C++ was developed in 1983 by Bjarne Stroustrup at Bell Telephone Laboratories to extend C for object oriented programming.
Turbo Pascal, a popular Pascal compiler, was released.
The University of California at Berkeley released a version of UNIX that included TCP/IP.
Operating Systems: Lisa OS
Computers: Apple IIe; Lisa; IBM XT; IBM PC Jr; ARM (microprocessor); Cray X-MP/4 (941 MFLOPS)
Games: Dragons Lair (raster arcade video game, first video game to use laserdisc video; note that the gambling device Quarterhorse used the laserdisc first); Elevator Action (raster arcade video game); Gyruss (raster arcade video game, used the musical score Toccata and Fugue in D minor by Bach); Mappy (raster arcade video game, side scrolling); Mario Bros. (raster arcade video game); Spy Hunter (raster arcade video game, musical score Peter Gunn); Star Wars (vector arcade video game, digitized samples from the movie of actors voices); Tapper (raster arcade video game); Lode Runner (Apple ][E); Journey (arcade video game includes tape of the song Separate Ways leading to licensed music in video games)
Technology: math coprocessor; PC harddisk
Objective C, an extension of C inspired by SmallTalk, was created in 1984 by Brad Cox. Used to write NextStep, the operating system of the Next computer.
Standard ML, based on ML, was created in 1984 by R. Milner of the University of Edinburgh.
PostScript was created in 1984 by John Warnock and Chuck Geschke at Adobe.
Operating Systems: GNU project started; MacOS 1
Computers: Apple Macintosh; IBM AT; Apple IIc; MIPS R2000 (microprocessor); M-13 (U.S.S.R., 2.4 GFLOPS); Cray XMP-22
Software: Apple MacWrite; Apple MacPaint
Games: 1942 (raster arcade video game); Paperboy (raster arcade video game, unusual controllers, high resolution display); Punch-Out (raster arcade video game, digitized voice, dual monitors)
Technology: WYSIWYG word processing; LaserJet printer; DNS (Domain Name Server); IDE interface
Paradox was created in 1985 as a competitor to the dBASE family of relational data base languages.
PageMaker was created for the Apple Macintosh in 1985 by Aldus.
Operating Systems: GEM; AmigaOS; AtariOS; WIndows 1.0; Mac OS 2
Computers: Cray-2/8 (3.9 GFLOPS); Atari ST; Commodore Amiga; Apple Macintosh XL; Intel 80386 (microprocessor); Sun SPARC (microprocessor)
Software: Apple Macintosh Office; Aldus PageMaker (Macintosh only)
Games: Super Mario Bros.; Tetris (puzzle game; invented by Russian mathematician Alexey Pajitnov to test equipment that was going to be used for artificial intelligence and speech recognition research); Excitebike (first game with battery backup for saving and loading game play)
Technology: desktop publishing; EGA video card; CD-ROM; expanded memory (for IBM-PC compatibles; Apple LaserWriter
Eiffel (named for Gustave Eiffel, designer of the Eiffel Tower) was released in 1986 by Bertrand Meyer. Work started on September 14, 1985.
Eiffel is a computer language in the public domain. Its evolution is controlled by Nonprofit International Consortium for Eiffel (NICE), but it is open to any interested party. It is intended to treat software construction as a serious engineering enterprise, and therefore is named for the French architect, Gustave Eiffel. It aims to help specify, design, implement, and change quality software. Language Finger, Maureen and Mike Mansfield Library, University of Montana.
GAP (Groups, Algorithms, and Programming) was developed in 1986 by Johannes Meier, Werner Nickel, Alice Niemeter, Martin Schönert, and others. Intended to program mathematical algorithms.
CLP(R) was developed in 1986.
Operating Systems: Mach; AIX; GS-OS; HP-UX; Mac OS 3
Computers: Apple IIGS; Apple Macintosh Plus; Amstrad 1512; ARM2 (microprocessor); Cray XMP-48
Software: Apple Macintosh Programmers Workshop
Games: Metroid (one of first games to have password to save game proogress; first female protagonist in video games, non-linear game play; RPG)
CAML (Categorical Abstract Machine Language) was created by Suarez, Weiss, and Maury in 1987.
Perl (Practical Extracting and Report Language) was created by Larry Wall in 1987. Intended to replace the Unix shell, Sed, and Awk. Used in CGI scripts.
HyperCard was created by William Atkinson in 1987. HyperTalk was the scripting language built into HyperCard.
Thomas and John Knoll created the program Display, which eventually became PhotoShop. The program ran on the Apple Macintosh.
Adobe released the first version of Illustrator, running on the Apple Macintosh.
Operating Systems: IRIX; Minix; OS/2; Windows 2.0; MDOS (Myarc Disk Operating System); Mac OS 4; Mac OS 5
Computers: Apple Macintosh II; Apple Macintosh SE; Acorn Archimedes; Connection Machine (first massive parallel computer); IBM PS/2; Commodore Amiga 500; Nintendo Entertainment System
Software: Apple Hypercard; Apple MultiFinder; Adobe Illustrator (Macintosh only; later ported to NeXT, Silicon Graphics IRIX, Sun Solaris, and Microsoft Windows); Design (which eventually became ImagePro and then Photoshop; Macintosh only); QuarkXPress (Macintosh only)
Games: Final Fantasy (fantasy RPG); The Legend of Zelda (first free form adventure game); Gran Turismo (auto racing); Mike Tysons Punch Out (boxing sports game)
Technology: massive parallel computing; VGA video card; sound card for IBM-PC compatibles; Apple Desktop Bus (ADB)
CLOS, an object oriented version of LISP, was developed in 1988.
Mathematica was developed by Stephen Wolfram.
Oberon was created in 1986 by Niklaus Wirth.
Operating Systems: OS/400; Mac OS 6
Computers: Cray Y-MP; Apple IIc Plus
Software: ImagePro (which eventually became Photoshop; Macintosh only)
Games: Super Mario Bros. 2; Super Mario Bros 3 (Japanese release); Contra (side-scrolling shooter); Joh Madden Football (football sports game)
Technology: optical chip; EISA bus
ANSI C The American National Standards Institute (ANSI) completed the official ANSI C, called the American National Standard X3.159-1989.
HTML was developed in 1989.
Miranda (named for a character by Shakespeare) was created in 1989 by D. Turner. Based on SASL and ML. Lazy evaluation and embedded pattern matching.
Standard Interchange Languagewas developed in 1989.
Operating Systems: NeXtStep; RISC OS; SCO UNIX
Computers: Intel 80486 (microprocessor); ETA10-G/8 (10.3 GFLOPS)
Software: Microsoft Office; first (pre-Adobe) version of Photoshop (Macintosh only)
Games: Sim; SimCity; Warlords (four-player shooter)
Technology: ATA interface, World Wide Web
Haskell was developed in 1990.
Tim Berners-Lee of the European CERN laboratory created the World Wide Web on a NeXT computer.
In February of 1990, Adobe released the first version of the program PhotoShop (for the Apple Macintosh).
Operating Systems: BeOS; OSF/1
Computers: NEC SX-3/44R (Japan, 23.2 GFLOPS); Cray XMS; Cray Y-MP 8/8-64 (first Cray supercomputer to use UNIX); Apple Macintosh Classic; Neo Geo; Super Nintendo Entertainment System
Software: Adobe Photoshop (Macintosh only)
Games: Final Fantasy III released in Japan (fantasy RPG); Super Mario Bros 3 (Japanese release); Wing Commander (space combat game)
Technology: SVGA video card; VESA driver
Python (named for Monty Python Flying Circus) was created in 1991 by Guido van Rossum. A scripting language with dynamic types intended as a replacement for Perl.
Pov-Ray (Persistence of Vision) was created in 1991 by D.B.A. Collins and others. A language for describing 3D images.
Visual BASIC, a popular BASIC compiler, was released in 1991.
Linux operating system was released on September 17, 1991, by Finnish student Linus Torvalds.
Operating Systems: Linux kernel; Mac OS 7
Computers: Apple PowerBook; PowerPC (microprocessor); PARAM 8000 (India, created by Dr. Vijay Bhatkar, 1GFLOP)
Games: Street Fighter II (shooter); The Legend of Zelda: A Link to the Past (fantasy RPG); Sonic the Hedgehog; Sid Meyers Civilization
Dylan was created in 1992 by Apple Computer and others. Dylan was originally intended for use with the Apple Newton, but wasnt finished in time.
Oak, the forerunner of Java, was developed at Sun Microsystems.
Operating Systems: Solaris; Windows 3.1; OS/2 2.0; SLS Linux; Tru64 UNIX
Computers: Cray C90 (1 GFLOP)
Games: Wolfenstein 3D (ffirst fully 3D rendered game engine); Mortal Kombat; NHLPA 93 (multiplayer hockey sports game); Dune II (first real-time strategy game)
AppleScript, a scripting language for the Macintosh operating system and its application softweare, was released by Apple Computers.
Operating Systems: Windows NT 3.1; Stackware Linux; Debian GNU/Linux; Newton
Computers: Cray EL90; Cray T3D; Apple Newton; Apple Macintosh TV; Intel Pentium (microprocessor, 66MHz); Thinking Machines CM-5/1024 (59.7 GFLOPS); Fujitsu Numerical Wind Tunnel (Japan, 124.50 GFLOPS); Intel Paragon XP/S 140 (143.40 GFLOPS)
Games: Myst (first puzzle-based computer adventure game; CD-ROM game for Macintosh); Doom (made the first person shooter genre popular, pioneering work in immersive 3D graphics, networked multiplayer gaming, and support for customized additions and modifications; also proved that shareware distribution could work for game distribution); U.S. Senator Joseph Lieberman holds Congressional hearings and attempts to outlaw violent games
Work continued on Java with a version designed for the internet.
Operating Systems: Red Hat Linux
Computers: Cray J90; Apple Power Macintosh; Sony PlayStation; Fujitsu Numerical Wind Tunnel (Japan, 170.40 GFLOPS)
Games: Super Metroid (RPG)
Technology: DNA computing
Java (named for coffee) was created by James Gosling and others at Sun Microsystems and released for applets in 1995. Original work started in 1991 as an interactive language under the name Oak. Rewritten for the internet in 1994.
PHP (PHP Hypertext Processor) was created by Rasmus Lerdorf in 1995.
Ruby was created in 1995 by Yukihiro Matsumoto. Alternative to Perl and Python.
Delphi, a variation of Object Pacal, was released by Borland
Operating Systems: OpenBSD; OS/390; Windows 95
Computers: BeBox; Cray T3E; Cray T90; Intel Pentium Pro (microprocessor); Sun UltraSPARC (microprocessor)
Software: Microsoft Bob
Games: Chrono Trigger (fantasy RPG); Command & Conquer (real time strategy game)
Technology: DVD; wikis
UML (Unified Modeling Language) was created by Grady Booch, Jim Rumbaugh, and Ivar Jacobson in 1996 by combining the three modeling languages of each of the authors.
Operating Systems: MkLinux
Computers: Hitachi SR2201/1024 (Japan, 220.4 GFLOPS); Hitachi/Tsukuba CP=PACS/2048 (Japan, 368.2 GFLOPS)
Games: Tomb Raider and Lara Croft, Pokémon; Quake (first person shooter using new 3D rendering on daughter boards); Super Mario 64 (3D rendering)
REBOL (Relative Expression Based Object language) was created by Carl SassenRath in 1997. Extensible scripting language for internet and distributed computing. Has 45 types that use the same operators.
ECMAScript (named for the European standards group E.C.M.A.) was created in 1997.
Alloy, a structural modelling language, was developed at M.I.T.
Operating Systems: Mac OS 8
Computers: AMD K6 (microprocessor); Intel Pentium II (microprocessor); PalmPilot; Intel ASCI Red/9152 (1.338 TFLOPS)
Software: AOL Instant Messenger
Games: Final fantasy VII; Goldeneye 007 (one of the few successful movie to game transitions; based on 1995 James Bond movie Goldeneye); Castlevania: Symphony of the Night (2D fantasy RPG)
Technology: web blogging
Operating Systems: Windows 98
Computers: Apple iMac; Apple iMac G3; Intel Xeon (microprocessor)
Games: The Legend of Zelda: Ocarina of Time (fantasy RPG); Metal Gear Solid; Crash Bandicoot: Warped
Operating Systems: Mac OS 9
Computers: PowerMac; AMD Athlon (microprocessor); Intel Pentium III (microprocessor); BlackBerry; Apple iBook; TiVo; Intel ASCI Red/9632 (2.3796 TFLOPS)
D, designed by Walter Bright, is an object-oriented language based on C++, Java, Eiffel, and Python.
C# was created by Anders Hajlsberg of Microsoft in 2000. The main language of Microsofts .NET.
RELAX (REgular LAnguage description for XML) was designed by Murata Makoto.
Operating Systems: Mac OS 9; Windows ME; Windows 2000
Computers: Intel Pentium 4 (microprocessor, over 1 GHz); Sony PlayStation 2; IBM ASCI White (7.226 TFLOPS)
Games: Tony Hawks Pro Skater 2 (skateboarding sports game); Madden NFL 2001 (football sports game)
Technology: USB flash drive
AspectJ (Aspect for Java) was created at the Palo Alto Research Center in 2001.
Scriptol (Scriptwriter Oriented Language) was created by Dennis G. Sureau in 2001. New control structuress include for in, while let, and scan by. Variables and literals are objects. Supports XML as data structure.
Operating Systems: Mac OS X Cheetah; Windows XP; z/OS
Computers: Nintendo GameCube; Apple iPod; Intel Itanium (microprocessor); Xbox
Technology: blade server
Operating Systems: Mac OS X 10.1 Puma
Computers: Apple eMac; Apple iMac G4; Apple XServe; NEC Earth Simulator (Japan, 35.86 TFLOPS)
Operating Systems: Windows Server 2003; Mac OS X 10.2 Jaguar
Computers: PowerPC G5; AMD Athlon 64 (microprocessor); Intel Pentium M (microprocessor)
Games: Final Fantasy Crystal Chronicles
Scala was created February 2004 by Ecole Polytechnique Federale de Lausanne. Object oriented language that implements Python features in a Java syntax.
Operating Systems: Mac OS X 10.3 Panther
Computers: Apple iPod Mini; Apple iMac G5; Sony PlayStation Portable; IBM Blue Gene/L (70.72 TFLOPS)
Technology: DualDisc; PCI Express; USB FlashCard
Job Submission Description Language.
Operating Systems: Mac OS X 10.4 Tiger
Computers: IBM System z9; Apple iPod Nano; Apple Mac Mini; Intel Pentium D (microprocessor); Sun UltraSPARC IV (microprocessor); Xbox 360
Games: Lego Star Wars
Computers: Apple Intel-based iMac; Intel Core 2 (microprocessor); Sony PlayStation 3
Technology: Blu-Ray Disc
Operating Systems: Apple iOS (for iPhone); Windows Vista
Computers: AMD K10 (microprocessor), Apple TV; Apple iPhone; Apple iPod Touch; Amazon Kindle
Operating Systems: Google Android; Mac OS X 10.5 Leopard
Computers: Android Dev Phone 1; BlackBerry Storm; Intel Atom (microprocessor); MacBook Air; IBM RoadRunner (1.026 PFLOPS); Dhruva (India, 6 TFLOPS)
Operating Systems: Windows 7; Mac OS X 10.6 Snow Leopard
Computers: Motorola Driod; Palm Pre; Cray XT5 Jaguar (1.759 PFLOPS)
Computers: Apple iPad; IBM z196 (microprocessor); Apple iPhone 4; Kobo eReader; HTC Evo 4G
41. Some programming languages manage to absorbe change, but withstand progress. Alan Perlis, Epigrams on Programming, ACMs SIGPLAN Notices Volume 17, No. 9, September 1982, pages 7-13
69. In a 5 year period we get one superb programming language. Only we cant control when the 5 year period will begin. Alan Perlis, Epigrams on Programming, ACMs SIGPLAN Notices Volume 17, No. 9, September 1982, pages 7-13
free music player coding example
Coding example: I am making heavily documented and explained open source code for a method to play music for free almost any song, no subscription fees, no download costs, no advertisements, all completely legal. This is done by building a front-end to YouTube (which checks the copyright permissions for you).
View music player in action: www.musicinpublic.com/.
Create your own copy from the original source code/ (presented for learning programming).
Work on this project is very slow because I am homeless. I am available for work if someone can provide an indoor place to work in Costa Mesa, California, electricity, internet connections, a flat raised working surface (such as a table or desk), a sitting device (such as a chair or stool), and a fully functional reasonably modern used computer. Im already homeless, so you dont need to pay me (and I understand how much business people hate the minimum wage law). Just give me a chance to work.
Because I no longer have the computer and software to make PDFs, the book is available as an HTML file, which you can convert into a PDF.
Names and logos of various OSs are trademarks of their respective owners.