Lately for work I’ve been diving more deeply into Win32, .Net, Carbon, and Cocoa, as well as some more traditional web stuff, and I submit for your vehement disagreement a mapping between programming platforms and forms of government.
Win32: Libertarianism
Setting aside the legacy albatrosses in the Win32 API, it’s a pretty lean and straightforward API. Windows programmers want to do it themselves, so it doesn’t try to do anything for you. You allocate your own memory and never surrender control of execution; you are at liberty to do whatever you want, as long as it doesn’t hurt other processes right to do whatever they want. I think that’s why using Windows XP sort of feels like stepping into the Scottish Highlands: everything’s a little out of date and the locals are stubborn and crotchity.
Java/.Net/Managed Platforms: Big Brother Bureaucracy
Managed Platforms accept as read that application programmers will leak memory and waste processor cycles if left on their own, so The Committee has stepped in to review everything. Does your program have a structure which implies a natural and effective memory model? Does your algorithm fit nicely inside the processor cache? Too bad - if it’s not good enough for everybody, than it’s not good enough for anybody. No, you cannot preprocess your code or overload operators; everyone must stick to the Approved Words. Every time a Swing Applet takes five minutes to launch, I feel like I’m queueing at the DMV.
Objective-C: Socialism
Apple’s route has been to give you total access, but subsidize certain patterns of behavior. Let me see here, you managed to normalize a set of data across several different views, and handle all the edge cases to keep their independent representations of the application state in sync? Good for you! You know, though, if you’d just named your methods a little more… Cocoaishly… we would have done that glue code for you. And made it scriptable. And plugin-extensible. And gorgeous-looking. But you know, the choice is up to you. Your overseas competitors already get subsidies, so, y’know, think it over.
Aside: I’m serious about fricken Europeans. Why is it that every piece of software I want is always expensive just because the price is in pounds or euros. Argh!
Web Programming: The United Nations
It seems like you can’t do anything non-trivial in JavaScript without taking a side in an overblown political battle. It progresses less by adding new features, and more by adding new names and titles for features it should already have. To be productive you have to use weird framesworks like GWT which feel like expensive international attorneys who speak seven languages. You watch them perform a simple HTTP GET, and then they give themselves a Nobel Peace Prize.
Python/Ruby/Dynamic Languages: Free-Sex Cult
No comment.