Dear list members,

I am new to this list, so I will quickly introduce myself and then present
my bloat reduction ideas. I am currently a PhD

student in the area of quantum computers at Czech Technical University. I
started programming when I was 10 years old and enjoyed it greatly. Today I
am  programming semi-professionally to support myself financially and
absolutely hate it. The company I work for is full of very kind and
cooperative people, and I enjoy figuring out concepts and designing things,
but... I absolutely hate real-world computer systems. What follows is a
description of a system I would like to work with, if it existed, in its
pure form. A real system would violate these rules on the boundaries with
older systems, but not internally.

A system contains some data in its memory. Part of this data may be
programs applicable to other data. I want to be able to efficiently view
and manipulate the data. 90 % of data has structure that falls into one or
more general categories:

general multigraph,
digraph,
regular graph,
bipartite graph,
complete graph,
directed acyclic graph,
planar graph,
linear graph,
cycle graph,
tree graph,
forest graph,
connected graph,
general nD array,
square matrix,
unordered set,
ordered set,
+ a few others.


A node of the graph can of course itself represent another graph. I want to
see these structures and manipulate them in ways that directly correspond
to the categories into which they belong. For example, I want to be able to
manipulate, navigate, search, etc. all trees in a unified fashion using the
same point and click commands. Deleting a subdirectory will be done the
same way as deleting a paragraph in a document. The UI will not be
restricted to editing graphs and tables (you can still use a painting
application), but I want to be able to manipulate a pixmap as a general
table, because it falls into that category. I want to "eradicate" working
with data in an unnatural/inappropriate representations. The most prominent
example of such stupid representation is flat text. I want to make flat
text unnecessary at all levels. Programs=ASTs, not their linearized
encodings. Path is a list of tree node names. No parsing of anything ever.
No character escaping ever. No absurd tabs vs. spaces wars. Little need for
regexpes. The eradication of flat text wherever possible is central to my
approach.
My goal is to find and bootstrap a ridiculously simple structure
manipulation-based core system that can be grown *from within* to a fully
featured system -- after bootstrapping, all programming will be done by
direct tree and graph manipulations.
Note: An important influence in this respect is Lyx - the document editor.
Lyx is a structure editor, even though the authors do not have this
viewpoint. In Lyx, one directly manipulates the structure. It uses Latex to
render its output, but this is not essential. You can create and edit
macros that essentially extend the editor with new allowed elements in the
structure. The Lyx macro definitions are edited in a structured way, too.
No encoding of structure in text at all. No syntax checking -- it is not
possible to create a syntax error.
Another influence is mathematical and engineering notation. Mathemeticians
invented a rich notation to visually represent math concepts and
structures. For example, Penrose notation and the notation of categorical
quantum mechanics. Architects have rich notation for buildings. Electrical
engineers have rich notation for circuits. Musicians have their special
notation. It is just the programmers (well, perhaps not all of them) who
seem to think that representing complex programs as equally spaced rows of
fixed width characters from some limited charset is comfortable and
efficient.

Any feedback appreciated.

Pavel Bazant
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to