Learning a new language

My grievances with Python. 


Every language has its drawbacks. Object Oriented Javascript is a headache but I’ll leave that rant for another post. After working with Python for 4 months, I found myself missing some features from other languages.

Here are some issues I’ve faced when programming in Python:

  1. Concurrency: Threading is super slow thanks to the Global Interpreter Lock. Also, the threading module is quite beta.
  2. Object Orientation: I hate OOP in Python. Everyone who’s programmed in Python has probably come across the dreaded Diamond Problem. I’d love Python Interfaces but thats a bit of a longshot. Modules like PyProtocols could mitigate this issue for now but I’d love to see it as a part of the standard library.
  3. Type safety: When code hasn’t been properly documented, it’s hard to find the type of a variable. If there are many layers of indirection, the only ways you can really find the name of a variable is by putting a breakpoint in the script or by printing the type of the object.
  4. Std Library: The standard library is missing a ton of very useful modules. Modules like BeautifulSoup, Numeric and mechanize are super useful and really should be considered standard on any Python installation.
  5. Monkey Patching: As useful as this may be, it shouldn’t be allowed especially when your doing it on production machines. Need I say anymore?

Anyway, I’ve decided to start programming in a new language. After looking at the hitlist, I’ve decided to take a deep dive into Scala. Scala is the perfect mix of OOP, Functional Programming and concurrency. It might be useful in 4 months time :D

Email me when Arvin Ami publishes or recommends stories