A revolutionary OS/Programming Idea

John Newman jmn381@yahoo.com
Fri Oct 3 21:03:01 2003


pjb wrote:
> The stuff of  computers is symbols. Visually, you 
> don't have symbols,
> you have icons, and this is not the same.

I think it is.

pjb wrote:
> You  can invent any  scheme to  organize your  data
> and  your objects.
> Some  prototypes have  been implemented.  The fact 
> remains  that file
> systems are usually just trees. 

So are any programmin schemes that accept nested
structures.  These are trees, and so they are
inherently analogous to file-systems.  Am I wrong?

> Really, to  try to  understand the problem,  I think
> we  could compare
> alphabetics  vs.  ideographics,  and   the 
> consequences  in  term  of
> philosophy and civilisation development.

....

> Of course, it may seem that  having to manipulate
> letters is a loss of
> time when your problem is to write a book (or even a
> sentence).  But I
> say that on  the contrary, this is the  easily
> understood and mastered
> basic building blocs that give us the ability to
> write the masterpiece
> books.

But children play with objects before they learn to
use the alphabet.

Geometric data is just more intuitive that algebraic
date (which is pretty much what language is).  I am
not proposing to get rid of the wonderfull shortcuts
that algebra gives us, just to use geometry when
possible, and, when possible, represent algebraic data
structures as geometric objects.  With this scheme I
am proposing, I am not trying to overcome the man-moth
problem, which I will get to in a minute.

pjb wrote:
> As for the level  of source program editing, if you
> must  do it with a
> text editor, in  which you enter the tokens 
> characters by characters,
> you only  need to know a limited  set of editing
> commands  that can be
> applied  to  all  kind  of  data  and all  kind  of 
> data  or  control
> structure. One  small set of  commands to master 
> them all ;-)

Those commands would be primitives inherent to the
IDE, if I understand you correctly.

pjb wrote:
>On the
> other hand, if you must  work with syntactic editors
> (better have then
> graphical then), you  need to have much more 
> knowledge in the editor,
> and  many more  commands  very  different and  very 
> specific to  each
> syntactic  structure.

If I understand you correctly, I would think those
syntactic structures would be objects abstracted from
IDE's primitive commands.  A programmer could
optionally utilize these objects to create programs
under the syntactic paradigm you are speaking of.

I would think, the IDE should originally start with
near assembally level code.  Different conditionals
and different programming languages/paradigms should
be built into objects that programmers access, should
they choose to.  When I give examples in C++, it's
only because that's all I know.

pjb wrote:

"Do you mean exactly as:

(defun open-array-file (n-elem)
    (interactive "nNumber of elements: ")
    (let ((i 0))
         (while (get-buffer (format "Unnamed %d" i))
(setq i (1+ i)))
      (find-file (format "Unnamed %d" i)))
    (dotimes (i n-elem)
       (widget-insert (format "Element[%4d]: " i))
       (widget-create 'editable-field :size 40 "")
       (widget-insert "\n"))
   (use-local-map widget-keymap)
   (widget-setup))

or as:

(defun open-file-array (n-elem)
    (interactive "nNumber of elements: ")
    (dotimes (i n-elem)
       (find-file (format "Unnamed %d" i))))
"

See, that's the problem I am talking about--I have no
frickin idea what any of that means.  Defun? 
Interactive?  Find-file? Setq?

However, if I could right click on the defun object
and peer into the source code that makes it up, I
might be able to figure it out--and maybe use it more
proficiently--you know what I mean?

That's the problem I am considering here.  All you
guys are talking about another problem that you are
used to talking about:  How to construct and maintain
monolithic data-structures.  I'm saying, yea,
implement your schemes--reflectivity sounds
great--nonsyntactical dialects, awsome, throw it on
the pile--but lets start off with a set of machine
language primitives, or bytecode primitives, and
represent them in a clear way, so that the newcomers
can at least ascertain the meaning of the formalisms
that are built on top of them.


pbj wrote:
"Just have fun!  First, type in NotePad:

     (if (= x 2) (setq y (+ x 1)))

Then, do as you want to get in the text editor:

     (cond
        ((= x 2) (setq y (+ x 1)))
        ((oddp x) (setq y (/ (- x 1) 2)))
        (t (setq y (- x 1))))

wasn't it awfull?

Now try this:
    - make a new folder,
    - name it "if";
    - open it;
    - make a new folder inside "if";
    - name it "condition";
    - open it;
    - make a new folder inside "condition";
    - name it "=";
    - open it;
    - make a new folder inside "=";
    - name it "x";
    - make a new folder inside "=";
    - name it "2";
    - make a new folder inside "if";
    - name it "then";
    - open it;
    - make a new folder inside "then";
    - name it "setq";
    - open it;
    - make a new folder inside "setq";
    - name it "var";
    - open it;
    - make a new folder inside "var";
    - name it "x";
    - make a new folder inside "setq";
    - name it "expr";
    - open it;
    - make a new folder inside "expr";
    - name it "+";
    - open it;
    - make a new folder inside "+";
    - name it "x";
    - make a new folder inside "+";
    - name it "1";
close everything.

Now, do as you want,  duplicate, rename, create or
delete folders, but
get the same structure as:

    (cond
        ((= x 2) (setq y (+ x 1)))
        ((oddp x) (setq y (/ (- x 1) 2)))
        (t (setq y (- x 1))))

Happy?
"

I think you're exagerating a bit.

I think it would be more like this:

--open file "c++ environment" (or however you want to
implement)

--Right-click in window, in menu go to
Function-->Conditionals-->If-->New, click.  The new
file opens with a then file already in it.

--Right-click in 'if's window, in menu go to
Operator-->=-->New, click.  '=' file opens up with two
files already in it.

--Right-click on either file, in menu (which would be
unique to this data set) go to either the
-->set_variable_field or -->set_value_field.  Then do
the other file in the '=' file.

Then do the same stuff for the 'then' file.  It could
probably be done in about 15 or twenty seconds.

Operators would be primitive data-structures, inherent
to the IDE, but objects like 'if', and their menus,
would have been built in the IDE using the native
primitives.  One could right click on any button in
any menu and have the option of observing the source
code that built it.  Being that there is only a
relatively small set of simple primitives, a newcomer
could figure out the nature and capabilities of any of
the objects through deductive reasoning.

pjb wrote:
"
By the way, you will have really BIG troubles when
you'll want to do a
LISP syntactic editor, because the while the syntax of
LISP is simple,
it's used like  an alphabet, as a building block  to
higher level user
syntax.

So,  you have: (if  condition then-clause 
else-clause), but  when you
see: (mystuff expr1 expr2 expr3 expr4), how do you
label the arcs?  So
you  must  revert  to a  basic  tree  structure  with
labels  such  as
"child-1" "child-2", etc, or to  the real structure of
LISP code, that
of lists, implemented over binary trees of car and
cdr... Well, if you
want to  edit LISP code with clicks  in pop-up menus
for  each cons in
the source!
"

PJB, you have not sufficiently explained why anything
that lisp can do, cannot be expressed graphically. 
Perhaps if I knew lisp, I could respond.  All I can
say is, any language is interpreted or compile
hierarchically, so the lisp language should be
implementable in the scheme I am talking about.  There
should be no reason that one cannot create an analog
of how one interfaces with the lisp language in a
graphical way.

pjb wrote:
"
At the cost of a big  enslavement: that of the
syntactic editor, which
constrains what you can write and how you can write
it.  Some will say
that it's a  good thing that the syntactic editor 
allows you to write
only  syntactically   correct  code.   Unfortunately, 
 were  are  not
computers.   We need  to write  formally  exact texts,
 but we  cannot
produce them in their final  and syntactically correct
form out of our
brains. 
"

Like I said, formalize how ever you would like.  You
have not given an argument that a layman can
understand, for why the two paradigms cannot be
completely analogous to eachother.  I hope this isn't
a text-entry bias--you could always put as many text
fields in the object's menu as you want.  You could
even have a terminal button for each menu, expressing
the source in its textual form.

Remember, I am not trying to solve the deductive vs.
the inductive vs. the whatever paradigm problem, I am
trying to address an human interface issue with all
these paradigms, breaking down some of the initial
barriers for newcomers.  Ideally, someone would write
a scripting-type language accustomed to this interface
for simple construction of simple solutions for simple
people, like schedualing tasks or other neat things
handle by *nix command line, etc.  This way we could
baby the windows point-n-clickers into a programming
paradigm.  From there, it is just a matter of delving
deeper into the capabilities of the system, bit by
bit.

pjb wrote:
"
(dolist (db '(afaa whoswho temp bamako sanga
spectacles residences))
   (insert (format "insert into db 
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Grant_priv,References_priv,Index_priv,Alter_priv)
 
values 
('%%','%s','afaaadmin','Y','Y','Y','Y','Y','Y','N','Y','Y','Y');\n"
db)))
"

Again, pjb, the problem I am adressing is that I have
no idea what any of that means.  But about the problem
you raise with this source, again, I think a graphical
implementation of sql or lisp should be able to handle
sql or lisp data objects, respectively, whether
graphically represented or not.

pjb wrote:
"
In conclusion,  I think  that syntactic editors  is a
wrong  idea.  We
don't lack the means to implement them, but they're
uterly useless and
unergonomic.
"

How do you figure that my scheme necessitates slavery
to syntax?

__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com