No More Jargon

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


    Wednesday, November 15, 2006

    Adversarial System Design

    So, very, very often, I see people characterizing the need for member and function privacy as a way of keeping people out and preventing them from mucking with your stuff.

    How messed up is that? You're a fool if you let untrusted users run code in your system without putting massive, massive restrictions on them. See _why's Sandbox efforts.

    When you're designing a system or library, the purpose of restricting access to elements of an object is not like putting up a "KEEP OUT" sign, but more along the lines of, "Here are the controls to drive the car. Really, please, don't unscrew the spark plugs." But if a competent mechanic needs to do something to the car, he doesn't feel compelled to not go touchy touchy. Someone else that's happy to just drive the car so he can carry around his precision telescopes won't touch the spark plugs.

    Why design with an adversarial mindset? You're not helping the mechanics, and the astronomers probably weren't going to touch the spark plugs in the first place.

    Thursday, November 09, 2006

    An Idea About How to Keep Your Blog Updated

    Don't publish an entry until you have an idea for the next entry.

    The fact that you have an entry just sitting there, BEGGING to be tossed on the intarnet will necessarily force you to come up with something. Doesn't have to be great, right? Just a little doodad you can expound on for a few paragraphs.

    Got the kernel for the next one sitting as a Draft, awwww yeah.

    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.

    About Me

    My photo
    Truly a Simple Minded Fool