I’m writing this in an attempt to identify why I’ve recently switched focus to Ruby.
I suppose there are several motivations.
The first is the feeling that if I’m going to only have a limited time to be able to work on personal programming, then I want to concentrate on either on languages and environments that give the most effect for the effort expended or on languages that are useful in terms of some concept that I want to understand.
In that line, the languages that seem to me to give the most bang for the buck in terms of time invested vs results are:
- shell / Perl
Languages that seem good for understanding concepts include:
I’ve previously focused more on Python for personal programming. Here is my attempt to understand why I feel like moving away from it. These are all personal reasons, which doesn’t make them wrong, but definitely doesn’t make them right.
Python 2 vs 3 split:
- I’m tired of wondering when I will be able to actually concentrate on one version of the language.
- Python 3 seems to have deprecated or removed many of the things that I actually liked about Python 2 such (print as a function, old style format strings, etc). The new focus on everything being keyword arguments seems overly verbose to me.
- 3rd party libraries in Python are still split along the Python 2 / 3 lines.
I’ve recognized that I really only understand a subset of Python.
There are still things like decorators, and list comprehensions, and Python’s version of Object-Orientation, that have been added to Python since I first looked at it, that while I can sort of look at them and tell what’s going on, I never have the urge on my own to really use them. Therefore there are vast swaths of Python’s complexity that are simply useless to me.
Python’s reluctance about Functional Programming:
I actually like functional programming concepts like map, filter, etc. To me, the pythonic insistence on using list comprehensions in place of those functions does not really fit my brain.
Even though I would not argue that Ruby is a more functional oriented language, the practical effect of it’s emphasis on method chaining makes functional style effects (think of shell pipelines but in code) easier to create and use.
Mostly it comes down to a frustration with the Python ecosystem and culture of software development. I’m tired of there being so many things that sort of work, but not completely.