[Tutor] Off topic musings

alan.gauld@bt.com alan.gauld@bt.com
Sun, 19 Aug 2001 18:00:06 +0100

Some time ago I posted the following musings to my work
colleagues and a few of us chased it around for a while. 
I came across it recently and thought the ideas might be of some 
interest to the members of these lists. If anyone knows of
resources please let me know...

----------- Included text ---------------
I read a collection of papers on Software Engineering recently 
published by the IEEE and edited by Professor Richard Thayer 
(and his friend).

One recurring theme in these "State of the Practice" papers 
was the lack of a fundamental theoretical basis for computing. 
i.e. there's nothing comparable to the laws of physics in 
software engineering.

I started thinking and doodling about what the fundamentals 
are and came up with several notions (ideas would imply 
something far too well formed!) These are based around 
the concept that software manipulates data or more correctly 
"information"(no surprises there! :). However most 
information theory (Shannon et al) relates to bits. 
Far too low level to be useful.

That started me thinking about levels of information and I 
came up with 3 layers of information - rather like an 
OSI comms model:

1/ Physical - bits/bytes, defined by the machine architecture
           operations are CPU specific, include bitwise OR/AND/NOT 
           and binary arithmetic...

2/ Implementation/Environment - data types defined by the programming 
          environment - object in Smallktalk; int, float, char in C 
          Operations include built in operators for arithmetic,
          boolean logic and I/O.

[Question: Where do collections: arrays, lists etc fit into the 
           layer proposal?]

3/ Application - User defined data types - records, files, 
          RDBMS Tables etc
          Operations are user defined functions/procedures etc.

Other candidate layers include "Standard libraries" etc, but 
I rejected these as a subset of either Implementation or 
Application layers.

To be useful any fundamental basis of software would have to 
express concepts which applied with equal validity across all 
layers. - ie not be dependant on data format, or semantics but 
simply relate to *relative* information content. Operations 
would need to be expressable in terms of data transforms 
across and within layers.

I could go on (onto the nature of operations!) but that's 
probably enough for now.

Now the big question is:

Since I am sure this isn't original, who has done this stuff 
before? - Where can I get papers or books on fundamental 
information representation/transformation theory? I assume 
there must be something? somewhere?

[ Note: I am not talking about Knowledge Engineering which 
has more to do with how information is stored and processed 
than what information is, its empirical qualities etc... ]

Alan Gauld
BT computing partners
Tel : 0141 220 8795
Fax : 0141 248 1284