Showing posts from September, 2006

Function calls considered harmful

Everyone now knows how the many-core processor era is upon us, and how this challenges existing methods of software development because current mainstream development methodologies are inappropriate for a new environment in which most software will need to be parallel if it is to take advantage of many cores. The problem is not that existing languages make parallel programming impossible. It is that they don't make it simple. This is similar to the problem of manual memory management in languages like C and C++. It takes years of discipline before you learn to write programs that will not leak memory or misuse it in some way - and even when you do, memory management still takes a considerable portion of the time you spend programming. Contrast that with platforms like Java and .NET which cut the red tape and allow you to simply specify what needs to be done, and the platform takes care of the memory management. It is also similar to the problem of security in language like

Currency: interest, sources and sinks

Vorlath recently wrote : I think you need to re-evaluate your reality. The money system is a failure. It's a joke. Lump all the loan agencies together. Everyone else has to borrow from these organisation (yes, if these people so choose). Where exactly do you propose the borrowers get MORE money than they borrowed to pay the interest if there's none available? You can't pay back what doesn't exist. The system is made so that at least some MUST fail. Even if you do everything right, you may still fail because there's a process of elimination at work. I know that's a simplistic view, but it doesn't make it any less true. So if you have more money than others, you too can loan it out and do nothing except for one fact that you have more money. That's BS and is why no money system will ever work. No system that requires failure will ever get my support. I find it funny how much suffering and failures there are around the world because of money, yet there are

David Cameron's "Universal Mush"

The BBC has quoted David Cameron as saying: "I don't want a world that has become a kind of bland universal mush where our distinctive cultures and histories and identities have are gone. I want India to be India and Britain to be Britain." Who's David Cameron to want things about people's cultures and identities? I don't agree with bland, but the only way the world is going to be a more harmonious place is if it does turn into a universal mush. All of the individual characteristics that Mr. Cameron may find peculiar and interesting about India vs. England are, to the extent they cannot sustain themselves, counter-productive and must go. The only way that the lifetime of counter-productive features of different nationalities can be extended is by political fiat - forcing people not to do things, curtailing their freedom so as to extend the lifetime of what is pointlessly perceived as a national 'self'. That's what leaders like Mr. Cameron propos


[English translation of my original post published in Slovene .] An essential problem of modern parliamentary democracies is that, with time, the scope of bureaucracy and the complexity of laws tend only to increase, which encroaches on free initiative and suffocates the economy. What is the essential reason for this problem, and how could bureaucracy be trimmed and the complexity of laws be limited to reasonable boundaries? A fundamental reason for the overwhelming complexity of laws is simply that they are too easy to pass. To pass a new law, support of only half the legislature is usually sufficient; to change the constitution , the crucial document on which the stability of a country is based, only two thirds are usually enough. Consider this. The function of laws is that they prohibit or proscribe action by the citizens. Therefore, every law fundamentally restricts the freedoms of the citizens. A law that does not do this is an empty law. And such - frequently arbitrary, stu

Principles of Programming: The Wisdom of Being Neutral

An inexperienced programmer frequently tries to make every single thing as complex as his understanding allows him to make it. But he must not. If one makes things as complex as that, they will be unmaintainable, unenhanceable and too complex to use. How complex is a screw? What does a single screw do? Does it hold books? No, but it can be used in a bookshelf that does. How complex is a rivet? What does a single rivet do? Does it transport oil across oceans? No, but it can be used in an oil tanker that does. How complex is a single lego block? Whatever does a single lego block do? A single screw or a rivet or a lego do nothing special on their own. That's why they are so versatile: because they're neutral . Everything one writes in code, every single function or component or class, needs to be neutral like that, too. Reusability of your code does not come from what it does. It comes from what it doesn't do. It comes from what it consciously avoids doing so as not