Java is like a mysterious creature. The language itself has no grandeur or mystery with its decrepit non-unsigned-integer body but as a technology it is at the very least a nice way to get a garbage collector that doesn't suck too much out of things. It's also amusing seeing just how hard people are willing to work to get the language into a state that is actually usable.
This stems from a long line of tradition most likely (I am entirely making this up) of taking boring language X and tarting it up. Some languages have stream lined this process by adding macros, templates, dsls and all manners of delicious treats to tantalize programmers with their deviously delicious syntactical and semantic confectionery but at the core of most of the language is a dull and powerless language.
What is interesting is the lengths we go to pave over the obvious problems. Your agile OOP programming language not as agile as you wished? Integration getting you down? Have no fear inversion of control--IOC is here to randomly give you a chain saw and a stirring spoon so you can recombine your classes like some kind of Frankenstein soup.
Its actually not an entirely terrible idea. This is because while programming in a language whose name shall be protected to well protect things I ended up pretty much coding one. A bad one mind you but now that I started learning spring I realized it. But like most random-chainsaw enhanced Frankenstein soups they must be used with caution.
I also more or less discovered a really bad version of lisp this way (thanks C++). The problem with programming languages is perspective. A person wearing their java goggles only sees insanity in the C and dynamically typed/interpreter camps. Same goes for languages. Functional programmers can only think of how stupid C++ is etc...
At the heart of the problem is that every programmer is secretly and silently searching for "the solution". Its hardwired in our brains like some kind of brain damaged salmon. We can not escape getting lost up the metaphorical drain pipe of language zealotry. The fact that something so important could mired in duplicity is like some inefficiency: to be compressed, optimized and ultimately erased.
This doesn't mean java is a steaming pile of poorly design dog poo as a programming language its more profound than that. We maybe mired one collective dog poo of non-orthogonality. However it does not help things when people are seemingly willfully ignorant.
Some of it is good old fashion good nature idiocy that we maintain at some level pretty much as soon as we are capable of having an opinion. Part of the problem is that computer science gets distilled as technology and through this process of decanting becomes a form of canon. Relations go in a relational database. Lisp is for crazy guys who write AI. C is a good idea--along with the Von Neumann architecture. The practical reasons for these decisions forever lost to most people as forests whose trees will never emerge again.
We use these familiar tools as crutches to form our ideas on how to solve problems never stopping to wonder in greater detail or perhaps fearful of dizzying height technology has built upon itself.
2 comments:
> Functional programmers can only think of how stupid C++ is etc...
I'm going down that route, but I don't understand lambda quite well enough to -really- think everything else is stupid. I'll probably end up halfway between-camps, thinking EVERYTHING is stupid. (This may be correct!)
+5 Insightful. Not entirely coherent, but insightful.
Post a Comment