[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Questions for a language designer



On 2003.05.27 16:56 Jerry Jackson wrote:
> 
> - What's the metaphor?  Although the days of the "pure"
> languages are mostly gone, I believe it's still worthwhile to have a
> good sense of the core language mental model, e.g.:
> 
> FOL (Prolog), Objects (Smalltalk, etc.), Functions (lots), PDP-11 (C) :-),
> Production System (OPS5, etc.).
> 
> Different core models influence the "natural" styles of program development
> in different languages even if the set of available facilities is similar.  
> They
> also help define which late-arriving features will "fit" and which will be 
> warts.

and

On 2003.05.28 08:26 andrew cooke wrote:
> 
> I wonder if the most interesting languages (those that do something
> new) take a list like this and try to find some abstraction that
> allows apparently conflicting choices to be viewed as two applications
> of a single idea.

get to the heart of the matter in my opinion.

The finest programming is poetry, not prose.  A language has to have
an internal harmony and a natural rhythm to be poetic.  Such coherence
is never accidental; it must be supplied by the language designer.

For the programmer, you want a language with as little friction as
possible, where code flows freely and naturally.  Simplicity, symmetry
and internal consistency all help.  A little harder to pin down but
just as important is a language design that lends itself to conventions
and idioms (the secret to C's success).

For the reader (tester, maintainer, integrator, student), you want
clarity and conciseness -- two properties often at odds with each other.
A language which is intuitive, and thereby self-documenting,
accomplishes both goals.  
It seems to me that the only practical way to achieve these things is
to begin with a unified underlying vision -- a mental model or metaphor
rich enough to suggest answers to almost all of the design questions.
Best is to have both a model and a metaphor -- a conscious mental model
to determine the broad structures and rules, and an intuitive metaphor
or style to determine how those structures and rules get translated
into concrete symbols and syntax.

Of course most language designers do have mental models -- that's often
why they design languages in the first place, so that they can talk
about their mental models knowing that there's at least one language
it makes sense in :)

Michael St. Hippolyte
http://www.bentodev.org