5 ms·
Just by looking at a syntax table, the higher-level differences are not going to be enumerated. Just off the top of my head: - Ruby was always designed as an
by IsaacL 14y ago
Just by looking at a syntax table, the higher-level differences are not going to be enumerated.
Just off the top of my head:
- Ruby was always designed as an OO language, whereas Python OO was bolted on later. Ruby's object system is almost a straight transplant from Smalltalk and is very powerful.
- Python lambdas can only be one liners. Ruby lambdas can be arbitrarily long. Guido doesn't really like FP - there's no tail recursion, either.
- Ruby's metaprogramming capabilities are a bit more powerful (haven't really looked at Python in this regard, so don't quote me).
- In fact, there are some pretty big syntax differences. Python requires brackets even for the print statement now, whereas Ruby lets you miss them out if it's unambiguous. Ruby has blocks. Python doesn't have "end\n end" sprinkled everywhere.
The main philosophical differences are that Ruby is more powerful and implicit, wheras Python is stricter and explicit. When I say "powerful", by the way, I don't necessarily mean "good", just that it exposes more functionality to the user. Although I like Ruby a lot, I accept that on large projects Ruby's power (like that of Lisp or C) can be dangerous. Python has a lot going for it.
You're right, they're still very similar in many ways. Maybe they're like Democrats or Republicans; up close, they're screamingly different, but from a distance they're almost alike.
- lucian1900 14y agoWhile I find Ruby to be nice overall, you're wrong on several points: - Whether or not Python was historically OO or not, everything in Python is now an object. Its love for protocols drives design like `str(foo)` (which calls `foo.__str__()`), not any particular deficiency in its object system - Python's lambdas are indeed limited, but one can easily use `def` and just name the function. Functions are first class, after all - Metaprogramming facilities are very similar in power. Neither language has macros. - Python tends insist on not duplicating things (i.e. both indentation and braces/end) and on not being ambiguous. There is another reason Python can't omit braces for function calls: without braces, they are references to the function. As a consequence, Python doesn't need things like .call() Overall, I haven't seen one language or the other to be more powerful.
- wilmoore 14y agoPersonally, I find that Python and Ruby are comparable as it relates to utility. I'd think it is fair to say that argument is a wash. It is Ruby's expressiveness that makes it my choice before Python: --- Ruby --- letters = ['a', 'b', 'c'] letters.map &:capitalize --- Python --- letters = ['a', 'b', 'c'] capitalize = lambda x: x.capitalize() map(capitalize, letters) --- PHP --- <?php $letters = ['a', 'b', 'c']; array_map('strtoupper', $letters); Of course, this is one example where PHP (5.4+) at least somewhat resembles Python. I think that is why some of the more experienced PHP developers tend to choose to go with Python as their PHP recovery language. Personally, I prefer "letters.map" (Ruby) over "map(...)" and "array_map(...)"; however, that is a personal style preference and has nothing to do with technical merit. And I still enjoy writing Python here and there. PHP is also still a necessity much of the time. That being said, there are a few edge cases that I've witnessed where Python actually reads better than Ruby; though, these cases are few.