February 02, 2007

Pure means impractical?

The other day, a friend of mine complained about Smalltalk being responsible for his increased rent. I responded that to me Smalltalk always was a little bit like Latin and that although learning Latin helps in understanding the structure of other western languages, nobody expects you to actually speak Latin. (I know it doesn't make much sense here, so please go read his post.) This lead me to further thinking about things that are sound in theory but not very useful in practice. There seems to be some connection between "pure" and "impractical", don't you think?

In one of my previous posts I argued that software systems are essentially incomplete. I thought it was an interesting argument against obsessing about completeness. But of course in reality software systems are far from formal (pure). Unlike calculus, software systems are not necessarily constrained by any formal set of rules of inference (heuristic and evolutionary algorithms come to mind). Same is true about programming languages. In fact, maybe this "impurity" is precisely why programming languages like C++ are so useful?

January 04, 2007

Completeness vs. consistency

In the early days of my programming career I was obsessed with completeness of the API's I was constructing. Of course, over the years I learned better, than to waste my time. But I still couldn't construct a clear cut argument against complete API's. Aside from the time constraint issues, "complete" certainly sounds better, than "incomplete". That is before I read the Gödel's Proof. The fog has cleared (but my math is still rusty at best, so I could be blowing smoke, for all I know). Clearly (please do correct me if I am wrong), any given software system is a formal axiomatic system and as such, it is essentially incomplete. So there we go, from now on I don't feel guilty concentrating my efforts on consistency instead of completeness.