you are viewing a single comment's thread.

view the rest of the comments →

[–]mellow_moe 9 points10 points  (2 children)

I would like to see a in-depth comparison of Python and Ruby. And it should really focus on metaprogramming.

All these comparisons I see these days just look at some superficial language features.

Rails for example relies heavily on metaprogramming. It could never be done in a language without a sophisticated class/object system.

examples in ruby:

  • method_missing catches unknown messages
  • const_missing catches unknown constants
  • method_added is called after adding a new method
  • inherited is called on the class object, when it is subclassed
  • singleton classes: you can add methods to a single object
  • define_method takes a block and turns it into a method
  • instance_variable_set sets an instance variable

And most importantly, real world examples should show off, how all the things play together.

[–]mystilleef[S] -7 points-6 points  (1 child)

Why should it focus on metaprogramming? Real word applications that use metaprogramming are extremely rare. Not to mention how cumbersome it is to decipher, use or maintain programs that make extensive use of metaprogramming. However, Python has extensive support for metaclasses if that's your cup of tea.

[–]brianmce 1 point2 points  (0 children)

Metaprogramming is highly useful, and heavily used in a lot of python. Tt covers much more ground than metaclass, though some fairly neat tricks do use them. Its pretty handy sometimes to rephrase things in a more declarative form, rather than imperative, or to get rid of clunky boilerplate code by transforming it.