Hacker News new | ask | show | jobs
by angelbob 5335 days ago
Ruby is also a bit of a contrived example. Ruby looks a lot like you could come to it from Java and know most of it, but metaprogramming actually takes a long time and a lot of work to really figure out.

Similarly, Ruby has many different little variants -- Rails, Rake, various sorts of DSLs -- and that adds significantly to the time to learn it.

Really learning Ruby is learning several similar languages, which makes two years a much harder number to achieve.

C++ could easily have been like that if it had different constellations of features that were routinely used in different ways by the same programmers. Imagine if there were a whole "C++ tools" subculture that used templates extensively but differently, along with one or two other nontrivial features (say, multiple inheritance and exceptions) used in specific ways with specific non-compiler-mandated rules.

You'd have to learn, in effect, about another programming language's worth of material to program fluently within that subculture.

Ruby has several of those.