S Haskell, Rust
A Python, C, Go, Julia
B Prolog, Assembly
C C#, Java, C++, Scala, ML
D Ruby, Groovy, R
F LISP, XML, Bash, VB S Haskell, Rust
A Python, C, Go, Julia
B Prolog, Assembly
C C#, Java, C++, Scala, ML
D Ruby, Groovy, R
F LISP, XML, Bash, VBI could write a huge post about the differences between the two languages and pros and cons, but you could easily find those lists by googling.
My biggest thing that I love about Ruby is how predictable and just... beautiful it is. I love how everything chains in a predictable manner. If you say `2.days.ago`, you literally get a DateTime object back. Oh, and guess what? You can just keep on chaining! Things make sense!
Python is so caught up on being explicit and having rules that it often misses the whole point of being pleasant.
I like Groovy for the same reasons you like Ruby (but am too entrenched in the JVM ecosystem to switch to anything else).
Where do you put JavaScript? For me it’s an F.
Python I think needs a distinction. It’s an A for small projects that can be owned by a single person. But a C for projects large enough to warrant multiple developers. Dynamic languages don’t scale without a huge amount of extra tooling.
The Python ecosystem gets a B. But the environment gets a D. https://xkcd.com/1987/
And environment... It is complicated. It is not that it is that bad, however it sure lacks some polish. The solution is not easy either since even if you solved the problem today (like using poetry), there is still the whole backwards compatibility problem.
There is various hacks to make things easier, however in the end the problem is still more complicated than it should.
I'm curious if that's actually true - my actual experience is that it actually suffers horribly in large projects because as the size and complexity goes up it's just harder and harder for its heuristics to not produce false positive typing errors. It worked great on a small library where it could see the whole source and everything was well annotated ... but that's sort of the context where it is least needed in the first place ...
And my particular experience with it is very positive, even if my project that is using it is still small (it is getting bigger though, and mypy is really helping me to refactor it when I needed).
Most of the "false positives" that mypy reports to me end up being code that is overly cleverly, and rewriting it to make mypy happy also improves the code quality.
[1]: https://developers.facebook.com/videos/f8-2018/type-checked-...
[2]: https://blogs.dropbox.com/tech/2019/09/our-journey-to-type-c...
Deploying a Python application can be a headache, but it's a good replacement for Bash and in DevOpsy scenarios where you're packaging Python along with an entire containerized OS and interacting with the web, Python works well. I find it pretty easy to prototype a webservice with Python, or to build tools for networking engineers. The fact that it's relatively easy to learn, yet readable, also makes it a good language to connect to people with. I can't always sell people on a strongly type functional programming paradigm, but it seems every reasonably young person knows Python these days.
But you're right, Python is a bit annoying at times, even though I like it's terseness and intuitiveness.