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

Cognitive "lightness" of a language


I'd like to propose an alternative view on what a lightweight language is.
I submit that its one that has less cognitive overhead on the user.

Some factors include:

1. Reflection-in-action

Designers continuously construct, reflect on and revise intermediate
partial designs; that language should allow this. I would submit that a
language is "heavyweight" if it forces a designer to make too many design
decisions before getting feedback (by running the partial design). This
fits nicely with running code without type declarations or type inference.
Alternatively, type inference can be used but not stop me running the code
- a form of critic that gives me a 'to-do' list of things to look at in my
program. In essence, the language implementation should not make
authoritative assumptions, that is the designers job. Instead it should be

2. Opportunistic Design

It is often assumed that a hierarchical decomposition is appropriate to
coping with complex design situations. In practice though, designers often
proceed opportunistically. This is even the case when the designer plan
and describe the work in a hierarchical fashion. Studies have shown that
the designers move from subtask to subtask based on cognitive cost.  A
lightweight language should let me do this, and again not force me to
complete subtasks that are not necessary to execute an initial version of
my program - inform not dictate the user.

3. Other factors that I'd use to differentiate between heavy and
lightweight languages are support for many programming styles and multiple
views of a program.

Programmers seem to work from a mental store of previous programming plans
and partial designs - the language should let me express these easily
without forcing a particular paradigm on me.

Viewing multiple perspectives on a program/system can allow a designer to
understand a complex system in terms of multiple subviews - each far
less complex than the whole. 

Just some thoughts..how current languages stack up against these factors
is left as an exercise for the reader (so that I can get back to studying
for finals..:-)