My professor for a Programming Languages course defined the following six criteria for judging a programming language (these are from my notes so my apologies if they’re not entirely accurate):
- Simplicity: how little the language complicates the problem solving process, how minimal its feature set, and the clarity and consistency of its rules.
- Orthogonality: refers to the way different constructs can be combined and how these combinations are simple to understand and meaningful in the language. Only works when the language is simple.
- Expressivity: how flexible the language is in providing concise, different ways of defining algorithms and computations. Often in tension with simplicity and/or orthogonality.
- Level of abstraction: the degree to which the language allows the definition of powerful data abstractions that approximate the constructs in the problem domain.
- Portability: the degree to which a program can be transported from system to system.
- Cost: cost of development, compilation, maintenance, execution, etc.
In class, we were asked to give Python a score out of five for each of the six criterion. Because I actually have no experience with the language, I had to trust the scores of my professor, who is open about his distaste for Python, and classmates, whose experience with the language is minimal. So I guess I’m just looking for a diverse set of opinions on how Python adds up and why. I’ve been doing my own research but not knowing the language makes it really difficult to formulate my own opinion.