Chapter 1 Flashcards
On what criteria do we evaluate a language?
Readability (easy to read)
Writability ( easy to write )
reliability ( performs to specification )
Cost (cost of using the language)
Why study concepts of programming languages?
Better expression.
Increased ability to learn new languages
understand trade-offs
How can we evaluate readability?
Overall simplicity
Orthogonality ( how easily different features can be combined )
Amount of data type (if types are missing they must be simulated )
Syntax ( Special words, identifier forms ) (lack of naming restriction = increased readability)
How can we evaluate writability?
Simplicity + orthogonality
Support for abstraction
Expressivity
How can we evaluate reliability?
Type checking
Exception handling
Aliasing
Readability and writability
How can we evaluate Cost?
Training to use
Compiling
Executing
Reliability (poor reliability = high cost)
maintenance
What are some other evaluation criteria?
Portability
Generality
Well-definedness
What are the different types of trade-offs?
Reliability vs cost of execution
Readability vs writability
writability vs reliability (pointers in C++)
What are the different programming domains?
Scientific
Business
AI
Systems programming
Web software
What influences the design of a language?
Computer Architecture
Programming methodologies
What had the most influence on programming methodologies in each decade?
1950s: efficiency
60s: readability + control structures
70: Data abstraction
80s: OOP
Different type of Language categories:
Imperative - Java, JS
Functional - LISP, Scheme, ML, F#
Logic - Prolog
Markup/hybrid - JSTL, XSLT
What are the different implementation methods?
Compilation ( translated into machine language )
Pure Interpretation ( uses an interpreter )
Hybrid ( compromise between compilers + pure interpreters )
What does compilation do?
Translate high-level program into machine code
What are the phases of compilation?
Lexical analysis
Syntax analysis
Semantic analysis
Code generation
Does Pure interpretation have any translation?
No
Compiler vs interpreters (Bad + Good)
Compiler is faster
Interpreter programs are easier to implement
Compiler programs take up less space
How does hybrid implementation systems work?
First translate to intermediate language and then interpret from that language. (faster than pure interpretation) Perl
How does Just-in-Time Implementation systems work?
Translate program to intermediate language.
compile intermediate language into machine code when they are called.
Keep machine code after use
Which languages use JIT ( Just in time)?
.NET languages
What are the different programming environments?
UNIX
Visual Studio.NET
NetBeans