Path: utzoo!attcan!uunet!mcsun!ukc!edcastle!dcl-cs!aber-cs!thor!pcg From: pcg@cs.aber.ac.uk (Piercarlo Grandi) Newsgroups: comp.object Subject: Re: The essence of objects... Message-ID: Date: 23 Jul 90 12:01:34 GMT References: <1280@media01.UUCP> <1964@runxtsa.runx.oz.au> <1288@media01.UUCP> <1990Jul17.014837.2370@newcastle.ac.uk> Sender: pcg@aber-cs.UUCP Organization: Coleg Prifysgol Cymru Lines: 43 In-reply-to: Chris.Holt@newcastle.ac.uk's message of 17 Jul 90 01:48:37 GMT In article <1990Jul17.014837.2370@newcastle.ac.uk> Chris.Holt@newcastle.ac.uk (Chris Holt) writes: In article <1288@media01.UUCP> pkr@media01.UUCP (Peter Kriens) writes: >... >Tim Menzies answers >> ... oop is a way of normalising procedural knowledge. database >> designers realised that we had to normalise data decades ago. now, we >> normalise code as well. > >This answer seems to imply that we now normalize code. I think we should >normalize our code, one way or the other. But it seems that the >database designers have some formal logic, and at least some understanding >of what it means to normalize data. I wouldn't know where to start >to normalize code. Relational databases have a mathematical model of values, and operations that can be used to combine them, and generate new structures from old ones. Denotational semantics and process algebras have a mathematical model of functions and state transformers, and define operations that can be used to combine them and generate new structures from old ones. Yes, but what we lack is some rule or set of guidelines that allow us to decompose "optimally" this mathematical model, e.g. to enhance reuse at various levels. Relational normalization theory gives us some fairly specific guidelines on how to look for dependencies and resolve them, OO programming some pretty generic ones. In another article I argue that while for many types of programs the guidelines implicit in OO programming are fairly appropriate, they fall short of being complete in general, because for some classes of programs the best "normalization" is not achieved by eliminating redundancy on the datatype dimension, but on the control logic one (or both, of course). Let me repeat here I think that one should apply control and data decomposition in alternating layers, not data (or control) decomposition alone throughout. -- Piercarlo "Peter" Grandi | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk Dept of CS, UCW Aberystwyth | UUCP: ...!mcsun!ukc!aber-cs!pcg Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk