David Freeman wrote:
--- Steve Fosdick fozzy@pelvoux.demon.co.uk wrote:
On Fri, May 04, 2001 at 01:15:53AM -0700, David Freeman wrote:
Exactly, and a compromise is the worst parts of all solutions. The language I am liking at the moment is java, it just makes sense
with
the OO design etc...
Engineering is about making things that are fit for a purpose and very often this involves compromise. A system that will need to be changed but is unmaintainable is not fit for purpose and neither is one that goes to slowly.
Very true, but things need to be designed not created, which means that things like expansion etc... need to be designed in from the beginning, compromises whould be minimial.
expansion does not need to be designed in in the first place, if a piece of software is well designed, it should be possible to expand it later, software engineering is not about allowing for future expansion, it is about providing sufficient documentation and well defined communication methods to make future expansion possible.. ie: you don't have to design a system to be expandable or adaptable in the future, if it is well designed these features will be present anyway. Unfortunatly a lot of people call themselves software engineers when they don't really understand the concepts or practice the basics.... I have been known to fall into this category every now and then ;)...
Engineering is full of compromises. Take the example of the clutch in a motor car - this is an ineffcient device (wastes energy when it is slipping) and has poor life (it wears out much faster than the engine does) and yet it is still widely used. It is an acceptable compromise.
Very True, but what method would you suggest instead of a clutch?
erm.. an automatic clutch ;).. a well designed one is very efficient.. I believe that Steve was talking about the clutch plate and manual pedal ??
Actually there is some debate as I understand as to whether we should move away from monolithic kernels towards a microkernel and message passing (which suites OO design).
Personally I think OO is very sensible, but everything needs to be OO, which Java and C++ aren't. Small talk I believe is the closest thing we have to a true OO langauge. If you think about it, the kernel is an onject, which should be talked to by other objects (programs) to tranlsate and talk to other objects (hardware).
The concept of OO is apealing to some, and dreaded by others. I think in an OO fashion and I find it very easy to program in, a friend thinks in a more procedural way and finds OO very hard. In terms of coding, OO trys to force good habits like documented message passing and the like, BUT this can lead to very inefficient code in some circumstances... There are certain times when OO is apealing, and others when it is not... providing reusable adaptable classes which are documented is a good thing, but the execute time for the code may not be as efficient as a procedural method..
Anything can be thought of as an object, but I would say that the kernel is not an object in the OO sense ;)..