Slashback: Interoperability, Royalty, Fire
Pardon me, sir, are you in the market for a nice strong bridge? Aaron J. Seigo writes: "A letter from Mosfet can be found at knews.derkarl.org which clearly states the official KDE position regarding the recent "news" with regard to Gnome and KDE getting together on a common component model. Which is: It isn't happening. And for good reason.
KDE2 is in the final stages of preperation, so this is not the time to go messing with the foundations of things. Also, KParts wasn't designed on a whim. The KDE team put a lot of thought into it and came up with something that has some very real benefits to it (speed/overhead/etc). While interoperability would be nice, don't expect it on the component level just yet. Be happy with drag 'n drop and the like. For now."
Fair enough. Also on the KDE front, Joseph points you to knews.derkarl.org, which seems like a useful one for anyone looking for KDE updates.
Will a Linux PDA become their strong suit?
jsinnema writes "News on the Linux Powered Royal daVinci from Wayland Bruns, CEO/CTO/Chief Geek CompanionLink Software at PDA Buzz Royal:
'Unfortunately, development is not on the timeline originally hoped. What's shaping out is two 16MB ROM/16MB Ram units, one 4 color grayscale for a low price, the other full color for a higher price. Size and weight are about the same as a Palm III. The color unit will have a flash slot.' and
'One of the interesting aspects of the project is that this is the first time we can directly compare performance of a particular app on both PC and PDA. I'm happy to report the PDA units are surprisingly powerful, except to note that memory access is relatively slow.'"
It sure would be neat if Linux becomes the default OS for palm-top computing; will Royal's project, though, stand a chance against the flashier ones which keep peeking like Monty Python animation over the horizon?
I'm sorry, but I'll have to call you back after I set my computer on fire. rpeppe writes "those who were intrigued by the Plan 9 release but don't have the appropriate hardware, or in fact anyone interested in new languages and OS's should be interested in the following:
vita nuova has released a new edition of the Inferno OS, source code and all, under a new licence, which allows distribution of core OS source code to inferno subscribers only, but unencumbered personal and commercial use of the binaries and the rest of the source code (including a javascript capable Web browser).
inferno is a cousin to Plan 9, but includes a virtual machine and a new language, limbo, and can run hosted under linux, free bsd, windows and other OS's, as well as natively on x86, ARM, MIPS, 68000, 68020 processors. because the whole operating system is virtualised, programs written for inferno are completely portable, something it would be difficult to say about java, for instance.
the language, limbo, deserves some attention - it's C-like, and OO in the deeper sense, but avoids the inheritance pitfalls that languages like java fall into. it's a joy to write in.
in my opinion, inferno was the coolest thing ever to have come out of bell labs CSRG - and we've now got exclusive rights to it, and intend to make as much of this excellent technology as we can. i hope others will too!"
Uhh, Plan 9 is an operating system, not an
application -- there's no chance that it would
appear in anybody's process tables.
I just grepped my copy, and the string
`plan9.conf' appears nowhere in the
Plan 9 distribution.
The `original incantation' [sic] of Plan 9 was
Plan 9 -- it was a new system from the ground
up, developed in the Computing Science
Research Center at Bell Labs, not by any bunch
of Deccies working spare time. (Dave Presotto,
largely responsible for Plan 9 networking, worked
at DEC once, but that was before he went to grad
school, I believe.)
I speak having worked on Plan 9 at Bell
Labs for 6 years (and I have the Bowling
Shirt to prove it.) Among other things,
I wrote the shell and a whole load of
graphics junk.
-Tom Duff
(I do OO dev since 1991. I love this, and I pretty know what I am talking about).
Inheritance lead to problems because it is easily messed and very difficult to undo.
There is a design time inheritance (ie: B is-a A), and implementation time inheritance (ie: we are going to reuse the implementation of A to build B).
Pitfall of inheritance is that it is very inflexible. During the life of a system, requirements change slowly, design mistake have to be corrected, implementation improve. When things get so wrong, that the implemented inheritance is bad, splitting the classes, changing hierarchy, etc, etc, have a deep impact on what is already produced. (In one word, evolution is easy, until you hit the wall-of-brick of the choosed hierarchy and the pain starts).
The fragile-base-class (in general sense, not in C++ only sense) is also a problem. It means that changing superclass implementation can have vast impacts to subclasses. This often lead to frozen superclasses (ie: don't change it, too much people rely on its particular quirks)
Another problem with inheritance is that it is unknown how far to go with it. Grab any textbook on OO, read the example, and try to understand if the hierarchy is really good. This depends on the problem at hand, which sometimes is not known. But OO proponents like to ignore those issues and present things have if there was single true way.
Stupid example:
Shape -> Polygon -> Square
-> Triangle
-> Line
-> Polygon
-> Circle
-> Point
Is this right ? Wrong ? Isn't Point a zero radius circle ? Line and Point have no surface, so maybe there should be closed/non-closed shapes somewere ?
The answer is that there is no right/wrong. It depends on how it will be used. There is no a single *right* inheritance. But a choosen inheritance somewhat constraint the way we see things.
Java's interfaces is a try to get rid of those problem, but is IMHO a short shoot.
Dynamic langages are less sensitives to those problems. Check Objective-C, Smalltalk or TOM http://www.gerbil.org for more insight on this.
When all you have is a hammer, every problem looks like nails.
When all you have is inheritance, every design is a hierarchy.
For fun design failures, take a look at Swing/AWT integration. When you start to grasp the mess (Graphics/Graphics2D, paint() overload, and casts), it is really funny to see the nightmare coming on the road.
Cheers,
--fred