Saturday, February 11, 2012


I've been watching some documentary that essentially complains that Western society is falling apart. On the topic of education, they had some professors state that knowledge should be had just for the sake of knowledge -- I totally agree. At a certain point they had a younger one talk about how mathematics is being developed purely for the sake of knowledge and how many mathematical frameworks find practical applications decades after being developed. This is also true and I also agree with doing pure science just for the sake of it, and not necessarily aiming to find an immediate application - the applications will eventually appear.
What actually pissed me off is that instead of giving a sane (and famous) example such as non-Euclidean geometry finding application in General Relativity, he stated that propositional calculus is needed for computer programming.
Propositional calculus is not needed for computer-anything. Just because computers work with low and high voltage states which can be thought of as ones and zeros or true and false, doesn't mean anything, and it especially doesn't mean that I needed to know propositional calculus when I was 12 and programming a fucking* computer.
* The same show argues elsewhere that because the presenter is censored while saying something like fuck on TV, there's no free speech. Here, I said fuck on a publicly accessible platform, which as opposed to a TV show is permanently visible, and nothing happened. There is free speech.
Back to computers. Having a scientific background myself, I cannot overstate how important mathematics is - in describing theories and models, in proving correctness - yes, even the correctness of computer programs, and generally in forming and expressing scientific ideas. However, computer programming is usually viewed as a craft, not a science, and I can guarantee that at least 90% of programmers couldn't care less about propositional calculus or mathematics in general - they don't need (and are not required) to prove that their programs are correct, they just need them to run reasonably well. Also having a programming background, it kind of pisses me off when people try to patronize me - like saying that nothing is possible without expert command of formal mathematics. I can build a simple processor by scribbling some schematics on a piece of paper and soldering down some TTL chips or even transistors (if FPGAs are considered too high-tech), I can attach a memory to that (I could solder that from transistors too but it's simply too much repetitive work) and I can program it in machine language, and with some effort I could also do assembly language or C, without using a single element of propositional calculus. I am willing to bet on this. When will people understand that all computers do is simple numeric operations and copying said numbers between memory locations defined by other numbers? Hit the correct location with the correct number and the hardware makes sure you get a dark-red pixel. Do it a billion times per second and do it right and you get Angry Birds or whatever. I know this first-hand, e.g. as a student I had an assignment to write something in assembly and I wrote a clone of a certain game involving falling pieces made from four blocks. It didn't take more than 1500 processor instructions, and no propositional logic. Fuck theoretical snobs.

1 comment:

Lucian said...

I guess it's a kind of a buzzword (even in the non-academic so-called „software engineer” circles) to say that some particular software is „formally proven to be correct” yadda.

Truth is, that software is only proven to be correct according to some specifications, that can be themselves badly conceived. As a result, it could run worse than something made completely out of hacks, which reminds me of the debate between Tanenbaum and Torvalds.