> In Crystal, as in Ruby, everything is an object. [...] When you write Crystal code, most of the time, you write classes.<p>Why, God, why?! Really, OOP is a great way of structuring lots of types of code (not all!). But I don't think it really helps anyone to treat everything as an object. Some <i>things</i> are not <i>objects</i> they just are whatever they are. A <i>function</i> is just that, a <i>function</i>. If I have to call a `.call` method on a "function" as in ruby, then that's simply not a function anymore. And... <i>it's not an object either semantically,</i> because objects are about things that can receive and send multiple messages and sometimes encapsulate state... and that's not how <i>anyone</i> thinks about <i>functions!</i><p>By making <i>everything</i> be an object, you actually f up the concept of "object" itself...<p>I like Ruby's elegance, but every time I see the "OOP at the core" part, I suddenly get more love for Python and Javascript for at least getting this right.