[self-interest] (Aspects) Utilities in Lisp vs Design Patterns in Smalltalk- Self

Ned Konz ned at bike-nomad.com
Tue Apr 22 21:06:54 UTC 2003

On Monday 21 April 2003 09:27 am, Albertina Lourenci wrote:
> DEar All!
> First of all I would like if someone explain to me
> if there are differences between bottom-up programming
> and exploratory programming.

Because exploratory programming requires the discovery of design and 
the evolution of a language to express that design, it tends to be 
closer to bottom up programming.

> Paul Graham says Bottom up design leads naturally to
> extensible programs. The  simplest bottom-up programs
> consits of two layers: language and program. Complex
>  programs may be written as a series of layers, each one acting
> as a programming language for the one above. If this philosophy
> is carried all the way up to the topmost layer, that layer becomes
> a programming language for the user. Such a program where
> extensibility permeates every level, is likely to make a much
> better programming language than  a system which was written
> as a traditional black box, and then made extensible as an
> 'afterthought.

You can see this dramatically with Forth, most of whose dialects don't 
support forward references or objects. You are forced to do bottom-up 

However, the user-level language is only a subset of the language that 
evolves. There are always (at least in non-trivial systems) 
in-between layers whose vocabluary is only useful inside the system.

When we use objects, there's an additional dimension of separation of 
responsibility. In addition to growing the vocabulary toward the 
needs of the users, we're also separating responsibility along object 
and (later) package lines. The vocabulary that's visible between 
packages is the public vocabulary of the objects at the outside of 
the packages -- the interface objects. Inside a package, the concerns 
have already been separated along object lines.

Ned Konz

More information about the Self-interest mailing list