This is's Typepad Profile.
Join Typepad and start following's activity
Join Now!
Already a member? Sign In
Recent Activity
Cleanly and efficiently transferring knowledge in an unambiguous manner is indeed the main purpose of computing science. An excellent language for doing just that would be first order logic (extended with inductive definitions). The addition of ID makes it a very rich and expressive language, but many computer scientists lack the love of rigor neccessary to fully immerse all their writings in it. Personally I blame hacking culture. There is indeed hardly any difference between C++, Java or Python when it comes to readable code, but that doesn't mean that the chosen language doesn't matter. It's like tasting a dozen sorts of apples and concluding fruit isn't your thing. In my opinion a program is finished only when you have proven it does what you claim it does. No one should trust you on your word, and no one intelligent will. Altough sadly not possible in all cases, formal verification is still an (often disregarded) option when proving your programs. I don't have to tell you that debugging using input and output, even when carefully handling edge cases etc. can still lead to horribly unstable code. Writing crisp, clean code in a language that encourages formal verification (take Haskell for example) could truly empower all programmers. Letting your programs have a modular architecture is only worthwile when you can assure that the modules you will insert and swap are correct. Whenever possible programmers should enforce themselves to prove the correctness of what they write. It teaches programmers to arrange their thoughts in a structured, methodical manner, it forces one to be efficient, clear and conscise. Anything else is laziness. People who complain about the rigidness of it all are lost. A programmer isn't a creature who has memorized loads of commands and can write some scripts under influence of caffein and severe sleep deprivation. It's a person who sees the importance of language and truth, who's aware of the tools at his disposal and uses them to the full of its extent. Ofcourse the language in question is, altough vital, not the main issue. The problem lies with the attitude of the programmer and (the lack of) his pursuit of excellence. Despite your claims I wouldn't value natural language all that high. It certainly is valuable in its own way (obviously I'm talking about the field of CS here, no one doubts the importance of natural language in every-day conversation) but mainly in order for one to notice the intricate intricacy, the paradox and the things unsaid, yet assumed nonetheless. It makes one value formal language even more and allows one to accept that computing science is distinct from everyday life and thus shouldn't be treated like it.
Toggle Commented Feb 6, 2011 on How to Write Without Writing at Coding Horror
It's just not a solution. Sure managers and the like can try whatever they want to keep costs low, but the thing is that writing 'optimal' code is not more time consuming than writing non-optimal code. Sure, making optimalisations requires times, but optimalisations are only neccessary if you're building on a base that consists of bad code. The beauty of computing science is that 'the best' is usually also the most concise and the most maintainable. A software engineer can't rely on hardware to solve his problems. They're separate fields involving seperate people. You can't replace the incompetence of one person with the competence of another if that person is active in a different field. It's like telling someone to 'build' a fireproof vault and then that person decides to give the vault its fireproof quality by keeping firemen present at all time.
"Algorithms are for people who don't know how to buy RAM." That's probably the most horrible computer science related statement I've ever read. is now following The Typepad Team
Jan 21, 2011