[ ^ CSE 341 | section index | <-- previous | next -->]

Course review

We've discussed representatives from five "families" of languages:

Imperative: Scheme
Object-oriented: Java, Smalltalk
Functional: Miranda, functional subset of Scheme
Logic: CLP(R)
Scripting: Perl

What are some themes that cut across all these languages? Here's a short list (there are many more, obviously).

Types
The type system of a language determines the way the language is used at the most fundamental level. Compare the type systems of Scheme, Miranda, Java, and Smalltalk.


Decomposition and composition
There is only one tool programmers have to deal with complex problems: divide and conquer (---Stroustrup). How do we break down problems in object-oriented, CLP, and functional languages?


Syntax
It's important to see past syntax to the underlying concepts. Still, consider the different syntactic choices made by (e.g.) Scheme, Miranda, and Java, and how they affect the languages' "feel".


Regularity vs. convenience
Often there is a tension between making a language consistent and providing convenient features. For example, Scheme (and to a lesser extent Miranda) is very consistent, but sometimes the regularity makes common tasks difficult. Perl takes the opposite approach by being entirely irregular in order to make its usage more convenient for people who know it well.


Procedures vs. data
Some languages (notably object-oriented languages) are "data-centric". Others (like Miranda) are "function-centric". Some languages, like Scheme and many scripting languages, blur the distinction between procedures and data.

Last modified: Wed May 31 20:27:04 PDT 2000