A Ruby desde PHP

PHP es muy utilizado para realizar aplicaciones web, pero si quieres usar Ruby on Rails o simplemente quieres un lenguaje más orientado al uso en general, vale la pena considerar Ruby.

Similaridades

Como en PHP, en Ruby…

  • las variables son dinámicamente tipadas, así que no tienes que preocuparte por declararlas.
  • hay clases, y puedes controlar el acceso a ellas como en PHP 5 (public, protected y private).
  • algunas variables comienzan con $, pero no todas.
  • también está eval.
  • puedes usar el interpolado de strings. En vez de hacer "$foo es un $bar", puedes hacer "#{foo} es un #{bar}"—al igual que en PHP, esto no aplica para los strings definidos con comillas simples.
  • tienes “documentos internos” (“heredocs” en inglés).
  • tienes excepciones, como PHP 5.
  • hay una biblioteca estándar bastante grande.
  • los arrays y hashes funcionan como se espera que lo hagan, si cambias array() por { y }: array('a' => 'b') en Ruby es {'a' => 'b'}.
  • true y false se comportan como en PHP, pero null se llama nil.

Diferencias

A diferencia de PHP, en Ruby…

  • hay tipado fuerte. Necesitarás utilizar to_s, to_i, etc. para convertir entre strings, integers y así en más, en vez de depender del lenguaje para que lo haga.
  • los strings, números, arrays, hashes, etc. son objetos. En vez de utilizar abs(-1) se usa -1.abs.
  • los paréntesis son opcionales en las llamadas a los métodos, excepto para clarificar qué parámetros van para qué método, cuando es necesario.
  • en vez de usar condiciones de nombrado, como guiones bajos (underscores), la biblioteca estándar y las extensiones están organizadas en módulos y clases.
  • la reflexión es una capacidad inherente de los objetos, no necesitas usar clases Reflection como con PHP 5.
  • las variables son referencias.
  • no hay clases abstract o interfaces.
  • los hashes y arrays no son intercambiables.
  • sólo false y nil son falsos: 0, array() y "", son todos verdaderos en las condiciones lógicas.
  • casi todo es una llamada a un método, incluso raise (equivalente a throw en PHP).