Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I've done Ruby for about 7 years and can tell you that after a while, things fall in place, including (most of) the syntax. For me, the most annoying thing is trying to create and pass around functions -- the syntax for that just isn't as easy as in CL or even Python. Having first class functions and a good function-passing syntax would be a nice addition to Ruby 2.0.

But yeah, marketability notwithstanding, I slightly favor Lisp.



"I've done Ruby for about 7 years and can tell you that after a while, things fall in place, including (most of) the syntax."

I would expect any adroit HN reader to be comfortable in a programming language after 7 years :) What is odd is that you say "most of the syntax". Would you please elaborate (aside from what you said about function creation/passing)? I like ruby, but I'm not to the point where the syntax falls into place as easily I wish it would.


As another data point, I had been doing Ruby for five years when I switched to Clojure. After a single year in Clojure, I knew the language much better than I had ever known Ruby and was able to read the source for the compiler itself and spot issues in it. Common Lisp is a lot more complicated than Clojure, but certainly simpler than Ruby.

Personally I had a hard time remembering the difference between Procs, blocks, and lambdas in Ruby, though I believe this is partly due to the fact that the differences shifted in minor point releases.


The things that I still don't like about Ruby's syntax & semantics (even though it's my second favorite language):

  - No keyword arguments
  - No good syntax for creating pure functions
  - Metaprogramming seems tacked on
  - HERE doc manipulation is atrocious
  - There is no 'fundamental unit' of a Hash
    (other than a destructured key-value pair),
    so mapping a function onto hash keys or values
    is always a call to #reduce or a Hash[array]
  - Creating a Hash with #reduce is not pretty
  - Destructuring isn't so sophisticated
  - Local variables become defined even if they aren't in your
    current code path
  - I already mentioned method passing
These are all things, by the way, that Clojure does much, much better.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: