DOC PREVIEW
UMD CMSC 330 - A Brief History of Programming Languages

This preview shows page 1-2-3-4 out of 11 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 11 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 11 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 11 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 11 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 11 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

1CMSC 330: Organization of Programming LanguagesA Brief History of Programming LanguagesCMSC 330 2BabylonFounded roughly 4000 years ago• Located near the Euphrates River, 56 mi south of Baghdad, IraqHistorically influential in ancient western world Cuneiform writing system, written on clay tablets• Some of those tablets survive to this day• Those from Hammurabi dynasty (1800-1600 BC) include mathematical calculations¾ Also known for Code of Hammurabi, an early legal codeCMSC 330 3A Babylonian AlgorithmA [rectangular] cistern.The height is 3, 20, and a volume of 27, 46, 40 has been excavated.The length exceeds the width by 50.You should take the reciprocal of the height, 3, 20, obtaining 18.Multiply this by the volume, 27, 46, 40, obtaining 8, 20.Take half of 50 and square it, obtaining 10, 25.Add 8, 20, and you get 8, 30, 25The square root is 2, 55.Make two copies of this, adding [25] to the one and subtracting from the other.You find that 3, 20 [i.e., 3 1/3] is the length and 2, 30 [i.e., 2 1/2] is the width.This is the procedure.– Donald E. Knuth, Ancient Babylonian Algorithms, CACM July 1972The number n, m represents n*(60k) + m*(60k-1) for some kCMSC 330 4More About AlgorithmsEuclid’s Algorithm (Alexandria, Egypt, 300 BC)• Appeared in Elements• Computes gcd of two integerslet rec gcd a b =if b = 0 then a else gcd b (a mod b)Al-Khwarizmi (Baghdad, Iraq, 780–850 AD)• Al-Khwarizmi Concerning the Hindu Art of Reckoning• Translated into Latin (in 12th century?)¾ Author’s name rendered in Latin as algoritmi¾ Thus the word algorithmCMSC 330 5Charles Babbage (1791–1871)British mathematician & mechanical engineerInvented concept of a programmable computer• Partially built a Difference Engine¾ A mechanical calculator for computing polynomials¾ Uses finite difference method to avoid multiplication & division¾ Never completely finished¾ Model built in 1991 at the London Science MuseumCMSC 330 6The Analytical Engine (1837)Babbage described plans for an Analytical Engine• Digital, programmable using punch cards• Included branching, looping, arithmetic, and storage• Memory would store 1000 numbers w/ 500 digits each• Language similar to assembly language• Powered by steam enginePartially constructed by 1910• Used to compute a list of multiples of πIf built, would have been 1stTuring-complete computation device2CMSC 330 7Ada Lovelace (1815-52)British mathematician• Corresponded with Babbage from 1833 on• In 1843, translated Italian mathematician L. Menabrea'smemoir on Babbage’s proposed Analytical Engine • Appended notes on how to program the Analytical Engine to calculate Bernoulli numbers • Recognized by historians as 1stpublished program• Making her world’s 1stprogrammerAda programming language (1983)• Imperative, object-oriented language based on Pascal• Named in her honorCMSC 330 8Alonzo Church (1903–95)Mathematician at Princeton UniversityKey contributions• Lambda calculus (lectures in 1936, published 1941)• Church’s Thesis¾ All effective computation is expressed by recursive (decidable) functions• Church’s Theorem¾ First order logic is undecidableCMSC 330 9Alan Turing (1912–54)The father of modern computer science• Dissertation work advised by Church at PrincetonKey contributions• Formulated the Turing machine • A formal definition of a computable algorithmCMSC 330 10Other Early ComputersABC (1939–1942)• Atanasoff and Berry Computer, at Iowa State Univ.• First electronic digital computer¾ As decided by a judge in 1973! (Invalidated ENIAC patent)Z3 (1945)• Konrad Zuse, essentially isolated from everyone else• Used Plankalkül, a sophisticated programming lang.¾ But no one knew about his results, so not influentialCMSC 330 11Other Early Computers (cont.)Harvard Mark I (1944)• Aiken, IBM• Electronic, used relaysENIAC (1946)• Electronic Numerical Integrator and Computer• Developed by Eckert and Mauchly at UPenn• Electronic, general purpose• Used vacuum tubes• For 30 years considered the “first” electronic computer¾ Until court case gave honor to ABC. Supposedly Eckert and Mauchley overheard Atanasoff discussing designs for ABC.CMSC 330 12The First Programming LanguagesEarly computers could be “programmed” by rewiring them for specific applications• Tedious, error proneJohn von Neumann (1903–1957)• Three CS contributions (famous for lots of other stuff)¾ von Neumann machine – the way computers are built today• A stored program architecture• Program stored in memory as data, so can be modified• Unclear that he actually invented this...¾ “Conditional control transfer” – if and for statements• Allows for reusable code, like subroutines¾ Merge sort algorithm3CMSC 330 13Pseudocodes (Assembly Interpreter)Short Code (1949)• John Mauchly• Interpreted instructions¾ E.g., X0 = sqrt(abs(Y0)) becomes 00 X0 03 20 06 Y0• 06 = abs, 20 = sqrt, 03 = assignment• But needed to translate by handA-0 Compiler (1951; Grace Murray Hopper)• Translated symbolic code into machine code¾ Sounds like an assembler...• Assigned numbers to routines stored on tape¾ Which would then be retrieved and put in memoryCMSC 330 14FORTRAN (1954–1957)FORmula TRANslatorDeveloped at IBM by John Backus et al• Aimed at scientific computation• Computers slow, small, unreliable¾ So FORTRAN needed to produce efficient codeFeatures (FORTRAN I)• Variable names (up to 6 chars)• Loops and Arithmetic Conditionals¾ IF (ICOUNT-1) 100, 200, 300• Formatted I/O• SubroutinesCMSC 330 15Writing FORTRAN ProgramsPrograms originally entered on punch cards• Note bevels on top-left corner for orientation• First five columns for comment mark or statement number• Each column represents one character • Letter: 2 punches: A=12,1 B=12,2 …, Z=0,9CMSC 330 16Punch Card ProgrammingNot interactive!• Feed the deck into the machine¾ Or give it to someone to put in• Eventually get back printout with code and output¾ Could take a couple of hours if machine busy¾ Student jobs typically took overnight to run (only to find a syntax error!)Long test-debug cycle• Debugging by hand critical to not wasting time¾ Don’t want to wait several hours to find you made a typoWhat happens if you drop your deck of cards?• Could put sequence number in corner for ordering• Hard to maintain this as you keep modifying programCMSC 330 17Fortran 77 ExampleC A PROGRAM TO COMPUTE


View Full Document

UMD CMSC 330 - A Brief History of Programming Languages

Documents in this Course
Exam #1

Exam #1

6 pages

Quiz #1

Quiz #1

2 pages

Midterm 2

Midterm 2

12 pages

Exam #2

Exam #2

7 pages

Ocaml

Ocaml

7 pages

Parsing

Parsing

38 pages

Threads

Threads

12 pages

Ruby

Ruby

7 pages

Quiz #3

Quiz #3

2 pages

Threads

Threads

7 pages

Quiz #4

Quiz #4

2 pages

Exam #2

Exam #2

6 pages

Exam #1

Exam #1

6 pages

Threads

Threads

34 pages

Quiz #4

Quiz #4

2 pages

Threads

Threads

26 pages

Exam #2

Exam #2

9 pages

Exam #2

Exam #2

6 pages

Load more
Download A Brief History of Programming Languages
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view A Brief History of Programming Languages and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view A Brief History of Programming Languages 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?