lunes, 10 de marzo de 2014

La filosofía del Ruby* como lenguaje de programación. Primera parte.

Haciendo un breve resumen... Olvidaros de Ruby on Rails... Eso tardara un rato... Tenemos que empezar con Ruby, de otra forma no entenderiamos del todo que hace Rails. Así que hablando con mi jefe decidí que me centraría en ruby. Y para ello el y mis colegas de trabajo me dieron una pequeña introduccción que os comparto,

Ruby es más flexible, facil de leer y no se repite, por ejemplo si comparamos con Java, Ruby se carga cada vez que añadimos algo dentro de el irb. Mientras que en Java se tiene que poner a cargar cada vez que deseemos er si funciona o no. Eso hace que Java sea más rapido a cargar de golpe todo mientras que en eso Ruby si que es más lento. Eso no es malo, todo tiene sus pros y contras.

Ruby tiene:

 - Una sola herencia ( no se repite)
- method overriding (tienes la posibilidad de estar sobrecargando una función que no se encuentra definida en el padre del que heredas)
- namespaces (Un espacio de nombres es un contenedor abstracto en el que un grupo de uno o más identificadores únicos pueden existir.)
- class(estaticos) variables y metodos,
- patterns como los singletons ( (instancia única) está diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto.)
- duck typing (enfocado a objetos)
!
Ruby NO tiene:
!
-Interfaces (ya que es flexible de tipos), pero mixins permiten secciones estándar de código para ser 
incluido y reutilizados en clases. Se permiten múltiples mixins. 
- Método de la sobrecarga (pero los métodos pueden tener argumentos opcionales).


Hay que diferenciar enre Arrays, ordered list of elements o cadenas, strings double quotes o dobles comillas objetos, container executung code pipes , traverse, block o tubos o bloques contenedores de codigos de ejecución, value items o items de valor, objetcts, values state u objetos, Integeres o numeros enteros, float o con decimales, class hash o asterisco de clase. Ire añadiendo... : 

Ejemplo:

Comida = ["huevos",  21,  :champiñones]
     nombre del  = Ashes["strings", 1nteger, symbol]
     main object            

def
 defincición o metodo

  
end
cierre del/ de_los comando/s

class
clase o tipo (endtro de la clase escribiremos los atributos) **
object.new 
objeto.constructor (new), es decir, cada vez que veamos (.new) es un constructor.
  
end

if
 acción o metodo en caso de.. 
  
end

if else
cualquier metodo diferente a los definidos
  
end


Arrays [abc, def]
Ashes [] &/or {}
Items(ex.ejemplo de 2 items) abc, def
Strings "abc"
Symbol (unmutable string):abc
Block ||
integers 1 2 3
float 0.001 3.1416 ...
object .abc

Otras notaciones.
Dentro de un objeto ... clave=>valor

"Un objeto es un contenedor de datos, que a su vez controla el acceso a dichos datos. Asociados a los objetos está una serie de variables que lo definen: sus atributos. Y también un conjunto de funciones que crean un interfaz para interactuar con el objeto: son los métodos."
Fuente: http://rubytutorial.wikidot.com/clases-objetos

Block sirve para Iterar(Iterating) repetir un comandos en diferentes items.
Los Items pueden ser:
- Objetos,  :huevos, :24
- Strings "queso", "24"
- Integers "34, 27" 
Los Items si son una lista vienen dentro de ashes,pero si es un solo item a veces no hace falta.
Para añadir items existen comandos y simplemente usando esa notación podemos especificar el item utilizando la notación. Por ejemplo, en el caso de strings puede ser muy util la lista de Strings! muchas veces se puede utilizar la misma notación para añadir intgerers to_i o strings to_s...


**: acerca de class escribiré y traduciré el documento, pero por ahora podeis ver el contenido en ingles aquí:
http://www.tutorialspoint.com/ruby/ruby_object_oriented.htm
 La guía es una maravilla!

No hay comentarios:

Publicar un comentario