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
