4 ms·
There's more to a language than whether it's object-oriented or not. It sounds like you are saying, well it's just OOP so it's not any different than C++. It'
by DocSavage 19y ago
There's more to a language than whether it's object-oriented or not. It sounds like you are saying, well it's just OOP so it's not any different than C++. It's almost like saying "CLOS is still OOP, right?"
Yes, Ruby is dynamic. It's so dynamic that you have open classes so you can dynamically insert methods. It has deep introspection. It has closures. It has #method_missing which lets you do some interesting things. Basically, Ruby is just powerful enough, just over that tipping point, so programmers wind up doing metaprogramming (programs that write programs) more than they would in other languages. I'm sure Paul Graham has an article or two on the power of languages (smiley face here), and in at least one of them, he suggests that some people might mistake Ruby for a dialect of LISP.
See why_the_lucky_stiff's tutorial on D&D metaprogramming (Dwemthy's Array section at http://qa.poignantguide.net/chapter-6.html http://qa.poignantguide.net/chapter-6.html) and Rich Kilmer's use of Ruby for an aircraft management DSL (you'll have to google for that example). It's not that metaprogramming is impossible in C/C++ because you could always build a whole mechanism from the ground-up. (In other words, at some point you can claim that all these languages are Turing equivalent if I remember correctly.) The point is that some languages make interesting ways of programming easier, and when you hang out among the practioners of that language, you begin to see different ways of coding. This is why I've got Erlang on my TODO list, if I can squeeze it in my schedule.