| | Analysis | Requirements & Principles |
architecture: Paradigms |
substance: Abstractions |
structure: Domains | building blocks: Features
|
surface: Syntactics | Defining PLs |
Language List | |||||
| ||||||||||||||
If you know further references, please don't hesitate to tell me (Ulf Schünemann), likewise if you have any suggestions.
| Feature | Result | Reference | |||||||||
| let + lambda | Untyped LC can (macro-)express an additional let. Typed LC can express but not macro-express an additional (polymophic) let. (But don't forget the lexical coherence) | [EPL, 13,18,21] | |||||||||
| call-by-name/-value | Call-by-name and call-by-value LC cannot (macro-)express each other. Call-by-name LC + a construct for strict evaluation can express call-by-value LC. | [EPL, 15/20,23] | |||||||||
| lazy values | Pure Scheme can macro-express lazy constructors (that are not first-class functions). | [EPL, 35] | |||||||||
| pairs | Simply typed LC cannot express the polymophic pair-operations cons, car, cdr. | [EPL, 20] | |||||||||
| assignment | Pure Scheme cannot express assignment and letrec. | [EPL, 33] | |||||||||
| system | ``interactive programming systems actually add expressive power to the programming language'' | [EPL, 30] | |||||||||
| assignment and procedures | ? |
Weeks, Felleisen:
On the orthogonality of assignments and procedures in Algol;
POPL 93.
dvi
ps
| lambda + record
| Lambda abstractions and records are orthogonal
to each other and to the core imperative language.
| [STPL, 155f]
| local procedures + objects
| local procedures (closed over local state)
passed to the outside can express objects
| Goguen? ...
| mutability + delayed evaluation
| ``As far as anyone knows, mutability and delayed evaluation
do not mix well in programming languages''
| [SICP, at end of 3.5.4]
| |
| Concept | Constructs | . | |||
| TODO for BETA | TODO | . | |||
| Clusters for Eiffel: Open groups of classes. | TODO | . | |||
| Packages in Java: Open groups of classes and packages. Classes/class-members of ``package-level'' access control can be accessed by all classes in the package. | | .
| Namespaces in C++: | Open groups of definitions (classes, functions, namespaces). Definitions in a namespace shared access to the ``unnamed namespace'' within that namespace. .
| |
Some proposals describing new features for ISO C can be found in the ISO C Standard.
| Feature | Description | Argument |
| Adverbial programming with HOF in APL
Berry: Adverbial Programming; SIGPLAN Notices 25/8; 1990. | HOF take functions ("verbs") as arguments and produces new ones
-- they are "adverbs" in APL jargon
[cf. categorial grammar:
"adverbs" take one verb and produce a modified one;
"conjunctions" take verb plus verb-or-"noun" ...].
Define what to do when applied to an entire collection. | Is appropriate for distributed SIMD parallelization. Better than introducing special control constructs. |
| private -- parent-based
C Chambers et.al.:
Parents are Shared Parts: Inheritance and Encapsulation in Self; Lisp and Symbolic Computation 4(3); 1991.
| A parent object (cf. delegation-based OO) can access private slots of alls its descendents. | Object-based private is too strict, class-based not available in delegation-based OO. |
| Precursor | In a method m allows to access the overridden versions of m in base classes. | Simplification (w.r.t. Eiffel's renaming) |
| pattern matching
Proposal to Haskell: W Burton, E Meijer, P Sansom, S Thompson, P Wadler: Views: An Extension to Haskell Pattern Matching; 23 Oct 1996. | View types in pattern matching allow multiple `logical' constructors to match against real constructors | -- |
| pattern matching + guards
Proposal to Haskell: S P Jones: A new view of guards; April 1997. | a list of pattern-matched expressions (like in list-comprehension) as guards | -- |
| initilialization
Proposal to ISO C: Designated Initializers | ? | ... |
| overloading of juxtaposition
B Stroustrup: Generalizing Overloading for C++2000, April 1998^). | "x y" will lead to call of a multiplication operation. | Tradition in mathematics and physics |
| | Analysis | Requirements & Principles | Paradigms | Abstractions | Domains | Features | foundational | safety | flexible typing | Syntactics | Defining PLs | Language List |