CSE 3302 Programming Languages

Slides:



Advertisements
Similar presentations
CS 150 lecture 2. Review Reasons for studying programming languages Language evaluation criteria –Readability Simplicity? Orthogonality? –Writability.
Advertisements

A brief history of programming languages
Object-Oriented Programming OOP John Gilligan School of Computing DIT Kevin St.
1 ) Definition 2) Note on structured and modular programming, and information hiding 3) Example imperative languages 4) Features of imperative languages.
6/27/2015G. Levine1 PROGRAMMING LANGUAGES Text: Programming Languages, Design and Implementation Pratt and Zelkowitz 4 th ed. Prentice-Hall.
ISBN Chapter 2 Evolution of the Major Programming Languages.
Programming Language Concepts
1 Programming Languages Marjan Sirjani 2 1- The Study of Programming Languages The purpose of language is simply that it must convey meaning. (Confucius)
CS 415: Programming Languages Chapter 1 Aaron Bloomfield Fall 2005.
CSE 3302 Programming Languages Chengkai Li Spring 2008 History of Programming Languages Lecture 2 - History, Spring CSE3302 Programming Languages,
History of Programming Languages
BIT Presentation 6. Contents GENERATIONS OF LANGUAGES COMPILERS AND INTERPRETERS VIRTUAL MACHINES OBJECT-ORIENTED PROGRAMMING SCRIPTING LANGUAGES.
CS 355 – Programming Languages
Computer programming.
COMPUTER PROGRAMS AND LANGUAGES Chapter 4. Developing a computer program Programs are a set (series) of instructions Programmers determine The instructions.
ISBN Chapter 2 Evolution of the Major Programming Languages.
CS 403 Programming Language Theory Class 2 - August 29, 2000.
1 Programming Languages Marjan Sirjani Course web site:
1 Programming Language History and Evolution In Text: Chapter 2.
CS 403 Programming Language Theory Class 3 - August 31, 2000.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
ISBN Chapter 2 Evolution of the Major Programming Languages.
Programming Languages – An introduction. There are 10 types of people in the world −Those who understand binary −Those who don’t.
Professor Dolores Zage n Computer Science Department n n RB 443 n (765) n dmz/
Software Basics. Some Pioneers Charles Babbage Analytical Engine Countess Ada Lovelace First Programmer ? John Von Neumann storing instructions in memory.
Gary MarsdenSlide 1University of Cape Town A brief history of programming languages Gary Marsden Semester 2 – 2000.
The Evolution of Programming Languages Day 2 Lecturer: Xiao Jia The Evolution of PLs1.
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
int k = Integer.MAX_VALUE; k++; int k = Integer.MAX_VALUE; k++; What happens when the following code executes? byte b = someFile.readByte(); b = (byte)(b.
UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering CSCE 190 Programming Language Paradigms Fall 2014
Evolution of the Major Programming Languages Chapter 2: Evolution of the Major Programming Languages Lectures # 5.
Programming Language Theory 2014, 1 Chapter 1 :: Introduction Origin : Michael L. Scott School of Computer & Information Engineering,
CS 313 History of Programming Languages
小型系統 心情 vs. 古典樂 心情 vs. 古典樂 浪漫求籤系統 美食導航系統 季潔亭雅鈺熒岱芸 美食導航系統 楊氏音樂模擬大會考人瑋 若維 芷萱 伽倩 楊氏音樂模擬大會考 麥當勞熱量計算系統 火星文困擾你嗎 ? 火星文困擾你嗎 ? 歌詞知多少 - 挑戰你的腦容量英琪 日馨 青雪 鈺娟.
Programming Language Paradigms ITSK2314 Lecture 3.
a medium allowing humans and computers to communicate an abstraction of the real world a notation for expressing algorithms the set of all syntactically.
History. Development Driven by Function Functions of a Programming Language –To describe computation for use by computers –To describe computation and.
First appeared Features Popular uses Basic This language emphasises on ease of use, allowing general purpose programming to those with a small amount of.
Programming Language History and Evolution
Chapter 1. Introduction.
Introduction to Programming / chapter 1&2 / COM1022
CSCE 190 Programming Language Paradigms
A BRIEF HISTORY OF PROGRAMMING LANGUAGES
The language focusses on ease of use
Zuse’s Plankalkül – 1945 Never implemented Problems Zuse Solved
Concepts of Programming Languages
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Why study programming languages?
Basic 1964 PC general purpose Imperative Small Easy to use.
PROGRAMMING LANGUAGES
CSCI-235 Micro-Computer Applications
Introduction of Programming Languages
Language History The Main Line
Programming Language History and Evolution
Evolution of the Major Programming Languages
Chapter 2 Plankalkül – Never implemented
CSC128 FUNDAMENTALS OF COMPUTER PROBLEM SOLVING
Ada – 1983 History’s largest design effort
Programming Languages
Programming Languages 2nd edition Tucker and Noonan
Von Neumann Architecture
Cobol Design goals: Problems
Principles of Programming Languages
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
History of Programming Languages
School of Computer & Information Engineering,
2.1 Plankalkül Pseudocodes Never implemented
Programming Languages, Preliminaries, History & Evolution
Programming Languages
Presentation transcript:

CSE 3302 Programming Languages History of Programming Languages Kelly Scott French Spring 2017 Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

Languages you used or heard about C C++ C# Java Python Perl Ruby Haskell FORTRAN BASIC JavaScript PHP LISP Groovy Flex SQL Shell XML SGML Assembly Lua Coldfusion Delphi Forth JSP J2ME Ada COBOL RPG PostScript Pascal APL PL/I Visual Basic LOGO ML Prolog Smalltalk Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

Can anybody sing this song? 99 Bottles of Beer 99 bottles of beer on the wall, 99 bottles of beer. Take one down and pass it around, 98 bottles of beer on the wall. 98 bottles of beer on the wall, 98 bottles of beer. Take one down and pass it around, 97 bottles of beer on the wall. … 1 bottle of beer on the wall, 1 bottle of beer. Take one down and pass it around, no more bottles of beer on the wall. No more bottles of beer on the wall, no more bottles of beer. Go to the store and buy some more, 99 bottles of beer on the wall. Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 static void fill_buffer(char *buf, int b) { char line[BUFFERSIZE/2]; if (b>0) { sprintf(buf, "%d bottle%s of beer on the wall, %d bottle%s of beer.\n" \ "Take one down and pass it around, ", b, PLURALS(b), b, PLURALS(b)); if (b==1) strcat(buf, "no more bottles of beer on the wall.\n"); else { sprintf(line, "%d bottle%s of beer on the wall.\n", b-1, PLURALS(b-1)); strcat(buf, line); } } else { sprintf(buf, "No more bottles of beer on the wall, no more bottles of beer.\n" \ "Go to the store and buy some more, 99 bottles of beer on the wall.\n"); …. Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Prolog report_bottles(0) :- write('no more bottles of beer'), !. report_bottles(X) :- write(X), write(' bottle'), (X = 1 -> true ; write('s')), write(' of beer'). report_wall(0, FirstLine) :- (FirstLine = true -> write('No ') ; write('no ')), report_bottles('more'), write(' on the wall'), !. report_wall(X, _) :- report_bottles(X), write(' on the wall'). … Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Assembly inc eax ; get the original value push eax ; convert it to string lea eax, [ebp - 04h] push eax ; string will be stored here call _integer_to_string push eax call _show_line ; 'xx' push _line_1_1 call _show_line ; ' bottles of beer on the wall, ' … Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 ? select CASE (a.aa * 10 + b.bb) WHEN 0 THEN 'No more bottle of beer on the wall, no more bottles of beer. ' + 'Go to the store and buy some more, 99 bottles of beer on the wall.' WHEN 1 THEN '1 bottle of beer on the wall, 1 bottle of beer. ' + 'Take one down and pass it around, no more bottles of beer on the wall.' WHEN 2 THEN '2 bottles of beer on the wall, 2 bottles of beer. ' + 'Take one down and pass it around, 1 bottle of beer on the wall.' ELSE cast((a.aa * 10 + b.bb) as varchar(2)) + ' bottles of beer on the wall, ' + cast((a.aa * 10 + b.bb) as varchar(2)) + ' bottles of beer. ' + 'Take one down and pass it around, ' + cast((a.aa * 10 + b.bb)-1 as varchar(2)) + ' bottles of beer on the wall.' END from (select 0 as aa union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) a cross join (select 0 as bb union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) b order by a.aa desc, b.bb desc Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 ? bottles = [98:-1:3]; % bottles 98 to 3 (99, 2 & 1 are treated as special case) lines = 3; % need the number of bottles at the beginning of 3 lines num_array = ones(lines,1) * bottles; % bottles is a (1x96) array format_plural1 = '%d bottles of beer on the wall,\n%d bottles of beer,\n'; format_plural2 = 'Take one down, pass it around,\n%d bottles of beer on the wall.\n\n'; format_sing1 = '%d bottle of beer on the wall,\n%d bottle of beer,\n'; format_sing2 = 'Take one down, pass it around,\n%d bottle of beer on the wall.\n\n'; format_none2 = 'Take it down, pass it around,\nNo bottles of beer on the wall.\n'; fprintf([format_plural1 format_plural2], 99,99,num_array,2) fprintf([format_plural1 format_sing2], 2,2,1) fprintf([format_sing1 format_none2], 1,1) Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Whitespace Whitespace version of 99 bottles of beer (Bottles.ws) 2003-04-01 See http://compsoc.dur.ac.uk/whitespace/ for details+interpreter Example by Andrew Kemp <ajwk@pell.uklinux.net> (*All* space/tab/linefeed characters are significant!) Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Cow moOMoOMoOMoOMoOmoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMMMmoOMMMMoOMoOMoOMoOMoOMoO MoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMMMmoOMMMommMoOMoOMoOMoOMoO MoOMoOMoOMoOMoOMoOMoOMMMmoOMMMMoOMoOMMMmoOMMMMoOMoOMoOMoOMoOMoOMoOMoOMoOMoO MoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoO MoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMMMmoOMMMMoOMMMmOomOomOomOo mOomOoMMMMoOmoOmoOmoOmoOmoOmoOMMMmoOMMMMoOMoOMMMmoOMMMMoOMMMmoOMMMMoOMMMmoO MMMMoOMoOMMMmoOMMMMoOMMMmoOMMMMoOMoOMMMmoOMMMMoOMMMmoOMMMMoOMoOMMMmoOMMMMoO Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Piet (@!@#$%!^!) Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 If you are interested http://www.99-bottles-of-beer.net/ Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Thousands out there http://en.wikipedia.org/wiki/Timeline_of_programming_languages Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 The most popular PLs? Popularity: Most widely used? Most lines of codes? Most jobs? Most courses/projects? Most search engine queries? http://www.welton.it/articles/language_popularity.html http://www.developer.com/lang/article.php/3390001 Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 History Early History : The First Programmer The 1940s: The First Computers The 1950s: The First Programming Languages The 1960s: An Explosion in Programming Languages The 1970s: Simplicity, Abstraction, Study The 1980s: New Directions and OO The 1990s: Consolidation, Internet, Libraries, and Scripting The Future Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 The First Programmer Before the birth of computers Jacquard loom (early 1800s) translated card patterns into cloth designs. http://www.youtube.com/watch?v=Sn337QHU0AY http://www.smith.edu/hsc/silk/History/jacquard.html www.nndb.com/people/799/000097508/ Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 The First Programmer Charles Babbage’s analytical engine (1830s and 1840s) Devoted entirely to computation Programs: cards with data and operations Difference Engine: which inspired Analytical Engine (the design was realized in 1991) http://www.youtube.com/watch?v=KL_wy-CxBP8 Ada Lovelace – first programmer (daughter of Byron) http://en.wikipedia.org/wiki/Charles_babbage http://en.wikipedia.org/wiki/Ada_Lovelace Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 The First Computers EDVAC (1945) John von Neumann von Neumann architecture “Stored program”: data and programs in the same space ENIAC (1943) First electronic computer U. Penn www.agers.cfwb.be/apsdt/figinfo26.htm http://en.wikipedia.org/wiki/ENIAC Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Machine Codes and Assembly Language Machine code: bit sequences 000000 00001 00010 00110 00000 100000 100011 00011 01000 00000 00001 000100 000010 00000 00000 00000 10000 000001 Assembly program: symbolic representation of machine codes LDA SUB CMA INC ADD MIN STA DIF Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

The 1950s: The First Programming Languages FORTRAN: the first higher-level programming language Languages following FORTRAN COBOL Algol60 LISP APL Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 FORTRAN The first language 1954-1957 John Backus, et. al. (IBM) Scientific and engineering applications (FORmula TRANslation). Goal: generate fast machine code. Its compiler is still among the most efficient. Contributions: array, loops by indexed variables, if-statement Still widely used today (Fortran, II, III, IV, 66, 77, 90, 95, 2003, 2008). Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 FORTRAN John Backus: IBM group 1977 ACM Turing Award: “for profound, influential, and lasting contributions to the design of practical high-level programming systems, notably through his work on FORTRAN, and for seminal publication of formal procedures for the specification of programming languages.” http://www.youtube.com/watch?v=xQtT2sRkOEw www.columbia.edu/acis/history/backus.html Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

Major languages following FORTRAN COBOL Algol60 LISP APL Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 COBOL COmmon Business-Oriented Language 1959-1960 Grace Hopper, et. al. (US Department of Defense) Business applications: banks and corporations Still widely used http://en.wikipedia.org/wiki/Grace_Murray_Hopper Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 COBOL Goal: allow nonprogrammers to read/understand programs Consequences: Very wordy, like English C++ vs. ADD 1 TO COBOL GIVING COBOL Can be difficult to write complex algorithms Human readability improved, or only complicated? Contributions: Record structure Separate data structures from execution Output formatting by examples COBOL 2002: OO programming Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Algol60 ALGOrithmic Language, 1958-1960 a committee of European and American computer scientists (John Backus and John McCarthy involved) Contributions: free-format (which modern language is not free-format?) Backus-Naur forms (BNF) for defining syntax type declarations for variables, block-structure, begin-end recursion, pass-by-value parameters Impacts: one of the most influential programming languages most imperative languages are derivatives of Algol: Pascal, C/C++, Ada, Java. standard way of describing algorithms in research papers for 30 years. Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 LISP LISt Processor late 1950s John McCarthy (MIT, at Stanford now) 1971 Turing Award for contributions in AI. AI applications, still dominating Contributions: first one to depart from imperative/procedural paradigm: functional programming language Garbage collection Recursion, s-expression Limitations; Could not run efficiently on von Neumann architecture LISP-specific machines Variants: Common LISP, Scheme Following LISP: ML, Haskell Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 APL A Programming Language late 1950s to early 60s Kenneth E. Iverson (Harvard and IBM) 1979 Turing Award for contributions to mathematical notation and PL theory. A language for programming mathematical computations arrays and matrices Functional style, influenced FP and modern function languages Drawbacks: No structuring Greek symbol, requires special terminal keyboard Extremely difficult to read Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Summary of 1950s Huge success and big impacts: Pioneered imperative and functional programming Still used much today Many derivatives The 1960s is not equally fruitful Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

The 1960s: An Explosion in Programming Languages Hundreds of programming languages PL/I Algol 68 SNOBOL Simula67 BASIC Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 PL/I 1963-1964, IBM Goal: Universal language, “language to end all languages.” combine features of FORTRAN, COBOL and Algol60 concurrency exception handling for IBM 360 Can be considered to be a failure: translators were difficult to write, slow, huge and unreliable difficult to learn and use forward-looking, but simply ahead of its time Trigraphs Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Simula67 1965-1967 Kristen Nygaard and Ole-Johan Dahl (Norwegian Computing Center) 2001 Turing Award for OO and Simula Based on Simula I and Algol60 Designed for simulations First OO language object, class, subclass (inheritance), virtual method, coroutine Ahead of its time. Inefficient. Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Basic Beginner's All-purpose Symbolic Instruction Code 1964 John Kemeny and Thomas Kurtz (Dartmouth) Goal: Simple language for non-experts to use Popular for schools and homes Altair BASIC for personal computers, by Bill Gates, Paul Allen, and Monte Davidoff. (1975) Dialect: Visual Basic Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

The 1970s: Simplicity, Abstraction, Study Tremendous success few new concepts simplicity and consistency Algol-W Niklaus Wirth (ETH Zurich) (1984 Turing Award) and C.A.R. Hoare (1980 Turing Award) response to the direction in 1960s Pascal, 1971, Niklaus Wirth popular for teaching PL C, 1972, Dennis Ritchie (Bell Labs), 1983 Turing Award Successful partially due to the popularity of UNIX CLU, Euclid, Mesa: Abstract Data Type (ADT) Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

The 80s: New Directions and OO Following the experiments of ADT in 70s Ada, Modula-2 Object-Oriented Programming Smalltalk, C++, Eiffel, Object C, Object Pascal, Oberon Functional Programming Scheme, ML, Haskell, Miranda, FP Logic Programming Prolog Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Ada Named after Ada Lovelace 1980 Department of Defense Hundreds of languages were used by DoD Required in DoD projects, 1987-1997. Contributions: ADT (package) concurrency (task) exception handling Universal language, PL/I of 80s, but didn’t fail carefully designed required use Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Smalltalk 1980 Alan Kay (2003 Turing Award), Dan Ingalls, et. al. (Xerox PARC) Inspired by Simula67 Contributions purest OO language graphical user interface, mouse (limited its use, as such hardware was not generally available) Push C++ and OO into spotlight Still used much today Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 1980 Bjarne Stroustrup (Bell Labs, now at TAMU) Extensions from Simula67 and C, “C with Classes” C++0x – An Overview Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Other Paradigms Functional Programming: Common Lisp, Scheme, ML, Haskell (pure functional programming language) Logo: teach kids to program http://www.youtube.com/watch?v=ohgPmdZgUmE Logic Programming: Prolog Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

1990’s: Internet, Scripting OO widely adopted (C++ was going to dominate) Then Java came Scripting languages, became general-purpose languages: Perl, Tcl, Python, PHP, … Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 Java 1995, James Gosling et. al. (Sun) Was for embedded consumer-electronic applications (set-top box), then for Internet/Web and network applications Based on C++ Differences Pros: richer libraries (API), portability (compile-once, run-anywhere) Cons: slower than C++, no ISO/ANSI standard (controlled by Sun). references vs. pointers garbage collection Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008

CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008 What’s next? C/C++/C#? Java? A new language? Lecture 2 - History, Spring 2008 CSE3302 Programming Languages, UT-Arlington ©Chengkai Li, 2008