No More Jargon


The coalescence of thoughts with regards to technical subject matters in the areas of software design and computer languages.

Twitter:

    Tuesday, November 07, 2006

    The Bondage of the Dumb Language Part 34

    Holy crap, a new post. It may not interest you, but one of the things that has been crushing my soul for the last half year was the fact that I haven't updated here. In fact, I know you don't care, because you don't exist. Onwards...

    First, let's establish something: C++ sucks at everything. Anyone who's used C++ after having used something else will readily acknowledge this, with the possible exception of people who have a chance of getting the C++ standards committee to actually listen to them; they've got too much invested to admit it. It exists in some quasi temporal role as a systems language and an application language. As we all know, C++ inherits its systemness from C and its applicationess from a misunderstanding of Smalltalk.

    What does this mean? I'll tell you what it means, it means that C++ is stuck on the hardware model that it was developed on: High performance, single threaded servers. It's even worse though, because C++ lacks a certain... realness to its objects and there is a strong tradition in the C++ community to do things in a very API oriented way (see the Standard Template Library, which, having read Alexander Stepanov's notes, was originally intended to be a collection of templated structs with concept requirements), it's fundamentally hard to work efficiently on new hardware organizations. God forbid someone develops stackless hardware or the C++ programmers are severely doomed.

    More importantly, C++ has an impedance mismatch in that it allows both complete programmer control of the system state, which results in concern about byte structure of variables, stack state, and dereference operations for efficient computation as well as higher level object capacities which allow for ease in design, maintenance, and understandability. It's like trying to walk on two surfaces that have a significantly different height at once.

    Originally, I was going to suggest that perhaps some sort of complexity manager could be added to the runtime code generated by the compiler, that would allow for a programmer to stick more closely to the abstract model presented by most other object languages. But after reading about the truly horrific evolution of the Java MVC stack, I'm leaning against bandages from now on. C++ needs to be fixed. It's some sort of matter/anti-matter Frankenstein right now that's trying to annihilate itself. I'd feel bad for it if I didn't encounter such enormous pain whenever I tried programming in it.

    No comments:

    About Me

    My photo
    Truly a Simple Minded Fool