Introduccion a Ruby
## Objetivos de Aprendizaje
- Comprender la historia y filosofia de Ruby
- Configurar el entorno de desarrollo de Ruby
- Escribir y ejecutar tu primer programa en Ruby
- Comprender los fundamentos de la sintaxis de Ruby
## Que es Ruby?
Ruby es un lenguaje de programacion dinamico y orientado a objetos creado por Yukihiro Matsumoto (Matz) en 1995.
```ruby
puts "Hola, Mundo!"
```
## Filosofia de Ruby
### Principios de Diseno
- **Felicidad del Programador** - Ruby esta disenado para hacer felices a los desarrolladores
- **Convencion sobre Configuracion** - Los valores predeterminados sensibles reducen la fatiga de decisiones
- **DRY** - Don't Repeat Yourself (No te repitas)
- **TIMTOWTDI** - There Is More Than One Way To Do It (Hay mas de una forma de hacerlo)
### Caracteristicas Clave
- Puramente orientado a objetos (todo es un objeto)
- Tipado dinamico
- Recoleccion de basura
- Consola interactiva (IRB)
- Rica biblioteca estandar
## Instalando Ruby
### Descarga
Obtener Ruby desde o usar un gestor de versiones:
```bash
# Usando rbenv (macOS/Linux)
brew install rbenv
rbenv init
# Usando RubyInstaller (Windows)
# Descargar desde https://rubyinstaller.org/
```
### Verificar Instalacion
```bash
ruby --version
```
## Tu Primer Programa
### Archivo: hola_mundo.rb
```ruby
puts "Hola, Mundo!"
```
### Ejecutar el Programa
```bash
ruby hola_mundo.rb
```
## Estructura de un Programa en Ruby
```ruby
# Este es un comentario
# Definir un metodo
def saludar(nombre)
"Hola, #{nombre}!"
end
# Llamar al metodo e imprimir resultado
puts saludar("Mundo")
```
### Componentes
1. **Comentarios**: Lineas que comienzan con `#`
2. **Metodos**: Definidos con `def...end`
3. **Variables**: No se necesita declaracion de tipo
4. **Interpolacion de cadenas**: `"#{expresion}"`
## Comentarios
```ruby
# Comentario de una sola linea
=begin
Comentario de multiples lineas
Esto rara vez se usa en la practica
=end
```
## El Metodo puts
```ruby
# Imprimir con salto de linea
puts "Hola"
puts "Mundo"
# Imprimir sin salto de linea
print "Hola "
print "Mundo"
puts
# Imprimir array (cada elemento en nueva linea)
puts [1, 2, 3]
# Salida:
# 1
# 2
# 3
```
## Print vs puts vs p
```ruby
nombre = "Alicia"
print "Hola: " # Sin salto de linea, sin comillas
puts "Hola: " # Con salto de linea, sin comillas
p "Hola: " # Con salto de linea, con comillas (depuracion)
puts nombre # Alicia
p nombre # "Alicia" (muestra comillas - util para depuracion)
```
## Ruby Interactivo (IRB)
```bash
irb
```
```ruby
irb(main):001:0> 1 + 2
=> 3
irb(main):002:0> "hola".upcase
=> "HOLA"
irb(main):003:0> exit
```
## Variables
```ruby
nombre = "Ruby" # Variable local
@edad = 25 # Variable de instancia
@@contador = 0 # Variable de clase
PI = 3.14159 # Constante
```
## Convenciones de Nombres
| Tipo | Convencion | Ejemplo |
|------|------------|---------|
| Variable local | minusculas con guion bajo | `primer_nombre` |
| Variable de instancia | prefijo @ | `@nombre` |
| Variable de clase | prefijo @@ | `@@contador` |
| Constante | MAYUSCULAS | `TAMANO_MAXIMO` |
| Nombre de metodo | minusculas con guion bajo | `def calcular_total` |
## Argumentos de Linea de Comandos
```ruby
# hola.rb
nombre = ARGV[0] || "Mundo"
puts "Hola, #{nombre}!"
```
```bash
ruby hola.rb Alicia
# Salida: Hola, Alicia!
```
## Versiones de Ruby
```bash
ruby --version
```
| Version | Ano | Caracteristica |
|---------|------|----------------|
| Ruby 2.5 | 2017 | Reenvio de argumentos |
| Ruby 2.7 | 2019 | Pattern matching |
| Ruby 3.0 | 2020 | Ractor, RBS |
| Ruby 3.2 | 2022 | Compilador YJIT |
## IDEs
### Editores Populares
- Visual Studio Code (recomendado)
- RubyMine
- Sublime Text
- Vim/Neovim con vim-ruby
### Extensiones Utiles para VS Code
- Ruby
- erb
- Ruby Solargraph
## Resumen
- Ruby esta disenado para la felicidad del programador
- Todo en Ruby es un objeto
- Usa el comando `ruby` para ejecutar archivos `.rb`
- Usa `puts` para salida, `print` para inline
- IRB proporciona exploracion interactiva de Ruby
- Los tipos de variables se infieren (no se necesita declaracion)
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →