[ 100th journal entry! ]
A while ago I ran across a paper by co-authored Damian Conway, and since I can also brush up on my Klingon, Latin, or quantum mechanics, I tooks a look at it. It came up again in on the Perl Advocacy mailing list (advocacy@perl.org): "Seven Deadly Sins of Introductory Programming Language Design".
The authors do not talk about Perl, Klingon, Latin, or quantum mechanics. They list seven areas where pedagogical programming languages tend to screw up. I graded Perl (that is, quantified my personal opinion) on these areas.
- Less is more: A
- More is more: D
- Grammatical traps: D
- Hardware dependence: A+
- Backwards Compatibility: B
- Excessive Cleverness: A-
- Violation of Expectations: B
Overall Grade: B
_______________________________________________
The authors also list seven guidelines to design languages that are more teachable. I graded Perl on these too.
- Start where the novice is: A
- Differentiate sematics with syntax: B
- Make the syntax readable and consistent: B-
- Provide a small and orthogonal set of features: D
- Be especially careful with I/O: A
- Provide better error diagnosis: A
- Choose a suitable level of abstraction: A
Overall Grade: B