As we all know, reality is a mess.
This is a picture of many things. It’s a picture of air molecules bouncing around. It’s a picture of the economy. It’s a picture of all the relationships of the people in this room. It’s a picture of what the typical human language looks like. It’s a picture of your company’s information systems. It’s a picture of the World Wide Web. It’s a picture of chaos, and of complexity.
It’s certainly a picture of how Perl is organized, since Perl is modeled on human languages. And the reason human languages are complex is because they have to deal with reality.
Now, you may be wondering what all this has to do with Perl. The fact is, your brain is built to do Perl programming. You have a deep desire to turn the complex into the simple, and Perl is just another tool to help you do that–just as I am using English right now to try to simplify reality. I can use English for that because English is a mess.
This is important, and a little hard to understand. English is useful because it’s a mess. Since English is a mess, it maps well onto the problem space, which is also a mess, which we call reality. Similarly, Perl was designed to be a mess (though in the nicest of possible ways).
This is counterintuitive, so let me explain. If you’ve been educated as any kind of an engineer, it has been pounded into your skull that great engineering is simple engineering. We are taught to admire suspension bridges more than railroad trestles. We are taught to value simplicity and beauty. That’s nice. I like circles too.
However, complexity is not always the enemy. What’s important is not simplicity or complexity, but how you bridge the two.
— Open Sources: Voices from the Open Source Revolution
2013.11.30 Saturday ACHK