Matz’s presentation at OSCon 2003 on The Power and Philosophy of Ruby lists three basic principles of programming language design.
- Choose good names
- Understanding humanity
- Embedding hidden messages
Some of his points that really hit home relate to succinctness, fewer bad surprises, reduction of stress, consistency, and offering more than one way to accomplish a task, but clearly indicating a preferred way.
His presentation links to Paul Graham’s excellent Succinctness is Power essay. Although it is critical of Python for lack of succinctness, I think Python provides a good trade-off between succinctness and readability. Perl may be very succinct, by I find it nearly impossible to read, whether line by line or as a whole program, even if it is shorter. Perhaps I would change my mind if I were willing to submit to a couple week brainwashing/training session, but I don’t think it’s worth it. Maybe I should check out Ruby. Or even better, Groovy.