Perl, Smalltalk, Eiffel, Ada, and Lisp ➤ Functional, object-oriented, and imperative ➤ Dynamic type system and automatic memory management ➤ Designed for programmer productivity and fun ➤ “…to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language.” ➤ BSD / MIT license
Dynamic typing and duck typing ➤ Succinct and flexible syntax that minimises syntactic noise ➤ Dynamic reflection and alteration of objects to facilitate metaprogramming ➤ Lexical closures, iterators and generators, with a unique block syntax ➤ Strict boolean coercion rules (everything is true except false and nil) ➤ Exception handling ➤ Custom dispatch behaviour (through method_missing and const_missing) ➤ Native plug-in API in C ➤ Interactive Ruby Shell (a REPL) ➤ Centralised package management through RubyGems ➤ Implemented on all major platforms ➤ Large standard library, many gems ➤ Multiple implementations: CRuby (MRI), JRUBY, Rubinius, MRuby