Still, I preferred and prefer Ruby. Python has fantastic libraries, but it is a mediocre language. Ruby feels like a simpler version of Perl + Smalltalk, and it is a joy to use. Python has intentionally crippled anonymous functions plus syntactic whitespace, which often leads to long and ugly code.
I think it is a shame Guido hated functional programming and he did not embrace an Algol-like syntax with begin/do end blocks. Those two things could have vastly improved Python. Ruby's block, procedure and lambda design is a stroke of genius that yields beautiful code and makes DSLs trivial.
Hardly. Not only was it nothing great, it had many variations, making it harder to remember.
For me, the Ruby community's comfort with monkey patching was a big turn off
If it helps, the Ruby community really soured on monkeypatching in general quite a while back. You don't see it much these days and every decent book or guide warns against it.It was definitely a crazier place 10+ years ago in the early Rails days.
Yeah! It sure was.
I was around, was an early Ruby and Rails adopter, and worked on a few commercial Rails projects at that time.
That's how I know about the monkey patching issues. Faced them in real life.
I played around with Rails and Ruby when Rails first blew up. But I didn't start doing it fulltime professionally until 2014. By the time it seemed to me that the community was maturing. I think it's in a good place now.
Also overriding mro() is a fun way to monkey with the inner workings.