Some of the points made in this interesting discussion  ...

1) A large number of features isn't a guarantee of usefulness (Ruven Brooks).

2) A good user community size is helpful (also Ruven).

3) Technical features, notably the runtime environment and inter-program
communication, are very important in real life (Ronald Finkbine).

All those are surely true, but they don't contribute directly to the
development of new languages, nor to the development of environments
that complement those languages.

4) Computer languages can be evaluated using user interface principles
(Brad Myers).

YES. Many other members of PPIG, among them David Gilmore, Marian Petre,
Alan Blackwell, Kirsten Whitley, Margaret Burnett, ... and I, have been
arguing that position for some time.

May I respectfully draw attention to a framework I (and others) have
proposed, called the Cognitive Dimensions of Notations? I believe it helps
to address some of the cognitive usability issues raised in a discussion of
language design, and it seems that some of the discussants might be
interested. Please accept my apologies and stop reading now if you already
know about it.

Let's see whether I can encapsulate it. (Brad, the page you point to ends
by asking whether anyone else has done anything similar - this is an
answer.  BTW, one of the papers listed below has your own name on - did you
read it? ;-) ) If you've already looked at Brad's page, you'll see that his
approach (based on Nielsen's Heuristic Evaluation) focuses more on details
and on presentation, while mine focuses more on principles and structure.

'Usability' depends on various things, among which the framework only
treats these: what the user is trying to do (described as one of 5 generic
activities or use-classes), the properties of the medium (written, spoken,
gestured , ...), the information structure of the notation, and the support
provided by the environment. The information structure and the
environmental support are described by 12 cognitive dimensions (or 13 on
some days, or 14 on a real Bad Hair day.....).

['Notation' = the stuff the user writes; 'language' includes the context.
Idiosyncratic usage but helpful.]

An example dimension is 'viscosity/fluidity', the difficulty/ease of making
small changes. Viscous notations include many internal dependencies, so
that changing one thing means changing others to maintain consistency.

An important principle: being usable is an interaction between the
dimensions and the generic type of use ('use-class'). One use-class is
searching for information: viscosity is immaterial because no changes are
to be made. Another use-class is transcription from one notation to
another: viscosity only matters if the notations are error-prone (another
cognitive dimension). A third use-class is exploratory design: studies of
design activity show that changes are frequent, and viscosity must be
reduced if we want to design a language for that use.

Another important principle: if a notation is redesigned to change its
position on one dimension, the change will probably impact other
dimensions. Example: we can lower viscosity by introducing abstractions.
(Simple example - style sheets in say Word.) By introducing abstractions we
(a) raise the abstraction level of the language (another cognitive
dimension) and (b) increase the need for lookahead, to get the right
abstractions (yet another cognitive dimension). We may also increase the
hidden dependencies (yet another cog dim). So we can trade dimensions off
against each other, and there are some typical 'design manoeuvres' to be
identified.

Languages in use contain layers of notation. The style-sheet manager in
Word is a layer with its own properties, unlike those of Word itself. An
environment for programming in some language X contains an editor, with its
own notation Y. The notation of X has its own structure; by defining
abstractions (procedures and data abstractions) the user can somewhat
modify the structure of X. Y likewise has its own structure, and sometimes
that can be modified.

The framework applies to the usabilty of all information-based devices,
because using them is a form of notation in a real-time medium.

Lastly, don't forget: the framework does NOT attempt to treat all aspects
of language design.

-- OK, that's the 20-second hand-waving version. You can read about its
detailed application to graphical programming languages in
http://www.ndirect.co.uk/~thomas.green/workStuff/VL96Talk/VLTalk.html

Which is a summary of
Green, T. R. G. and Petre, M. (1996) Usability analysis of visual
programming environments: a 'cognitive dimensions' framework. J. Visual
Languages and Computing, 7, 131-174.

and its application to a PBD environment in
Modugno, F. M., Green, T. R. G. and Myers, B. (1994) Visual programming in
a visual domain: a case study of cognitive dimensions. In G. Cockton, S.W.
Draper and G.R.S. Weir (Eds) People and Computers IX: Proc. BCS HCI
Conference. Cambridge University Press.

Those two papers should be on-line but they seem to have gone away. I'll
try to get them back.

There's also a tutorial on-line at:
http://www.cl.cam.ac.uk/users/afb21/publications/CDtutSep98.pdf

OK, that's more than two pennyworth, I'll shut up now!

Thomas



preferred postal address:
Oriel House
27 Allerton Park, Leeds LS7 4ND
0113-226-6687 (voice); 0113-226-2751 (fax)

Computer-Based Learning Unit, University of Leeds, LS9 2JT

http://www.ndirect.co.uk/~thomas.green/

Reply via email to