In my previous article on progress we’ve seen that fashion and marketing are not a friend of progress, because they bind existing know-how into doing useless things. But why do companies see fit to create hype? Why on earth would two big corporations go to the length to create programming languages and to create a hype around them? And why would entrepreneurs generate buzzwords like WEB2.0 and sell their business plans based on those?
Let’s take those examples one by one.
The company’s (Sun Microsystems, if you still remember that name) explanation for the programming language hype was:
“because it is cross-platform” and “because it is simple and powerful”.
Simple? How long does it take a newbie to get the signature of “public static void main(String args)” right? And to remember to wrap it in a “public class Foo”? (remember, there was no eclipse or netbeans when “java” started, no auto-completion etc.) A Foo that is also in it’s own, properly named file? And that he has to rename the file to Foo.java (from foo.java or FOO.JAVA) when he copies the file to any real file system?
Now why didn’t they, for example, take a sub-set of C++ and modify it to produce byte code similar to java’s? It’s not that hard to change the assembler part of an existing machinery. Or a language similar to Pascal or Delphi, if they wanted a “stricter” language? Why invent a language with a longer (and therefore slower to type => more typo-prone) syntax that had, at the beginning, any number of shortcomings to compensate for the benefit of the garbage collector? (Oh, by the way, pretty much all scripting languages where you can dynamically create objects and reference them have a garbage collector - even Visual Basic.) Or why didn’t they use an existing runtime, like that of aforementioned LISP?
I’d say, it suspiciously looks like the real reasons were
- because they wanted to OWN a programming language (tm).
- because they specifically didn’t want new software that would compile with existing compilers out there, but wanted to bind people to their platform.
- because if you own a programming language, you can sell all kinds of things associated with it:
— software services
— additional software libraries (…”enterprise editions”…)
- Also, at the beginning you are the only one who can. Since you invented it, and you own it, and you don’t publish the specs until way later when other people start to write books and libraries for your language based on their experience.
- At which point you simply create a new version that has new features that are not backwards-compatible to the old one, and start selling new books and libraries for that one.
- rinse, repeat, ad nauseum.
And how do you bait people into it?
- promise “cross-platform” (“compile once, run anywhere”), since this is a “known problem” in the software industry, and it seems like the existing solutions to the problem are — still — a lot less well-known.
- promise “less error-prone” and “faster software development” through “garbage collection” and “type safety”.
(The solution of using a sub-set of C++ where you make certain operators illegal and that compiles into a byte code would, by the way, do the very same thing, but allow you to compile the stuff with existing compilers, and allow existing C++ programmers with >10–15 years of experience to program on the new platform with no adjustment time. And this would be bad… how?).
Summary: the motivation is to create a new, previously non-existing market. To earn money. In other words, greed.
And since Microsoft EXCELs at greed, they simply had to follow that trail with .NET. Promising basically the same things.
And of course, the motivation to put IT-Buzzwords (WEB2.0, AJAX, XML, …) on a business plan is exactly the same: attract investors => get money. And of course the entrepreneur would do that. Since the investor wouldn’t budge unless he SEES a buzzword! Or how else should he, who has no idea of the trade, recognize what’s worth investing into?
So what does all of that tells us? Similar to the points I’ve discussed in the previous article:
- If somebody invents a new toolbox and convinces people that “his is better” while it is actually not, or
- if people are forced to re-start their projects using buzzword technologies instead of working technologies because otherwise they don’t get funded, it takes people with know-how working on exiting projects, and binds them learning the new stuff. Stuff that doesn’t actually let them accomplish whatever they were working on any faster. Which means, now they have to add the learning curve of the new stuff to the time their projects need to get done — with no additional benefit.
And greed (or some would say, capitalism) is responsible for both of the phenomena.
So is greed the worst enemy of progress?
Well, that could very well be. But there is a little more to that story. It has to do with human life span, experience, time, and of course, progress. Tune in for the next episode of … Progress Wars!… ;-)