Dano escribió:
Entiendo que la web esta invadida de proyectos PHP que son puros scripts, con casi nada de clases(hola Wordpress), y tal vez por eso encuentres una enorme diferencia entre un PHP y un Ruby. A Ruby yo no lo conozco, pero según lo que me comentan, lo que mas les gusta es que todo se trabaja basado en OOP. De alguna forma así trabajo, apegado a OOP, sería una forma mas que similar a la de Ruby(supongo).
saludos
Sí, claro que entiendo eso y no es exactamente mi punto, aunque no descarto que tengas mucha razón. PHP tiene para muchos un karma negativo por su uso de "scripting" puro que le han dado en muchos sistemas.
Pero en mi caso particular es en el lenguaje en sí. Aunque se puedan hacer maravillas con él, me da la impresión que ha sido forzado a realizarlas, y se siente en algunas partes. Hace poco Acidbjazz mostraba un código en AS que iteraba sobre dos variables y yo le respondí con mi versión:
Código :
k=1;
for(i=0;i<6;i++){
for(j=k;j<7;j++){
trace(i+" "+j)
}
k++}
Código :
6.times do |i|
7.times do |j|
puts "#{i} #{j}"
end
end
No recuerdo si eran los ejemplos concretos, o si retornan el mismo resultado pero deberían estar por ahí. A mí me gusta mucho más la sintaxis y flexibilidad de Ruby y que hasta ahora no he encontrado en otros lenguajes. Aclaro de nuevo que no estoy diciendo que sea mejor, si no que para mí, y teniendo yo el poder de elección, será lo que prefiera.
Ruby fue creado para cumplir además de los paradigmas típicos de ser el más rápido, veloz y eficiente (que en sus últimas versiones lo cumple), también uno que muchos olvidan, hacer el programador feliz.
Cosas como por ejemplo poder manejar un arreglo de cadenas simplemente como:
Código :
%w(Este es un arreglo de elementos)
#=> Lo que da un arreglo ["este","es","un","arreglo","de","elementos"]
arreglo = %w(1 100 200 232 233.10 80 31)
#=> ["1", "100", "200", "232", "233.10", "80", "31"]
O, digamos, ordenar un arreglo de manera aleatoria:
Código :
arreglo.sort_by { rand }
#=> ["100", "31", "1", "200", "232", "233.10", "80"]
Y eso se puede extender a, por ejemplo, resumir la forma en que tu llamas a tus clases en ese código a esto (aunque tal vez no sea un buen ejemplo.

)
Código :
%w(pages.admin user pages).each { |l|
require "core.application.pages.#{l}.*"
}
Son detalles propios del lenguaje, que a la larga dejan una sensación de satisfacción y de que todo es divertido, y cosas que no he encontrado en otros lenguajes (a los que les he dado más tiempo que a Ruby, el cuál sólo uso desde hace dos años).
Pero obviamente, todos usen lo que más les guste y se sientan más productivos y felices