higher level languages
Darius
squeakuser at inglang.com
Wed Mar 3 20:10:55 UTC 2004
Gary McGovern asks:
> Can anyone say what the highest level languages will end up like?
Based on my psychology training and Jef Raskin's "The Humane Interface" and
Charles Simonyi's "Intentional Programming", I have some suggestions which might
indicate which direction programming environments very well might go. I say
environments because I don't believe a text language alone can store, transport,
and convey all the concepts that bug-free, efficient, robust, and easily
modifiable programming applications require. This path of discovery /will/
require some imagination on your part.
___
First, imagine you have lost the use of your figures. Therefore, you must input
your programming by voice only.
Why? Those who have a handicap often must focus on what are their most important
needs and the most efficient way to meet those needs in any given situation. Now
list what problems you think you'll encounter and create some ideas how to get
around them. Carefully note how you'll need the computer to respond and
represent the programming logic and data. I have my own list that I will share
later.
For the "real thing", I am not saying we will or should program by voice or even
by natural language. This is just an exercise to illustrate how to focus on what
is important and that there may be mechanisms in natural languages that we may
not yet be taking advantage of in programming languages.
___
Imagine that you can still gesture with you hand (or hands, really) and the
system will know exactly what you are pointing at.
For the "real thing", you might be using two mice at the same time
___
Now imagine you have a 72" monitor to display your programming environment and
programming logic. It will probably need to curve around you in this imaginary
work environment.
Why? Most of the standards and styles for navigation in the application user
interfaces, the programming user interfaces, as well as the programming language
syntax are a byproduct of having to reveal and re-hide, collapse, and
symbolically represent information that cannot be seen. By making most data and
functions visible and available all at the same time will eliminate most of the
time consuming steps for navigation and the arbitrary symbols that consume so
much time in explanation and education and which are so easily forgotten. For
example, why do icons now have text below them or text pops up when you hover
over them? A large display allows proximity and mapped location to convey
additional meaning and provide additional visual clues and memory aids that are
lost when everything is collapsed.
For the "real thing", I am not saying we will have such large, expensive, and
natural resource consuming displays. Head mounted, "augmented reality" displays
will adequately simulate such a display. Such a "personal" display will make the
programmer more "mobile" and programming more of a "social" activity allowing
the programmer to spend more time with other developers and end users. This
technology will also allow end users to be more actively involved in the
creative process of application development (per Simonyi). Nor am I saying
nothing can be hidden or that no visual clues added to focus our attention, just
that the more there is at our finger tips, the less time spent searching and
learning.
___
Here is a brief summary of other important points required for future
programming environments:
(I will post more details on my Squeak People diary.
http://people.squeakfoundation.org/person/Socinian/ )
o Multiple views of the code, all dynamic and interactive
o The importance of lists
o Syntax as a grid (rather than a tile)
o Explicitly representing all concepts
o Powerful, context sensitive searching, filtering/collapsing, and
Why? Too may classes, methods and ambiguous names to be humanly remembered
o "Auto-complete" for data entry
Why? Too may classes, methods and ambiguous names to be humanly remembered
o Human memory as a limited, but powerful natural resource
o Programming environments and applications environments will both be equally
powerful environments for creativity and perhaps even be the same environment
(better than Squeak & Morphic)
o Reference rather than copy/paste
___
More time will be spent describing the domain and the range of the problem and
why it is important than time spent on describing /how/ to solve the problem. It
is the description/representation of the problem domain and the
description/representation of desired effects) which are most reusable and
should be separated from the "how" logic. This is required for just the same
reasons that the display logic should be separated from the application logic
and both of those separated from the persistence logic and the transport
protocol logic.
Cheers,
Socinian
More information about the Squeak-dev
mailing list
|