>>3
This is why ``Micro languages'' are bad.
Suppose you're looking to do something that's difficult with the standard Unix tools. You're not an expert in the subject, but you know enough about it to write a program. You finish it over a few days. It's full of bugs and security holes because you're the only one who uses it and you know what makes it crash. You use fixed-length buffers and bsearch an array of key-value pairs (instead of a search tree or hash table) because they're convenient to work with in C. You're making an interpreter, not an associative array library. The syntax is ugly but that doesn't matter because you designed it to be easy to parse, not to be easy to write. You never intended on it leaving your desk, so who cares? Then you see other people who want to do the same thing you did, so you give them a copy, then they give it to others, and eventually it gets included in a Unix distribution. Depending on your personality, you're either ashamed for releasing it on the world or you suddenly think you're some God-like
EXPERT PROGRAMMER because your buggy code is popular. Now collect a couple hundred of these programs, even though many of them have overlapping functionality, and you have Unix.