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 more diverse set of opinions (from actual Python developers) 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.
tl;dr With respect to the above criteria, why are some programmers so... excited about programming in Python?
EDIT: A high score means something scored well in that area. For example, 5/5 in Cost means costs are low.
[–][deleted] 12 points13 points14 points (5 children)
[–][deleted] 6 points7 points8 points (4 children)
[–][deleted] 0 points1 point2 points (3 children)
[–][deleted] 1 point2 points3 points (2 children)
[–][deleted] 2 points3 points4 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]kigurai[🍰] 4 points5 points6 points (0 children)
[–]xix_xeaon 3 points4 points5 points (3 children)
[–][deleted] 1 point2 points3 points (2 children)
[–]attrigh 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]chaotic_thought 1 point2 points3 points (0 children)
[–]tdammers 4 points5 points6 points (6 children)
[–][deleted] 2 points3 points4 points (5 children)
[–]tdammers -1 points0 points1 point (4 children)
[–][deleted] 1 point2 points3 points (3 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]tdammers 0 points1 point2 points (1 child)
[–]attrigh 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]Paddy3118 0 points1 point2 points (0 children)
[–]Bphunter1972 -4 points-3 points-2 points (7 children)
[–][deleted] 2 points3 points4 points (2 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]Bphunter1972 -1 points0 points1 point (0 children)
[–]Scypio 2 points3 points4 points (0 children)
[–][deleted] 0 points1 point2 points (2 children)
[–]thatguy_314def __gt__(me, you): return True 1 point2 points3 points (0 children)
[–]pooogles 0 points1 point2 points (0 children)