This post originated from an RSS feed registered with Python Buzz
by Ben Last.
Original Post: The Sound Of Axes Grinding
Feed Title: The Law Of Unintended Consequences
Feed URL: http://benlast.livejournal.com/data/rss
Feed Description: The Law Of Unintended Consequences
Rick Kitts: if something can't be made to deliver satisfaction in 10 minutes it's pointless. Actually, Rick's post is aimed at debunking this, saying that there are different levels of development, and that the "ten-minute crowd" is just one. Glad he said that; it was occurring to me that ten minutes with Zope isn't going to get anyone anywhere at all.
I haven't used Jini, for the following weak and tenuous reasons: (a) I've not developed anything that it'd be especially well suited for, (b) The name reminds me of that wierd Christina Aguilera song, (c) It's in Java.
Well, alright, (b) is a lie, and in any event is easily remedied by appropriate amounts of Brian Eno. And (c) is overstated; I have no great axe to grind against Java. I've written a fair amount of Java code in my time, until I decided that Python just fitted me better, in the same way that jeans fit me better than a suit, or a Strat better than a Gibson. It's a preference, that's all, and heaven knows I still try to remain as technology-agnostic as is feasible.
So this all got me pondering about whether programming-language-agnosticism is really possible. My answer so far is a familiar one, typical of engineers when asked an ostensibly simple question that in fact conceals a host of assumptions nestled, like a gang of particularly vicious funnelwebs, just beneath the surface; Yes, and yet, no.
Yes: it is, because otherwise one risks falling squarely into the familiar old EverythingIsANail trap. I have a graphic-design colleague, a talented, witty and erudite man, who does almost everything in Flash. I mean, everything; invoices, letters, letterheads. The one tool becomes the hammer for which everything is a nail. I've seen this also in Visual Basic developers. Trying new tools gives us new ways of looking at the world, or at least the problem domain against which we currently bang our heads. Learning is good.
No: it is not, because inevitably, a programming language comes with a set of baggage around it. For example, Visual Basic comes with an IDE that makes knocking up little dialogue-driven apps so extremely fast that any other language would have to be an order of magnitude better in some other respect to win the choice for that type of task. And I don't mean better in some abstract sense, like "better at representing the target domain", "has better object orientation" or "has nicer syntax", I mean in some way that positively affects the project cost, timeline or success criteria.
Java, of course, comes with its own baggage. In my experience that includes grindingly slow "cross-platform" IDEs written in Java that manage to differ from the UI conventions on every platform just enough to make my teeth ache. Projects that consist of dozens and dozens on .java and .class files scattered through a myriad of directories that reflect the class structure; these make working in vi (yes, I confess) a pain. It's close enough to a compiler to make the write-compile-debug-edit cycle just that little bit harder, and close enough to an interpreter to host the subtle indeterministic runtime gremlins of unexpected exceptions. Like a single grain of sand in a condom[1], a tiny flaw may, over time and use, result in an unrelated amount of annoyance.
None of this is, of course, any more than subjective griping about things that are not going to change in any way. But subjectivity matters; we each see the world through the veil of our own prejudices and learned responses. Python fits me well because it has a good impedance match to the way I think and work. This "way" is made up of habits developed over thirty years of poking bits around with a stick to make them dance; they're probably not going to change now without pain and discomfort, so there'd have to be a damn good reason to make that change.
Thankfully, I'm enough the master of my own destiny that I don't have to.
[1] Apologies for this metaphor, but someone used it at me a month ago and until I pass it on it's going to stick around in my head.