Inicio / Ruby / Ruby: Lenguaje Elegante y Expresivo / Introducción a Ruby

Introducción a Ruby

Instalación, filosofía del lenguaje, primeros pasos, variables, strings, números y convenciones.

Principiante

Introducción a Ruby

Ruby es un lenguaje de programación interpretado, orientado a objetos y diseñado para la productividad y felicidad del programador. Creado por Yukihiro "Matz" Matsumoto en 1995.


Filosofía de Ruby

"Ruby está diseñado para hacer a los programadores felices." — Matz

  • Principio de menor sorpresa: el lenguaje se comporta como esperas
  • Todo es un objeto: incluso los números y nil
  • Sintaxis expresiva: código legible que parece pseudocódigo
  • Múltiples formas de hacer las cosas: flexibilidad por diseño

Instalación

Con rbenv (recomendado)

# Instalar rbenv
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash

# Añadir al shell
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

# Instalar Ruby
rbenv install 3.3.0
rbenv global 3.3.0

ruby -v   # ruby 3.3.0

Verificar la instalación

ruby -e 'puts "¡Hola desde Ruby!"'
irb   # Interactive Ruby (REPL)

Primeros pasos

Variables y tipos

# Variables locales (snake_case)
nombre = "Ana"
edad = 28
activo = true
precio = 19.99

# Todo es un objeto
puts nombre.class   # String
puts edad.class     # Integer
puts activo.class   # TrueClass
puts precio.class   # Float

# nil = ausencia de valor
valor = nil
puts valor.nil?     # true

Strings

nombre = "Ruby"

# Interpolación (solo con comillas dobles)
puts "Hola, #{nombre}!"        # "Hola, Ruby!"
puts "2 + 2 = #{2 + 2}"        # "2 + 2 = 4"

# Métodos de string
puts nombre.length              # 4
puts nombre.upcase              # "RUBY"
puts nombre.downcase            # "ruby"
puts nombre.reverse             # "ybuR"
puts nombre.include?("ub")      # true
puts "  hola  ".strip           # "hola"

# Métodos con ! (mutan el original)
texto = "hola"
texto.upcase!
puts texto   # "HOLA"

Números

# Enteros
puts 10 + 3     # 13
puts 10 - 3     # 7
puts 10 * 3     # 30
puts 10 / 3     # 3 (división entera)
puts 10.0 / 3   # 3.333... (división float)
puts 10 % 3     # 1 (módulo)
puts 2 ** 10    # 1024 (potencia)

# Métodos numéricos
puts 42.even?    # true
puts 42.odd?     # false
puts -5.abs      # 5
puts 3.14.round  # 3
puts 3.14.ceil   # 4
puts 3.14.floor  # 3

Entrada/Salida

# Salida
puts "Con salto de línea"
print "Sin salto de línea"
p [1, 2, 3]   # inspección (muestra el tipo)

# Entrada
print "Tu nombre: "
nombre = gets.chomp   # chomp elimina el \n
puts "Hola, #{nombre}"

Convenciones de nombres

Tipo Convención Ejemplo
Variable local snake_case mi_variable
Constante SCREAMING_SNAKE MAX_SIZE
Clase/Módulo PascalCase MiClase
Método snake_case calcular_total
Método booleano termina en ? empty?, valid?
Método destructivo termina en ! sort!, map!
Variable de instancia @prefijo @nombre
Variable de clase @@prefijo @@contador
Variable global $prefijo $debug

Ruby vs otros lenguajes

Aspecto Ruby Python JavaScript
Filosofía Felicidad del programador Legibilidad Versatilidad
Tipado Dinámico, fuerte Dinámico, fuerte Dinámico, débil
Todo es objeto ✅ (casi)
Bloques/Closures ✅ First-class ✅ Lambda ✅ Functions
Metaprogramación ✅ Muy potente 🟡 Limitada 🟡 Proxy
Framework web Rails Django/Flask Express/Next

Resumen

Concepto Descripción
Todo es objeto 42.even?, "hola".length
Interpolación "Hola, #{nombre}"
Convención ? Métodos que retornan boolean
Convención ! Métodos que mutan el receptor
nil Ausencia de valor, también es un objeto
puts / print / p Salida con/sin newline/inspección

Ejercicio de práctica

Primeros pasos con Ruby: strings, números y conversiones

Practica los fundamentos de Ruby: interpolación de strings, métodos numéricos y conversiones de tipo.

Implementa:

  1. presentar(nombre, edad) — retorna "Hola, soy {nombre} y tengo {edad} años" usando interpolación.
  2. info_numero(n) — retorna un hash con las claves :par, :positivo y :absoluto.
  3. invertir_palabras(frase) — invierte cada palabra pero mantiene el orden. Ej: "hola mundo""aloh odnum".