Some years ago, a DEC software engineer by the name of Mike Gancarz wrote an intriguing little book called “The UNIX Philosophy.” In it, he propounded his conception of the Three Systems of Man.
The First system occurs when some genius with time and CPU cycles on his hands thinks up a nifty new idea: maybe a cross-platform machine-independent language that’s so easy to learn, so extensible, and so close to the hardware that no other language could do better. He implements it, leaves a few desirable features out for lack of time, and neglects to polish off some rough edges. It becomes a hit — he is a genius, after all — but everyone who uses it notes one of the missing desirable features or gripes about one of the rough edges.
The Second system occurs when a bunch of under-employed academics and think-tank-types seize on the First system and say, to themselves and one another, “Wow. We could really make a classic buck off this.” So they create a 500-member committee to “pull the First system all the way to completion,” or some such, and develop a Brobdingnagian spec for a new language that will have everything but the kitchen sink in it. It takes 1000 GBytes to implement that spec, the product is shaky and error-prone, and no one knows how to use all the features except for a few of the committee members …but the committee members, their reputations now established as industry experts, get fat on books and speaking tours.
The Third system occurs when a second genius with time and CPU cycles to spare notices that there’s the germ of a brilliant idea buried in the Second system, underneath a lot of useless gingerbread. He recovers it, strips away the excrescences added by that damned committee, adds the handful of important features neglected by the First system, polishes off the roughnesses…and issues it under a completely different name.
A classic First system: C
A classic Second system: C++ (ongoing)
A classic Third system: Java
There are, of course, many others.
The supreme challenge facing the engineer of any variety is to figure out how to produce the Third System first, without needing to endure the costs and disappointments of the Second System. Sadly, this challenge has never been met. Indeed, it might be impossible in the nature of things. But research continues.