Ruby
Ruby is a dynamic, reflective, general purpose object-oriented programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.

Ruby is a language of careful balance. Its creator, Yukihiro "matz" Matsumoto, blended parts of his favorite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp) to form a new language that balanced functional programming with imperative programming. Ruby supports multiple programming paradigms. It also has a dynamic type system and automatic memory management.
He has often said that he is " trying to make Ruby natural, not simple ", in a way that mirrors life.
Building on this, he adds:
Ruby is simple in appearance, but is very complex inside, just like our human body.
Since its public release in 1995, Ruby has drawn devoted coders worldwide. In 2006, Ruby achieved mass acceptance. With active user groups formed in the world's major cities and Ruby-related conferences filled to capacity.
Initially, Matz looked at other languages to find an ideal syntax. Recalling his search, he said "I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python".
In Ruby, everything is an object. Every bit of information and code can be given their own properties and actions. Object-oriented programming calls properties by the name instance variables and actions are known as methods. Ruby's pure object-oriented approach is most commonly demonstrated by a bit of code which applies an action to a number.
Ruby is seen as a flexible language, since it allows its users to freely alter its parts. Essential parts of Ruby can be removed or redefined, at will. Existing parts can be added upon. Ruby tries not to restrict the coder.
Features of Ruby :
-
Ruby has simple syntax, partially inspired by Eiffel and Ada.
-
Ruby has exception handling features like Java or Python, to make it easy to handle errors.
-
Ruby's operators are syntax sugar for the methods. You can redefine them easily.
-
Ruby is a complete, full, pure object oriented language: OOL. This means all data in Ruby is an object, in the sense of Smalltalk: no exceptions. Example: In Ruby, the number 1 is an instance of class Fixnum.
-
Ruby's OO is carefully designed to be both complete and open for improvements. Example: Ruby has the ability to add methods to a class or even to an instance during runtime. So, if needed, an instance of one class 'can' behave differently from other instances of the same class.
-
Ruby features single inheritance only, 'on purpose'. But Ruby knows the concept of modules (called Categories in Objective-C). Modules are collections of methods. Every class can import a module and so gets all its methods for free. Some of us think that this is a much clearer way than multiple inheritance, which is complex and not used very often compared with single inheritance (don't count C++ here, as it has often no other choice due to strong type checking!).
-
Ruby features true closures. Not just unnamed function, but with present variable bindings.
-
Ruby features blocks in its syntax (code surrounded by '{' ... '}' or 'do' ... 'end'). These blocks can be passed to methods or converted into closures.
-
Ruby features a true mark-and-sweep garbage collector. It works with all Ruby objects. You don't have to care about maintaining reference counts in extension libraries. Writing C extensions in Ruby is easier than in Perl or Python, due partly to the garbage collector, and partly to the fine extension API. SWIG interface is also available.
-
Integers in Ruby can (and should) be used without counting their internal representation. There 'are' small integers (instances of class Fixnum) and large integers (Bignum), but you need not worry over which one is used currently. If a value is small enough, an integer is a Fixnum, otherwise it is a Bignum. Conversion occurs automatically.
-
Ruby needs no variable declarations. It uses simple naming conventions to denote the scope of variables. Examples: simple 'var' = local variable, '@var' = instance variable, '$var' = global variable. So it is also not necessary to use a tiresome 'self.' prepended to every instance member.
-
Ruby can load extension libraries dynamically if an OS allows.
-
Ruby features OS independent threading. Thus, for all platforms on which Ruby runs, you also have multithreading, regardless of if the OS supports it or not, even on MS-DOS.
-
Ruby is highly portable: it is developed mostly on Linux, but works on many types of UNIX, DOS, Windows 95/98/Me/NT/2000/XP, MacOS, BeOS, OS/2 etc.