RE: [Edu-sig] RE: [Tutor] Off topic musings

Maybe. Really I'm just interested in what exactly a theoretical basis for software engineering would look like. The papes I was reading suggested that we may be reaching the point in CS research where we cannot progress further without an underlying theoretical base (like electrical theory underpins electronics which is in turn underpinned by atomic/molecular/ionic theory).
I think you are comparing apples and oranges here. I think your vision of software engineering is too narrow. Electrical theory explains a finite set of observed electrical properties. Software is a language that can express too much to be stated in a single theory. It is too expressive. You might as well try to make a general theory of communication which covers all possible communication, speech, evocation, persuasion, poetry, art and expression. Software engineering would then be a substantial subset of this general theory. In order to have a meaningful theoretical discussion you must break down the subject into a finite set of rational observable components with observable relations between them. You then attempt theories to explain what you observe. The problem with communication (of which software engineering is a subset) is that it is infinitely extensible. As long as there are new areas of software problems to solve we can't put a bound on it. It is not even clear what you mean when you ask what a "theoretical basis of software engineering would look like." Engineering doesn't have theories. Science has theories; engineers apply these theories to solve specific problems. You would do better to think of a specific aspect of software engineering that you think needs explaination. Without specific questions you will never have useful theories. When you narrow your self to specific questions you will likely find plenty of literature that discuss them. Be careful or you will fall down the rabbit hole that has swallowed literary criticism, chasing meaningless but pretty ideas that go nowhere, lost in endless reflections of ideas that seem like they must mean something but can't be nailed down. This is the curse of language, many more things can be said than have meaning. You don't start with a theory, you start with specific questions and observations that need explaination. Theories provide possible and hopefully testable explainations. The results suggested by these theories, once validated as useful and predictive, can be the basis for the next level of theories. Let me give a specific example. You don't ask for a theory of physics. Physics is too general a thing to have one theory. On the other hand we have a set of theories which describe various fields; gravitation, electromagnetic, strong and weak forces. These theories are pretty mature and usefully and predidictively explain the specific fields. These field theories have a lot in common and now that they are well developed and tested it is worthwhile looking for a unified field theory in which the specific fields are merely special cases. Physicists have been hoping for this one for 80 years. You try to build a general theory when the specific theories are well understood. This does not describe the condition of software engineering or even of so called "computer science."

Maybe. Really I'm just interested in what exactly a theoretical basis for software engineering would look like. The papes I was reading suggested that we may be reaching the point in CS research where we cannot progress further without an underlying theoretical base (like electrical theory underpins electronics which is in turn underpinned by atomic/molecular/ionic theory).
I think you are comparing apples and oranges here. I think your vision of software engineering is too narrow. Electrical theory explains a finite set of observed electrical properties. Software is a language that can express too much to be stated in a single theory. It is too expressive. You might as well try to make a general theory of communication which covers all
communication, speech, evocation, persuasion, poetry, art and expression. Software engineering would then be a substantial subset of this general theory. In order to have a meaningful theoretical discussion you must break down the subject into a finite set of rational observable components with observable relations between them. You then attempt theories to explain what you observe. The problem with communication (of which software engineering is a subset) is that it is infinitely extensible. As long as there are new areas of software problems to solve we can't put a bound on it.
It is not even clear what you mean when you ask what a "theoretical basis of software engineering would look like." Engineering doesn't have theories. Science has theories; engineers apply these theories to solve specific problems. You would do better to think of a specific aspect of software engineering that you think needs explaination. Without specific questions you will never have useful theories. When you narrow your self to specific questions you will likely find plenty of literature that discuss them.
Be careful or you will fall down the rabbit hole that has swallowed
criticism, chasing meaningless but pretty ideas that go nowhere, lost in endless reflections of ideas that seem like they must mean something but can't be nailed down. This is the curse of language, many more things can be said than have meaning. You don't start with a theory, you start with specific questions and observations that need explaination. Theories
I have to say I agree with Steve Morris here - I see programming and thus to some extent software engineering as more of an art field than a science - after all, you are simply expressing your ideas to a computer. The "science" part is that you are given a solid, specific set of ways of expressing your ideas, and that it resembles a mathematical language to some extent, but that really hides the fact that you are still expressing ideas and can be as creative as you want in devising a solution to a problem. As Steve said, programming can be used to devise solutions to nearly any problem that comes our way - they are now starting to teach computers to speak, etc. Also, since a computer is a tool that we have created, we also control the "laws" which govern the design, operation and use of this tool. As I see it, laws are generally universal constants - a way to explain and predict the behavior of natural forces. Laws mean nothing when you can change them at will. We define the significance of bits and bytes, we create the programming languages which we use to create software, etc. We can also change those things, meaning they aren't held constant. The only 'laws' I see as applicable to computer science are those that it uses in creating these tools - i.e. electricity and conductivity. I think I see what this discussion is trying to get at though - the underlying abstract ideas which underscore software design. What is taught in class for most computer science programs is a whole lot of math, a lot of programming syntax, and all sorts of discussions of abstract programming concepts like objects, recursion, etc. While that's all nice and good, learning to code is not learning how to program. (Ever see a hacker write a messy and buggy solution to a problem? I have. I've done it! ^_^) I think what people are asking for are the "laws" of how to program - those few core ideas which makes one master the 'art' of programming. Am I right on this? Kevin ----- Original Message ----- From: "Morris, Steve" <smorris@cereva.com> To: "Bruce Sass" <bsass@freenet.edmonton.ab.ca> Cc: <edu-sig@python.org> Sent: Monday, August 20, 2001 10:06 PM Subject: RE: [Edu-sig] RE: [Tutor] Off topic musings possible literary provide
possible and hopefully testable explainations. The results suggested by these theories, once validated as useful and predictive, can be the basis for the next level of theories.
Let me give a specific example. You don't ask for a theory of physics. Physics is too general a thing to have one theory. On the other hand we have a set of theories which describe various fields; gravitation, electromagnetic, strong and weak forces. These theories are pretty mature and usefully and predidictively explain the specific fields. These field theories have a lot in common and now that they are well developed and tested it is worthwhile looking for a unified field theory in which the specific fields are merely special cases. Physicists have been hoping for this one for 80 years. You try to build a general theory when the specific theories are well understood. This does not describe the condition of software engineering or even of so called "computer science."
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig

On Tue, 21 Aug 2001, Kevin Ollivier wrote:
I have to say I agree with Steve Morris here - I see programming and thus to <...>
As do I. If you re-read the messages you will see that Alan G. wrote what you are both getting worked up about. I'm the guy who would head off into the philosophy section of the library... - Bruce

I just realized that tutor@python.org was not in the CC, and I'm not subscribed to edu-sig... please forward any messages you think I should have responed to directly to me. Thanks - Bruce

On 20 Aug 01, at 22:06, Morris, Steve wrote:
Maybe. Really I'm just interested in what exactly a theoretical basis for software engineering would look like.
well try to make a general theory of communication which covers all possible communication, speech, evocation, persuasion, poetry, art and expression.
But the latter is being worked upon and indeed shares much of its basis with CS (Shannon and Moore both worked in comms) but whether such a goal can be achieved, at least they are trying. But in CS we seem to be bogged down in the study of techniques for programming rather than the fundamentals of understanding the nature of the information we manipulate. For example using Shannons work I can define the information content of a bit stream, by applying similar principles from Huffman I can give meaning to a character stream and McCabe(?) applied similar concepts(albeit via a bizarre mapping) to software complexity metrics. It would seem to indicate a basic commonality stretching from bitstreams through to program code. If we could start to understand the nature of that commonality we could start to address issues of program quality and correctness based on the impact on the underlying information transforms. Indeed we would also be able to start to specify systems in terms of the underlying information requirements. At present we are a long way away from this. (And no, I do not believe that data driven design ala JSD etc is directly related to this. Anymore than most of the work in AI does.)
software engineering would look like." Engineering doesn't have theories. Science has theories; engineers apply these theories to solve specific problems.
This is true and I probably should be using CS instead of SE. The IEEE papers were headed SE so I guess that steered my wording.
Without specific questions you will never have useful theories. When you narrow your self to specific questions you will likely find plenty of literature that discuss them.
And indeed that's been the direction of CS for the past 50 years or so. But the point the paper's authors were making was that we can no longer go on far in that direction without deriving a better understanding of the nature of information.
The results suggested by these theories, once validated as useful and predictive, can be the basis for the next level of theories.
And that seems to be the nub. We appear to have reached the point that we are not uncovering much that is new, we need a new set of theories to advance the art.
Physics is too general a thing to have one theory.
I'm not sure I agree. All of physics ultimately comes down to studying the interaction of particles and the forces between such. Kind of like layer 1 in my model. At layer 2 things start to diverge into specialisms And by layer 3 we reach the differences between say optics and electronics - based on the same electromagnetic wavre theories but applied in different areas.
Physicists have been hoping for this one for 80 years.
But again they are trying. All I'm asking is who is trying to understand information in the CS community? Thanks to everyone for the comments so far. It's interesting to see the different approaches taken. Alan G

Also, since a computer is a tool that we have created, we also control the "laws" which govern the design, operation and use of this tool. As I see it, laws are generally universal constants - a way to explain and predict the behavior of natural forces. Laws mean nothing when you can change them at will. We define the significance of bits and bytes, we create the programming languages which we use to create software, etc. We can also change those things, meaning they aren't held constant. The only 'laws' I see as applicable to computer science are those that it uses in creating these tools - i.e. electricity and conductivity.
There most certainly are universal laws that apply to computers, regardless of how they are created(*). For example, there are problems that cannot be solved in general by any computer program. Any computer, given unlimited memory, can simulate any other computer. There is even an absolute definition (Kolmogorov complexity) of the information content of any object, though it is not computable. If you accuse Computer Science of being insufficiently "unified", I can't argue with you, because I don't really know what that means. But there are most certainly universal laws of computing! Look here for one of the weirder consequences of this type of work, and probably the best paper title of all time: http://citeseer.nj.nec.com/hutter01fastest.html Dave (*) Obviously it cannot be shown mathematically that every possible computer obeys these laws, but there are many examples and no counterexamples, which is all that we can say for any scientific theory. Everything that we call a "computer" today most certainly does obey them. Anything based on logic gates and memory will obey them. Probably anything based on known laws of physics obeys them, since as far as I know the known laws of physics can be simulated (very slowly!) on a Turing machine.
participants (5)
-
alan.gauld@freenet.co.uk
-
Bruce Sass
-
David Scherer
-
Kevin Ollivier
-
Morris, Steve