Use LEFT and RIGHT arrow keys to navigate between flashcards;
Use UP and DOWN arrow keys to flip the card;
H to show hint;
A reads text to speech;
41 Cards in this Set
- Front
- Back
Zuse's Plankalkül |
Designed 1945, published 1972 Never implemented Advanced data structures (floating point, arrays, records) Invariants |
|
What's wrong with machine codes? |
Poor readability Poor modifiability Expression coding was tedious Machine deficiencies (no indexing or floating point) |
|
Pseudocodes: Short code |
Mauchly - 1949 BINAC computers Expressions were coded, left to right |
|
Pseudocodes: Speedcoding |
Backus - 1954 IBM 701 Slow |
|
Pseudocodes: Related Systems |
- UNIVAC Compiling System Grace Hopper Pseudocodes to machine code - David J Wheeler Blocks of relocatable addresses - for absolute addressing |
|
Fortran |
Fotran 0: 1954 - not implemented Fortran 1: 1957 Idea of compiled programming languages |
|
Environment of development: Fortran |
Computers were small and unreliableApplications were scientificNo prog methodology or toolsMachine efficiency: concern |
|
Design Process: Fortran |
No need for dynamic storage Need good array handling and counting loops No string handling, decimal arithmetic, or powerful i/o |
|
Fortran II |
1958 Fixed bugs Independent compilation |
|
Fortran IV |
1960-62 Explicit type declarations Logical selection statement Subprogram names as parameters ANSI standard 1966 |
|
Fortran 77 |
New standard in 1978 Character string Logical loop (if then else) |
|
Fortran 90 |
Modules Dynamic arrays Pointers Recursion Case statement Parameter type checking |
|
Latest versions |
Fortran 95 - minor additions and deletions Fortran 2003 |
|
Fortran Evaluation |
Highly optimizing compilers (before 90) Dramatically changed the way computers are used Lingua franca of the computing world |
|
Functional Programming: LISP |
LISt Processing language - MIT, McCarthy Process data in lists (arrays) Symbolic computation (numberic) Only 2 data types: Atoms and lists Syntax based on lambda calculus |
|
LISP Evaluation |
Pioneered functional programming - no need for variables or assignments Dominant language for AI COMMON LISP & Scheme - dialects ML, Miranda and Haskell - related |
|
Scheme |
MIT - mid 1970s Small Excessive use of static scoping Functions: first-class entities Simple Syntax + small size - for educational applications |
|
COMMON LISP |
Combination of features of dialects of LISP Large, complex |
|
1st Step towards sophistication: ALGOL 60 |
Environment of development Languages were being developed for specific machines No portable language, machine dependent No universal language for algos ALGOL 60 - result to design a universal language |
|
ALGOL 58 |
ACM and GAMM - 4 days meet Concept of type was formalized No I/O - magising machine dependent Support was dropped 1959 IBM |
|
ALGOL 60 |
Modified ALGOL 58. 6 day meet No I/O and string handling |
|
ALGOL 60 Evaluation |
+ Standard way to publish algos for 20++ years Imperative languages are based on it First machine independent language First language whose Syntax was formally defined (BNF)
- Never widely used, US Lack of I/O, too flexible, hard to implement, lack of support from IBM, formal Syntax descriptuon |
|
Computerizing Business Records: COBOL (Common business-oriented language) |
Based on FLOW-MATIC First macro facility in a high-level language Hierarchical data structures (records) First language required by Dept of Defense Still the most widely used business applications language |
|
Timesharing: BASIC |
Kemeny & Kurtz - Dartmouth Visual BASIC First widely used language with timesharing |
|
PL/I |
5 months: 3 x 3, IBM and SHARE New Prog Lang -> PL/1 Extension of Fortran IV First unit-level concurrency, exception handling, pointer data type, array cross sections Many new features poor design Too large and complex |
|
2 Early Dynamic Languages |
APL (A Programming Language) Hardware description language - IBM - Ken Iverson 1960 Highly expressive, program difficult to read SNOBOL (String oriented symbolic language) Powerful for string pattern matching String manipulation lang - Bell Labs No longer used for writing editors |
|
Data Abstraction: SIMULA 67 (simulation language) |
System simulation Based ALGOL 60 and SIMULA 1 Primary contributions: Coroutines - subprogram Classes, objects and inheritance |
|
Orthogonal Design: ALGOL 68 |
User-defined data structures Reference types Dynamic arrays (flex arrays) Less usage than ALGOL 60 Strong influence on Pascal, C, Ada |
|
Pascal |
1971, Wirth (ALGOL 68 mem) Teaching structural programming Small simple Mid 1970s - late 1990s - most widely used for teaching programming |
|
C |
1972. Bell Labs - Dennis Richie Evolved from BCLP, B, ALGOL 68 Powerful set of operators, poor type checking Spread through UNIX Many areas of apllivation |
|
Prolog (programming logic) |
Based on formal logic Non-procedural Intelligent database system uses inferencing process Highly inefficient, small application areas |
|
History's largest design effort: Ada |
Hundreds of people, much money, 8 years Augusta Ada Byron - first programmer Competitive design Included everything First compilers were difficult |
|
Ada 95 |
1988 Support for OOP type derivation Don't need u bye - DoD I'm more popular than u - C++ |
|
OOP: Smalltalk |
First full implementation of OOP Pioneered GUI design Promoted OOP |
|
C++ |
Evolved from C and SIMULA 67 Provides exception handling OOP and Imperative ANSI approved in November 1997 |
|
OOP: Eiffel and Delphi |
Eiffel 1992 Smaller and simpler C++ Lol I'm more popular - C++ Delphi Pascal plus support OOP More elegant and safer than C++ |
|
Java |
@ Sun in early 1990s Based on C++ Supports only OOP Eliminated unsafe features Widely used for web programming Use increased faster than any previous language |
|
Scripting Languages for the Web |
Perl JavaScript (similar Syntax lang to Java) PHP - hypertext preprocessor Python Lua Ruby - Japan (Yukihito Matsumoto), replacement for Perl and Python |
|
C# |
.NET dev platform 200 Based on C++, Java and Delphi Component-based software dev Common Type System (CTS) -common class library |
|
Markup/Programming Hybrid Languages |
XSLT (eXtensible Stylesheet Language Transformation) - transforms XML docs for display * XML (eXtensible Markup Language) JSP (Java Server Pages) - collection of tech to support dynamic web docu - servlet: Java program that resides on a web server |
|
Summary |
Dev, dev environment, and evaluation of a number of important prog lang Perspective into current issues in language design |