Term
|
Definition
- Konrad Zuse
- Designed 1945, published 1972
- Program calculus, data structures, arrays/recursion, math expressions
- never implemented
|
|
|
Term
|
Definition
- John Backus
- For IBM 704
- 1954, 1957, 1958, 1962
- 6 char variables, post-test loop, scientific computing
- introduced concept of compiling
- static storage
|
|
|
Term
|
Definition
- John McCarthy, Marvin Minsky (MIT)
- for AI (list processing)
- 1958
- first function programming language
- atoms and lists
- based on Lambda Calculus
- MI, Miranda, and Haskel are related
|
|
|
Term
|
Definition
- GAMM, ACM
- to design a univ. scientific language
- 1958-1960
- first step towards sophistication
- block structure, pass by value/name, recursion
- standard for publishing algs for 20 years
- first machine independent language
- first formally defined by BNF grammar
|
|
|
Term
|
Definition
- DoD committee
- Common Business Language
- 1960
- data and code are separate
- fevery statement starts with a verb, reads like english
- first language to use macros
|
|
|
Term
|
Definition
- John Kemeny, Thomas Kurtz (Dartmouth)
- easy/more friendly
- 1964
- widely used for time sharing
- designed for lib arts students
- currently Visual Basic
|
|
|
Term
|
Definition
- IBM/SHARE
- Combine features
- 1963
- everything for everybody, very complex
- first to use: unit level concurrency, exception handling, pointer data types, array cross sections
|
|
|
Term
|
Definition
- Kenneth Iverson
- language to describe hardware
- 1960
- dynamic typing and storage allocation
- most powerful language
- interpreted, early dynamic language
- many operators, difficult to read, easy to write
|
|
|
Term
|
Definition
- Griswald, Farber, Polensky (Bell Labs)
- writing text editors
- 1964
- early dynamic language
- text processing
- powerful operators for string pattern matching
|
|
|
Term
|
Definition
- Nyguard and Dahl
- for simulation
- 1967
- beginning of data abstraction
- classes, objects, inheritance, co-routines
- extension of Algol 60
|
|
|
Term
|
Definition
- Comerauer, Roussel, Kowalski
- Intelligent database
- 1970's
- based on formal logic, collection of statements, facts, and rules
- non-procedural
- based on predicate calculus
|
|
|
Term
|
Definition
- DoD
- 1980
- largest desing effort in history
- packages, exception handling, generic programming units, concurrency
|
|
|
Term
|
Definition
- Alan Kay (Xerox PARC)
- user friendly
- 70's and 80's
- first full implementation of object oriented programming
- pioneered GUI desing
- abstraction similar to classes of Simula 67
|
|
|
Term
|
Definition
- Meyer
- 1992
- object-oriented
- smaller/simpler C++ with equal expressivity and writability
|
|
|
Term
|
Definition
- Dennis Richie (Bell Labs)
- Systems Programming
- 1972
- powerful set of operators
- poor type-checking
|
|
|
Term
|
Definition
- Bell Labs
- 1980
- combined imperative and object oriented
- function parameters, type checking, dynamic binding, methods and classes
|
|
|
Term
|
Definition
- Sun Microsystems
- 1994
- used C++ as basis, imperative and object oriented
- sub-programs require definition, no pointers, multiple inheritance, supports applets, simplied C++
- widely used for web programming
|
|
|
Term
|
Definition
- Netscape/Sun Microsystems
- Web tools
- 1995
- scripting language for the web, purely interpreted
- similar to Java only in syntax
|
|
|
Term
|
Definition
- Rasmus Lerdorf
- 1994
- scripting language for the web, purely interpreted
- used for form processing and database access through the web
|
|
|
Term
|
Definition
- from Algol 60
- 1968
- orthogonal design
- user-designed data structs, dynamic arrays
|
|
|
Term
|
Definition
- Nichlaus Wirth
- Educational Purposes
- 1971
- from 70's to 90's, most widely used language for teaching structured programming
- small and simple
- Dijkstra liked it
|
|
|
Term
|
Definition
- part of .NET development platform
- 2000
- Based on C++, Java, Delphi
- language for component-based software development
|
|
|
Term
|
Definition
- MIT
- mid 70's
- descendent of Lisp
- extensive use of static scoping and functions
- small and simple
- ideal for educational purposes
|
|
|
Term
|
Definition
- Larry Wall
- 1987
- scripting language for the web
- replacement for UNIX sysadmin language
- vars are statically typed and implicitly declared
- gained widespread use for CGI programming on the web
|
|
|
Term
|
Definition
- Lutz and Ascher
- 2004
- object oriented scripting language
- dynamic typing with type-checking
- used for CGI programming and form processing
- supports lists, tuples, and hashing
|
|
|
Term
|
Definition
- Lerusalimschy and others
- 1994
- object oriented scripting language
- dynamic typing with type-checking
- used for CGI programming and form processing
- supports lists, tuples, and hashing witha single data stucture: the Table
- easily extendable
|
|
|
Term
|
Definition
- Yukihiro Matsumoto
- 90's
- began as a replacement for Perl and Python
- pure object-oriented scripting language (all data are objects)
- most operators implemented as methods
- purely interpreted
|
|
|
Term
Programming Domains (name 6) |
|
Definition
- Scientific
- Business
- AI
- Systems Programming
- Scripting
- Special Purpose
|
|
|
Term
|
Definition
- overall simplicity
- orthogonality
- control statements
- definining data types and structures
- syntax considerations
|
|
|
Term
|
Definition
- Simplicity/Orthogonality
- Support of Abstraction
- Expressitivity
|
|
|
Term
|
Definition
- type-checking
- exception handling
- aliasing
- readability and writability
|
|
|
Term
|
Definition
- training
- writing
- compiling
- optimization
- implementation system (usually free)
- reliability
- maintenaince (can be 2-4 times dev cost)
|
|
|
Term
Other Criteria for Lang. Evaluation |
|
Definition
- ease of portability
- degree of standardization
- general/specific purpose
|
|
|
Term
|
Definition
- Imperative
- Logic
- Functional
- Object-Oriented
|
|
|
Term
|
Definition
- variables, assignment statements, iteration
- C, PASCAL, Fortran, Algol, PL/1
- specify how to solve the problem
|
|
|
Term
|
Definition
- make computation by applying functions to given parameters
- Lisp, Scheme, Miranda, Haskel, ML
- specify what you want done, not how to do it
|
|
|
Term
|
Definition
- rule based, rules are specified in no special order
- Prolog
|
|
|
Term
Object-oriented Languages |
|
Definition
- encapsulates data within objects
- inheritance, dynamic type-binding
- grew out of imperative languages
- C++, Java, Python, etc.
|
|
|
Term
Interpreted vs. Compiled Languages |
|
Definition
- Interpreted- very inefficient code, dynamic types
- Compiled- fast code, know difference betweeen 1 and 2-pass compilers
|
|
|
Term
|
Definition
- Smallest syntactic unit of a language
|
|
|
Term
|
Definition
|
|
Term
|
Definition
|
|
Term
|
Definition
- an association such as between operator and symbol, name and memory, variable with type, etc.
|
|
|
Term
|
Definition
- at language design time
- at compiler design time
- at compile time
- at load time
- at run-time
|
|
|
Term
|
Definition
- occures before run-time, remains unchanged throughout program execution
|
|
|
Term
|
Definition
- occurs during execution or can change during execution of program
|
|
|
Term
Type Binding (declarations) |
|
Definition
- explicit - statement used for declaring variables
- implicit - default mechanism for specifying type (ex: Fortran i-n are integers by default)
- dynamic - specified through assignment statement, in interpreted or functional languages only
- inferenced- determined by context or use (interpeted languages)
|
|
|
Term
|
Definition
- static - bound before execution, allows history sensitive sub-program, no recursion
- stack dynamic - bound upon block entry, allows recursion, more overhead
- explicit heap dynamic - allocaction and deallocation by explicit statements (ex: C malloc, Java new)
- implicit heap dynamic - alloc. and dealloc. caused by assignment statements
|
|
|