A revolutionary OS/Programming Idea
Lynn H. Maxson
Lynn H. Maxson" <lmaxson@pacbell.net
Thu Oct 2 17:33:03 2003
John Newman wrote:
"...Seems to be sound advice--will do. But with a quick
google, I found that there are object oriented
versions of declarative and logic languages. So, I
don't see why my idea wouldn't work with them as well
(perhaps work better--without all the unnecessary
syntax). ..."
There's object-oriented and then there's object-oriented.
Fortunately for programming we've never had any other kind.
Unfortunately for programming on the basis of some research
work at PARC we have a significant population dedicated to a
restricted form in which they are slowly (and then not so)
drowning themselves.
We have only data (objects) and operations (instructions). So
far we haven't developed machine architectures based on
anything else. So no matter how high an abstract level you
create and how many lower levels you must transcend you
end up with a set of machine instructions. You write
instructions. You don't draw them.
You may draw at some abstract level, say your visual
programming level, but someone or something at the next
level has to translate them into some written form. If you can
only draw and not write or restricted in what and where you
can write, then you are at the mercy of someone or
something. That in itself violates the principle of open source.
If you want a visual programming language of some standing, I
would probably suggest AS Visualizer
(http://www.astrac.com/). You can also contact the Visual
Prolog people (http://www.visual-prolog.com/) for a free,
functional Prolog development environment.
The reality of programming lies in its 100% basis in formal logic
of its languages and the machines on which they execute.
Programming like algebra, geometry, or calculus or in symbolic
logic becomes one of ordering sequences of logic to get from
point A to point B. Setting aside for the moment the issue of
getting there in the shortest distance, one of logic
optimization, the complexity quickly degenerates into
connections among the sequences. What makes programming
difficult is not the language used, which regardless of syntax
difficulty is nevertheless manageable, but getting the
sequences and the connections correct. It requires a level of
skill in logical thinking, a discipline unfortunately not
emphasized properly in our education systems.
People think well in the small, but not in the large. There's a
certain minimal size, a logical sequence as it were, in which
any given individual can basically write error free.
Somewhere above there he increasingly becomes error-prone.
Logic programming allows us as people to write in the small,
thus essentially error-free, while it does the larger
constructions, the writing in the large, with the same
error-free habit.
There you see the advantage of logic programming, the basis
of declarative programming languages, over imperative
languages, which by their nature force humans to have to
write in the large. In short you let the software as part of its
completeness proof take unordered source and transform it
into an optimal logical form.
At its heart is not a reduction in writing but tremendous
reduction in rewriting associated with reorganization. In terms
of cost and time, the two major components of human effort,
a reduction of millions to one. At that cost and rate you do
not care what little rewriting you do in the small that
multiplies greatly the rewriting the software must do each
time in the large.
In the nature of our business we have the problem set, reality,
and the solution set, our source code. We have in that reality
the dynamics of change whose nature and rate varies
randomly. We have to reflect those dynamics in our solution
set. That's the basic mapping operation for which we use
programming languages. The goal is to support a change
dynamics of the solution set equal to or greater than that of
the problem set: in short never on average have a backlog.
So far with any programming language we have not achieved
that. Not one. The latest classical failure, one whose
backlog increases faster than the methodology it replaced,
you fondly refer to as object-oriented. Otherwise we would
not have such things as the "Agile Manifesto", agile modelling,
or XP (eXtreme Programming). They too will fail...and fall
from grace.
You started out proposing an integrated system including an
OS, which has to ultimately come down to writing instruction
sequences, and then suggesting a non-writing (visual)
interface. You have two worlds you need blend here, one
which cannot exist on its own (visual) and one which can
(written). You have to be careful when you casually
disregard who either does or owns the written.