More raw notes from EuroPython 2009 – this time from the entertaining and informative Python Sucks[1] session:
- programming languages do matter; choice can hugely affect the end result
- whitespace enforcement the “best worst feature” (other languages’ worst features are much more severe)
- Unicode handling is a pain
- lambdas
- should just be called functions (increases acceptance)
- cannot contain statements
- binding issues in loops
- threading is haphazard (GIL is evil) — however: CPython implementation issue, addressed in v2.6 – “it’s different, not necessarily insufficient (e.g. using underlying OS)”
- confusing packaging situation (setuptools, Easy Install, distutils, eggs, buildout, PyPI, virtualenv) – “solved, but people disagree” – “Easy Install sucks, too magic” – “not a Python-specific, but OS-level task” – problem is hard to solve, as there’s a variety of different usage scenarios
- infinity, NaN support (IEEE 754)
- floating point printing (0.1 becomes 0.10000000000000001) — fixed in v3.1
- division — fixed in v3.0
- decorators (“
@is scary, unfamiliar syntax”) - argument list splicing (e.g.
zip(*l)) – “unfamiliar syntax” - some modules only exist on certain platforms
- positive aspects
- everything is an object
- object instantiation (no
newkeyword – i.e. just like calling a function) - generator expressions (from Haskell)
- chained comparisons (
0 < = x < n) - though largely unknown, and allows0 < x > aor0 < x in L - Iverson’s convention (
x < yevaluates to 0/False or 1/True) - "open to abuse" - access control (public, private etc.) – not enforced (“advisory [bicycle] locks”) – likely more a social than a technical problem
- fractions (from v2.6)
- power (
x**2) - explicit > implicit (unlike
thisin JavaScript, for example)
- “Python sucks because sometimes it has to run on Windows”
Obviously some points were quite controversial (whitespace FTW!) – which is what made the session so interesting.
- retitled What Sucks About Python in the official program [↩]