[self-interest] programming and knowledge representation
lourenci at lsi.usp.br
Tue Jan 16 17:41:10 UTC 2001
Thilo Schwidurski wrote:
> Dear members,
> the group lately adressed unification of languages (vs. "Babel
> effect") and metaprogramming and other philosophical concepts. So I
> felt that it might be a good place for a discussion of some thoughts
> about programming and more general about knowledge representation.
Wonderful connection!!! I get distressed because there is a real
gap here. People from artificial intelligence do not get involved with
people from software engineering! It is changing however slowly!
> Please forgive in the case that I even use whole phrases that were
> already written here (or elsewhere) without quoting properly - in the
> end nothing I have to say is possibly really new - maybe/hopefully
> except of the overall picture. But I can say that I definitly got
> inspired and encouraged by the Self-, the Merlin- (Jecels not Suns),
> the Tunes project and of course of all of what I read from you that
> are devoted to thinking about programming in this group (and a couple
> of others).
> A first helpful step to deal with the "Babel effect"-problem could be
> changing the view on what programming is. I see Programming (perhaps a
> bit more general as usual) as gaining and writing down knowledge. You
> could associate "gaining knowledge" with "designing/architecturing
A broader definition of programming. Curiously for me programming
has always been just this. This is the reason why I cannot accept
any language to implement my ideas. However it is common to hear
computer scientists saying: you can implement your ideas in any
language!!! This sounds and will sound as very awkward!
> I don't see so much use any more in the partitioning of knowledge in
> data and programs/algorithms. An example: every program code that
> contains constants contains "plain" data. Every database that contains
> a kind of rules (I am thinking of values of string-fields that contain
> code) contains programs.
> So what I am aiming at ?
> Knowledge can be represented as a directed graph, which' nodes could
> be seen as extremly fine grained objects - possibly only "containing"
> one value of a POD-Type like String or Number. Maybe there has to be
> also a Bitarray Datatype but 'only' for efficiency in storing
> "multimedia data" streams.
> All other common named properties of objects like attributes, methods,
> inheritence parents (each also representable by slots) and types are
> realized by named edges. An edge can be named because edges can also
> be connected - with edges or objects. The names are just objects (a
> This special graph (I would like to call it hypergraph but the term is
> already defined differently - so I will just refer to it as graph) can
> be seen as an "amalgamated structure" of semantic networks, object
> networks and hypermedia in respect of what it can represent. I see it
> as kind of "mother of representations" or *the* model (like in
Well it is difficult to follow your reasoning here. I found it
because I have always dealth with graph theory. It has been fundamental
to make explicit layers of architectural reasoning that cannot be
by verbal languages such as English, Portuguese, etc.
So graphs are fundamental as visual formalisms. There are several kinds
of graphs. Hypergraphs (directed or acyclic) are graphs in which the
relation being specified is not necessarily binary: in fact, it need not
even be of fixed arity. Formally, an edge no longer connects a pair
of nodes, but rather a subset thereof.
The information conveyed by a graph or a hypergraph is nonmetric
and captured by the purely topological notion of connectedness; shapes,
locations, distances and sizes have no significance.
As far as I know it is widely used in all fields of knowledge. And
concerning implementation , data structures that already exist
or that can be easily invented based on them implement them
On visual formalisms Communications of the ACM May 1988 Volu 31
For example Kirk Martini, architect and structural engineer used
it to generate structural design. I use it to generate architectural
design. Curiously it was Christopher Alexander who introduced
graph theory in architecture. He was considered a genius in the
sixties for this. Later on he was strongly criticized wrote a book
entitled a city is not a tree and then created "A pattern language"
which is inspiring the Design Patterns from GOF.
> One motivation for this represention structure is that I found that
> the relations between objects are at least as important as the objects
> For example is deleting an object almost always really the unlinking
> of two objects (that a historizing mechanism can and should take care
> The basic language concepts (message passing, delegation to prototypes
> and classes, ...) can be plugged in (and perhaps sometimes even out
> of) the environment (that means getting assigned to the
> I am not sure if this is partly not even already state of the art in
> Smalltalk/Self/other environments.
I was invited by the Head of the Department of Electronic Systems
of the Polytechnic School USP to give a course on Hermeneutic
Computer Science starting next September for graduate students.
I will deal basically with the acquisition of knowledge. For me it is
easy to build a bridge between mathematics the way you are
putting forward ideas and art. Being a conceptual artist it is easy
for me to perceive that art = object + idea. For me these are different
faces of the same coin.
So I feel that the great advance introduced by Self is the ability
to stress the thingness of things. Moreover Self is essentially
hermeneutic (there is nothing more hermeneutic than music)
hence musical. For me it was very rewarding to discover that
Randy Smith is a jazz musician. I would like him to tell us
how music influenced his Self concepts besides being a physicist.
It is Peter Wegner's belief that in the XXIst century, there will
be an amalgama between interaction and algorithms.
The knowledge based system I am building has this potential.
So please do not forget interaction!!! when you argue especially
because you belong to the Self community!
> To represent code of the conventional textual programming languages
> each language concept can be assigned to an arbitrary syntax (of
> course carefully, without violating inherent constraints like "no two
> concepts may be assigned to the same syntax within the same
> environment") or even a set of alternative syntaxes. For example would
> I prefer to write down mathematical code expressions in the common
> mathematical symbol language (probably enhanced to be
> As far as I know there are functional languages that have this feature
> of syntax-adaption. I am not sure at all (because I never designed a
> language) if this "separating of concepts" works at all. I just have a
> good feeling that it should anyway ;-)
> Each language concept is assigned to (and gets processed by) an
> interpreting machine (part of a compiler or interpreter or VM) - this
> machine solely works with the underlying graph (seeing it as the
> traditional AST-structure).
Dave Ungar has a nice paper on the transporter, where he comments
the difference of the way ASTs are used in the OO BETA programming\
language and the way the transporter is built in modules.
It would be nice his comments here for you to perceive that the
mathematical notation alone are not very expressive, although
there are moments they fit perfectly well and add expression
how I use it in architecture.
> All the other common representations (e.g. textual program code, but
> also "more visual" representations like UML, just everything that is
> known as hypermedia) can be generated (temporarily) as *views* an the
> graph by transforming-adapters.
> A persistence-mechanism (mapping between different "layers" of
> storage) only deals with graphs (resp. queried portions of the "whole"
> graph). That means that the underlying graph/OO-database (virtual
> memory management ? - I get confused what the different "parts" of the
> concepts behind these terms really are) just works with graphs.
> Historizing information is embedded in the graph and the processing
> and usage of it is a crucial part of the KlDE (knowledge development
> environment) as it seems to be very important to being able to track
> the evolution of knowledge (especially the evolution of the linking).
> Also like Historizing is Personalization (think of ownership,
> authorship and privacy) a basic concept that has to be serviced by the
> After all could this system be the foundation of something like "open
> knowledge" (in contrast to "open software") development - aiming at
> breaking down the borderwalls of heterogenic knowledge representation
> systems (possibly just yet another holy grail dream :-/ ...).
This sounds great! So could you give us references for us to delve
into your ideas.
> I shurely hope this ideas are not to far away from your interests and
> would love to discuss them with you.
It fits perfectly well with my ideas and I hope you can contribute to
help me to climb higher and higher to see broader and broader
| Albertina Lourenci |
| PhD in Architecture and Urbanism |
| post-doctorate researcher |
| Laboratory of Integrated Systems University of Sao Paulo |
| Avenida Professor Luciano Gualberto, 158 Travessa 3 |
| CEP: 05508-900 |
| Sao Paulo Sao Paulo State Brazil |
| Voice: +55 011 818 5254 |
| Fax: +55 11 211 4574 |
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Self-interest