Ruby es único entre los lenguajes de script orientados a objetos. En cierto sentido, es un lenguaje purista para los amantes de los lenguajes orientados a objetos. Todo, sin excepción, es automáticamente un objeto, mientras que en otros lenguajes de programación esto no es cierto..
¿Qué es un objeto? Bueno, en cierto sentido puedes pensarlo en términos de construir un auto. Si tiene un plano para él, entonces un objeto es lo que se construye a partir de ese plano. Contiene todos los atributos que posee el objeto (es decir, marca, modelo, color) y las acciones que puede realizar. Pero, incluso como un lenguaje orientado a objetos puro, Ruby no sacrifica ninguna facilidad de uso o flexibilidad al dejar de lado las características que no están expresamente relacionadas con la programación orientada a objetos.
El arquitecto de Ruby, Yukihiro Matsumoto (conocido simplemente como "Matz" en la web) diseñó el lenguaje para que sea lo suficientemente simple como para que lo usen los programadores principiantes, pero también lo suficientemente potente como para que los programadores experimentados tengan todas las herramientas que necesitarían. Suena contradictorio, pero esta dicotomía se debe al diseño puro orientado a objetos de Ruby y a la cuidadosa selección de características de Matz de otros lenguajes como Perl, Smalltalk y Lisp..
Existen bibliotecas para construir todo tipo de aplicaciones con Ruby: analizadores XML, enlaces de GUI, protocolos de red, bibliotecas de juegos y más. Los programadores de Ruby también tienen acceso al poderoso programa RubyGems. Comparable al CPAN de Perl, RubyGems facilita la importación de las bibliotecas de otros programadores en sus propios programas..
Como cualquier lenguaje de programación, Ruby tiene sus desventajas. No es un lenguaje de programación de alto rendimiento. En ese sentido, el diseño de máquina virtual de Python tiene una gran ventaja. Además, si no eres fanático de la metodología orientada a objetos, Ruby no es para ti.
Aunque Ruby tiene algunas características que quedan fuera del ámbito de los lenguajes orientados a objetos, no es posible crear un programa Ruby no trivial sin usar las características orientadas a objetos. Ruby no siempre funciona tan bien como otros lenguajes de secuencias de comandos similares en las tareas de computación sin procesar. Dicho esto, las versiones futuras abordarán estos problemas y las implementaciones alternativas, como JRuby, están disponibles como solución para estos problemas..
Ruby se usa en aplicaciones típicas de lenguaje de scripting, como el procesamiento de texto y "glue" o programas de middleware. Es adecuado para pequeñas tareas de secuencias de comandos ad-hoc que, en el pasado, pueden haberse resuelto con Perl. Escribir programas pequeños con Ruby es tan fácil como importar los módulos que necesita y escribir un tipo de programa de "secuencia de eventos" casi BÁSICO.
Al igual que Perl, Ruby también tiene expresiones regulares de primera clase, lo que hace que los scripts de procesamiento de texto sean fáciles de escribir. La sintaxis flexible también ayuda en pequeños scripts. Con algunos lenguajes orientados a objetos, puede empantanarse con código detallado y voluminoso, pero Ruby lo deja libre para simplemente preocuparse por su script.
Ruby también es adecuado para sistemas de software más grandes. Su aplicación más exitosa se encuentra en el marco web Ruby on Rails, un software que tiene cinco subsistemas principales, numerosas piezas menores y una gran cantidad de scripts de soporte, bases de datos y bibliotecas..
Para ayudar a la creación de sistemas más grandes, Ruby ofrece varias capas de compartimentación, incluida la clase y el módulo. Su falta de características superfluas permite a los programadores escribir y usar grandes sistemas de software sin sorpresas..