The Good, the Bad, and the Ugly: The Unix Legacy (by Rob Pike)
doc.cat-v.org
doc.cat-v.org
And it has some horrible mistakes: (Ugly)
The preprocessor
Conditional compilation
Quite disagree - this feature is what makes C programs so portable.And yes I saw the thing about Plan 9 compiling a kernel for all arch's with no ifdefs - well they only way you can do that is by cheating and either making your own preprocessor, or a fancy makefile. So big whoop.
I read some more, but rapidly came to the conclusion that this is unreadable without the associated (verbal) commentary.
Also, the C preprocessor is largely ignorant of C syntax. Am I the only one who finds that incredibly strange?
So perhaps it's more accurate to say preprocessors aren't particularly useful.
OTOH, not having the C pp tied to C means it can be used for other stuff. The only thing I can think of offhand that uses it is the BSD calendar system, though, and that's largely just #include.
I think that's a rather reductionist assessment. See: http://ntu.csie.org/~piaip/plan9/archives/000005.html
So, in other words - yah, you need need a preprocessor with ifdef's, because sometimes there is no other way to do it.
And in other places he basically says he avoided ifdef's by using a fancy makefile, which doesn't seem an improvement to me, since the makefile essentially becomes a (less flexible) pre-processor.
The point about dead-branch pruning instead of ifdef is well taken though. (But there are cases where that doesn't work.)
#ifdef MIPS
mips_stuff();
#endif
should be if (MIPS) {
mips_stuff();
}
Even a mediocre compiler should be able to eliminate the then-body in the non-MIPS case.Another possibility is to generate the same symbols in every architecture specific component and link the one you want to use.
Some counterpoints:
1. The number of different implementations grew as the number of available computers and users grew. The number of smart people using each distro nowadays is probably still more than the total number of users of some of the original Unix implementations - the same implementations he says spawned the most good ideas.
2. Many different distros allows for many different ideas and paradigms to be tried out. Over time, the best ideas will escape their parent communities and become adopted by all the major versions. Ideas that may never have gained traction in one massive community might find purchase in some of these splinter groups.
The fracturing of the distros was a natural and necessary step in the evolution of the nix system. Yes, Microsoft managed to assert its dominance because it presented a single unified solution, but its heyday is nearing an end. Slowly, the myriad good ideas coming from the countless nix's are again unifying into a very strong front. Mac OS X (FreeBSD Unix) and Ubuntu (Debian Linux) are two great examples of how many different ideas have coalesced into a pleasing and usable system.
Rob Pike ends his message with an injunction to the Unix users of the world to unite, to work together as opposed to walling themselves off in their own segmented communities. While I think the segmentation was beneficial and necessary, I do agree that a strong effort towards unifying the current crop of ideas into a uniform package is beneficial, if only to provide a seed for a whole new set of distros splintering off in new and unique directions.
It's taking a very long time. At the current rate of transfer, Linux will take the whole 21st century to absorb the progress Plan 9 made in the 1980s.
What I hope will happen, is that Linux will focus on the traditional OS role of abstracting hardware, and become purely a hypervisor system. That would exploit its strengths: the vast collection of device drivers, and systems such as network packet munging and LVM. It would provide a sane, consistent hardware interface, that sane, consistent application interfaces such as Plan 9, Oberon, and Alan Kay's new system could easily support.
Learning the insides of things is what got me into UNIX. I wanted to know how hardware and operating systems worked together. Rooted in academia and science, the community and culture drew me in, It is a problem solvers platform. You will find many a startup trying to make their dream come true by hacking together their idea in C/Linux. Microsoft may develop a great business application platform. But if you want to learn and experiment with new computer science concepts you have UNIX.