|Problems? Is your data what you think it is?|
Principle of Inclusionby apotheon (Deacon)
|on May 18, 2006 at 17:18 UTC||Need Help??|
This may or may not be off-topic. It does involve Perl, at least peripherally, though.
Not long ago, I found myself telling someone "People who live in houses made of Windows shouldn't throw stones." The follow-on to that, of course, was my statement that "I'm glad Linux was built from reinforced concrete."
In relating this to another audience, being inordinately impressed with my own cleverness, I got this response from Sterling "Chip" Camden: "So you only have to avoid throwing jackhammers."
Being the contemplative sort that I am, I found myself considering that statement as it relates to concrete (pun intended) reality. I noted that Linux seems to come with the software equivalent of tools like jackhammers (and backhoes and water saws and every other frighteningly powerful industrial tool out there), while Windows mostly seems to come with pebbles. As I considered it in more depth, I realized that this correlation of included tools' destructive ability to the power and flexibility of the system seems to bear out across other OSes as well, and even into other realms.
Two other realms in particular to which I've applied the concept conceptually are the sociopolitical and programming languages. Most of you will have heard Perl called the "Swiss Army Chainsaw" of programming languages, of course: if you're not careful, you could easily saw off your own leg, to say nothing of the fact that it's ugly and noisy and belches noxious fumes while you're using it, but that all provides a great deal of versatility and power that is rare in other languages. What it really boils down to, as far as I can tell, is this: By providing the tools, you empower those who know how to use them to do great things. Those who are both incompetent to use such tools effectively and too irresponsible to avoid dangerous tools when they should do so become victims of their own willful ignorance. It requires a little bit of willingness to take responsibility for one's own actions to avoid being a menace, but when others who have that sense of responsibility have the same tools they provide sort of an insulating layer against the behavior of the irresponsible few, and the system as a whole is strengthened.
There was a lot more thought going into this than the above, but that's kind of a summary of some of the important stuff. Ultimately, I distilled the whole thought process into what I call
Perrin's Principle of Inclusion: The strength of any system is directly proportional to the power of the tools it provides for the general public.
I guess it's sort of an answer to (for instance) the Perl-dismissers amongst the Java crowd who complain about how "dangerous" Perl can be. The answer is that the language is merely powerful and flexible; it's the programmer who can be dangerous. Allowing the programmer that power and flexibility is a net win, however, because of what I (hubristically) called Perrin's Principle of Inclusion.