ruby-on-rails - sirve - ruby tutorial
¿Por qué usar Ruby en lugar de Smalltalk? (28)
Es cierto que los idiomas son muy parecidos. La forma superficial de interpretar eso es llamar a Ruby una banda de covers de Smalltalk. La interpretación más razonable es que el sistema cerrado de Smalltalk lo aisló, mientras que la participación de Ruby en la ecología de Unix y la costumbre de apropiarse de las características de todos los idiomas bajo el sol le da una curva de adopción infinitamente más suave y una integración sin esfuerzo con herramientas kickass como Git.
Ruby se está volviendo popular , en gran medida por la influencia de Ruby on Rails, pero parece que actualmente está pasando apuros en su adolescencia. Hay muchas similitudes entre Ruby y Smalltalk: el maglev es un testimonio de eso. A pesar de tener una sintaxis más inusual, Smalltalk tiene todas (si no más) de la belleza orientada a objetos de Ruby.
Por lo que he leído, Smalltalk parece tener a Ruby golpeado:
- Madurez (desarrollado en la década de 1970)
- Estabilidad
- Apoyo comercial
- Control de fuente distribuido (entiende la estructura del código, no solo el texto que difiere)
- Varias implementaciones de la VM
- Soporte multiplataforma
- El marco web costero como una alternativa fuerte a Rails
Parece que Ruby está reinventando la rueda. Entonces, ¿por qué los desarrolladores de Ruby no usan SmallTalk? ¿Qué tiene Ruby tiene el Smalltalk no?
Para el registro: soy un chico de Ruby con poca o ninguna experiencia en Smalltalk, pero estoy empezando a preguntarme por qué.
Editar: creo que GNU Smalltalk ha abordado el problema de la facilidad de creación de scripts. Según lo entiendo, esto le permite escribir smalltalk en archivos de texto antiguos normales, y ya no necesita estar en Smalltalk IDE. Luego puede ejecutar sus scripts con:
gst smalltalk_file
¡Comunidad! Ruby y especialmente Rails tiene una gran comunidad. Cuando se metía con smalltalk, parecía que no había tantos screen castts, artículos, publicaciones de blogs, etc. escritos sobre Smalltalk.
¿Qué tiene Ruby que Smalltalk no tiene?
- Soporte masivo y actual de las principales plataformas (IronRuby y jRuby) que enriquecen el conjunto de bibliotecas
- Evangelistas como Dave Thomas que, durante años, han estado de gira por el país predicando el evangelio de su idioma. He visto a Dave en conferencias de Java afirmando que no conoce Java y que prefiere Ruby.
- Fuerte, actual inmobiliario en las estanterías
- El creador de Ruby ha dicho que piensa en el programador: la sintaxis de Ruby parece tener este atractivo Zen. Es difícil precisar, pero parece galvanizar a los fanáticos.
- Presentaciones creativas y dinámicas como Giles y esta que gana interés en la mente
Creo que tu punto está bien. Como dijo una vez un amigo, Ruby podría ser "vino viejo en una botella nueva" ante Smalltalk. Pero a veces la nueva botella importa. Un vino tiene que estar en el lugar correcto en el momento correcto.
Adivina quién dijo esto? (la cita es cercana, tal vez no exacta): "Siempre pensé que Smalltalk vencería a Java. Simplemente no sabía si se llamaría ''Ruby'' cuando lo hizo".
Tambor rollo ....
...
La respuesta es ... Kent Beck
Creo que su pregunta es algo que falta el punto. No deberías elegir, ¡debes aprenderlos a los dos!
Si realmente está en posición de poder elegir el próximo marco (vm, infraestructura), entonces debe decidir qué usar y puede hacer una pregunta específica con pros y contras desde la perspectiva de lo que su aplicación debe hacer.
He usado smalltalk (me encanta) y ruby (me encanta).
En casa o para proyectos de código abierto, puedo usar todos los idiomas que me gustan, pero cuando trabajo tengo que adoptar.
Empecé a usar ruby (en el trabajo) porque necesitábamos un lenguaje de scripting que se comportara más o menos igual en solaris, linux y windows (98,2000, xp). Ruby era en ese momento desconocido para el promedio de Joe y no existía ningún raíl. Pero fue fácil de vender a todos los involucrados.
(¿Por qué no Python? ¿La verdad? Una vez pasé una semana buscando un error que sucedió cuando un terminal convirtió mi espacio en una pestaña y el intento se estropeó).
Entonces la gente comenzó a codificar cada vez más en rubí porque era muy relajante, disfrutaba y no una nube en el cielo.
Es cierto, sin duda, que la mayoría de las personas no eligen los lenguajes de programación simplemente en función de sus méritos. A la mayoría de los programadores se les dice qué idioma usar por otra persona.
y
Para ser atractivo para los piratas informáticos, un lenguaje debe ser bueno para escribir los tipos de programas que desean escribir. Y eso significa, quizás sorprendentemente, que tiene que ser bueno para escribir programas desechables.
Y cuando estaban en la tierra Lisp intentan reemplazar LISP con smalltalk
Las bibliotecas, la comunidad y el momento de Ruby son buenos
Entonces, si LISP es aún más poderoso que Ruby, ¿por qué no utilizar LISP? Las objeciones típicas a la programación en LISP son:
- No hay suficientes bibliotecas
- No podemos contratar programadores LISP.
- LISP no ha ido a ninguna parte en los últimos 20 años.
Estas no son objeciones abrumadoras, pero ciertamente vale la pena considerarlas.
y
Ahora, si se elige entre un lenguaje poderoso y uno popular, puede ser excelente elegir el más poderoso. Pero si la diferencia de poder es menor, ser popular tiene todo tipo de bonitas ventajas. En 2005, pensaría mucho antes de elegir LISP sobre Ruby. Probablemente solo lo haga si necesito un código optimizado o macros que actúen como compiladores completos.
Creo que todos los que han estado trabajando con Ruby por un tiempo reconocen su profunda deuda con Smalltalk. Como una de estas personas, ¿qué me gusta de Ruby sobre Smalltalk? Creo que desde una perspectiva estrictamente lingüística, es el azúcar. Ruby es deliberadamente un lenguaje sintaxis-azucarado, mientras que Smalltalk es un lenguaje muy sintaxis-minimalista. Ruby es esencialmente el modelo de objeto Smalltalk con azúcar de sintaxis Perlish. Me gusta el azúcar y descubro que la programación es más divertida.
Cuando salgo de mi casa por la mañana para ir a trabajar, a menudo me cuesta tomar la decisión de girar a la izquierda oa la derecha (vivo en el medio de una calle). De cualquier forma, me llevarán a mi destino. Una forma me lleva a la carretera que, según el tráfico, probablemente me llevará a la oficina más rápido. Puedo conducir muy rápido durante al menos una parte del camino y tengo una buena oportunidad de ver a una o dos chicas bonitas en camino al trabajo :-)
La otra forma me permite viajar por un camino trasero muy encantador y ventoso con una cobertura completa de árboles. Ese camino es bastante entretenido y, de los dos enfoques, es definitivamente el más divertido, aunque significa que llegaré a la oficina más tarde de lo que hubiera tomado la autopista. Cada forma tiene sus méritos. En los días en que tengo mucha prisa, por lo general tomaré la carretera, aunque podría toparse con el tráfico y también aumentaría mis posibilidades de tener un accidente (si no tengo cuidado en mi prisa). Otros días puedo elegir el camino boscoso y conducir, disfrutar del paisaje y darme cuenta de que llego tarde. Puedo tratar de acelerar, aumentando mis posibilidades de obtener un boleto o causar un accidente yo mismo.
De ninguna manera es mejor que la otra. Cada uno tiene sus beneficios y riesgos, y cada uno me ayudará a alcanzar mi objetivo.
Debido a que las distribuciones de Smalltalk tenían un precio en múltiplos de $ 1000USD, mientras que Ruby es gratis.
Diría lo contrario: la sintaxis de Smalltalk es una de las sintaxis de lenguaje de programación más simples y potentes.
He hecho un poco de Smalltalk - el IDE es una cosa que recuerdo - ¿Ruby tiene un buen soporte para IDE?
Me gana Pasé un año estudiando a Ruby y haciendo algunos proyectos pequeños para ver cómo me gustaba. Creo que soy un fanático de Smalltalk porque cada vez que me sentaba a trabajar con Ruby suspiraba y pensaba: "Prefiero estar haciendo esto en Smalltalk". Finalmente, me rendí y volví a Smalltalk. Ahora estoy más feliz Más feliz es más bueno.
Lo cual, por supuesto, plantea la pregunta: "¿Por qué?". Sin ningún orden en particular:
- Porque el IDE destruye cualquier otra cosa con la que haya trabajado alguna vez. Esto incluye un conjunto de plataformas desde ISPF en mainframes de IBM hasta Visual (*) de Microsoft, incluye cosas como Visual Basic 4-6, Visual C ++ (varias encarnaciones), Borland''s Turbo Pascal y descendientes (por ejemplo, Delphi) y cosas en DEC máquinas en modo de caracteres y bajo X-Windows.
- Porque la imagen es un hermoso lugar para vivir. Puedo encontrar lo que quiero allí. Si no puedo entender cómo hacer algo, sé que en algún lugar de la imagen es un ejemplo de lo que estoy tratando de hacer, todo lo que tengo que hacer es cazar hasta que lo encuentre. Y es autodocumentado: si desea ver los detalles de cómo funciona algo, abra un navegador en la clase que le interesa, mire el método y así es como funciona. (OK, eventualmente golpearás algo que se llama primitivo, y luego es "aquí hay dragones", pero generalmente es comprensible desde el contexto). Es posible hacer cosas similares en Ruby / C ++ / C, pero no es tan fácil. Fácil es mejor.
- El lenguaje es mínimo y consistente. Tres tipos de mensajes: unario, binario y palabra clave. Eso también describe la prioridad de la ejecución: primero los mensajes unarios, luego los mensajes binarios y luego los mensajes de palabras clave. Use paréntesis para ayudarlo. Dang poca sintaxis, en realidad, todo está hecho con envíos de mensajes. (OK, la asignación no es un mensaje enviado, es un operador. Así que es el operador ''retorno'' (^). Los bloques están encerrados por pares cuadrados ([]). Podría haber uno o dos bits ''mágicos'' allí, pero maldito poco ...).
- Bloques. Sí, lo sé, están ahí en Ruby (y otros), pero digamos, literalmente no puedes programar en Smalltalk sin usarlos. Estás obligado a aprender a usarlos. A veces ser forzado es bueno.
- Programación orientada a objetos sin compromiso, o alternativas, para el caso. No puede pretender que está "haciendo objetos" mientras sigue haciendo lo mismo.
- Porque estirará tu cerebro. Las construcciones cómodas a las que todos nos hemos acostumbrado (if-then-else, do-while, for (;;), etc.) ya no están allí, por lo que debes aprender algo nuevo. Hay equivalentes a todo lo anterior (y más), pero vas a tener que aprender a pensar de manera diferente. De manera diferente, es bueno.
Por otro lado, esto puede ser solo una señal de un tipo que ha estado programando desde los tiempos en que los mainframes dominaban la Tierra, tuvimos que caminar cinco millas para trabajar a través de cegadoras tormentas de nieve, cuesta arriba en ambas direcciones, y las computadoras usaron donas para memoria. No tengo nada en contra de Ruby / Java / C / C ++ /, todos son útiles en contexto, pero dame Smalltalk o dame ... bueno, tal vez debería aprender Lisp o Scheme o ... :-)
Para mí, no es tanto un caso de lo que Ruby tiene, sino de lo que Ruby no tiene. Y lo que no tiene es la necesidad de una VM y un entorno completo.
Smalltalk es grandioso, es donde aprendí conceptos OO, pero para facilidad de uso, voy por Ruby. Puedo escribir el código de Ruby en mi editor favorito y ejecutarlo desde la línea de comando.
Entonces, para mí, eso es lo que elijo Ruby sobre Smalltalk.
Respondió la pregunta en su primera línea: "Ruby se está volviendo popular"
- Hay muchos módulos interesantes, proyectos y otros basados en Ruby.
- Si tiene problemas para hacer algo en Ruby, será trivial encontrar ayuda en alguna parte.
- Ruby ya está instalado en muchas computadoras (está incluido por defecto en OS X, muchas distribuciones de Linux y hay buenos instaladores para Windows) - No he visto que smalltalk esté instalado por defecto en ninguna máquina que haya usado ...
Yo diría que si un idioma es superior a otro es irrelevante. Como ejemplo, PHP puede no ser el "mejor" lenguaje de todos los tiempos, pero aún consideraría usarlo sobre Ruby on Rails (una herramienta "mejor" para crear sitios web) porque está muy extendido.
Básicamente, los pros y contras específicos de un idioma son mucho menos importantes que todo lo que lo rodea, es decir, la comunidad.
Ruby (o cualquier otro idioma) es más popular que Smalltalk (o cualquier otro idioma) porque vivimos en un universo caótico. Esto es:
- Del propio Dave Thomas, "[después del] video sobre ''Cómo construir un blog en diez minutos'' ... Ruby pasó de ser un buen nicho de lenguaje a ser ''un idioma en el que escribiste las aplicaciones de Rails''" ( Conferencia de Ruby Conferencia 2010 ).
- Los primeros vendedores de Smalltalk cobran prohibitivamente
- Smalltalk, porque fue inventado (antes de su tiempo) hace 30 años, se le ocurre a muchos como un lenguaje antiguo, "muerto" (como FORTRAN)
- las corporaciones consideran a Smalltalk como una ventaja competitiva que esconden su uso
Si bien los lenguajes son similares en las características OO, la ventaja asesina de Smalltalk es el entorno vivo y abierto (la "imagen" muy mal entendida). Después de ver este ejemplo de programación en Smalltalk , el debate ha terminado.
Ruby es el idioma de conversación actual. Es más fácil comercializar un software creado con él ahora que un lenguaje desarrollado en los años 70.
Ruby es para Smalltalk, ya que los números arábigos son para números romanos. La misma matemática, sintaxis más fácil.
Smalltalk: la gente reenvía si es cierto: [piensa] ifFalse: [no está pensando]
Ruby: la gente piensa hacia adelante a menos que piense hacia atrás
1) El flujo de control similar a RPN de Smalltalk por mensajes es como Lisp: es regular y genial, pero excluye a la gente.
2) Ruby le permite a las personas escribir código usando la forma idiomática en que las personas hablan: bla, a menos que haya una razón para no hacerlo.
update reescribió la muestra de Smalltalk para que en realidad sea más código legal ...
Soy más un Pythonista que un usuario de Ruby, sin embargo, las mismas cosas son válidas para Ruby por las mismas razones.
La arquitectura de Smalltalk es algo insular, mientras que Python y Ruby se construyeron desde cero para facilitar la integración. Smalltalk nunca ganó un cuerpo de soporte de aplicaciones híbridas en la forma en que lo hacen Python y Ruby, por lo que el concepto de ''smalltalk como lenguaje de scripts incrustado'' nunca se hizo realidad.
Por si fuera poco, Java no era lo más fácil para interactuar con otras bases de código (JNI es bastante torpe), pero eso no impidió que ganara Mindshare. IMO el argumento de interfaz es significativo - la facilidad de integración no ha afectado a Python - pero este argumento solo tiene un peso moderado ya que no todas las aplicaciones requieren esta capacidad. Además, las versiones posteriores de Smalltalk abordaron sustancialmente la insularidad.La biblioteca de clases de la mayoría de las implementaciones principales de Smalltalk (VisualWorks, VisualAge, etc.) era grande y tenía reputación de tener una curva de aprendizaje bastante empinada. La mayoría de las funcionalidades clave en Smalltalk están escondidas en algún lugar de la biblioteca de la clase, incluso cosas básicas como secuencias y colecciones. El paradigma del lenguaje también es algo así como un choque cultural para alguien que no está familiarizado con él, y la visión por partes del programa presentada por el navegador es bastante diferente de lo que la mayoría de la gente estaba acostumbrada.
El efecto general es que Smalltalk obtuvo una reputación (algo merecida) por ser difícil de aprender; toma bastante tiempo y esfuerzo convertirse en un programador de Smalltalk realmente competente. Ruby y Python son mucho más fáciles de aprender y poner a los nuevos programadores al día.Históricamente, las implementaciones convencionales de Smalltalk eran bastante caras y necesitaban hardware exótico para funcionar, como se puede ver en esta publicación de net.lang.st80 desde 1983 . Windows 3.1, NT y ''95 y OS / 2 fueron los primeros sistemas operativos de mercado masivo en hardware convencional capaces de soportar una implementación de Smalltalk con una integración decente del sistema nativo. Anteriormente, Mac o hardware de estación de trabajo eran las plataformas más baratas capaces de ejecutar Smalltalk con eficacia. Algunas implementaciones (particularmente Digitalk) admitían los sistemas operativos para PC bastante bien y lograron ganar algo de tracción.
Sin embargo, OS / 2 nunca tuvo tanto éxito y Windows no alcanzó la aceptación general hasta mediados de la década de 1990. Desafortunadamente, esto coincidió con el surgimiento de la Web como plataforma y un gran impulso de marketing detrás de Java. Java aprovechó la mayor parte de la atención en la última parte de la década de 1990, lo que hizo que Smalltalk fuera un poco ejecutado.Ruby y Python trabajan en una cadena de herramientas más convencional y no están estrechamente vinculados a un entorno de desarrollo específico. Mientras que los IDEs de Smalltalk que he usado son lo suficientemente buenos, utilizo PythonWin para el desarrollo de Python en gran parte porque tiene un buen editor con resaltado de sintaxis y no funciona.
Sin embargo, Smalltalk está diseñado para ser utilizado con un IDE (de hecho, Smalltalk fue el IDE gráfico original) y todavía tiene algunas características agradables que otros sistemas no reproducen. El código de prueba con resaltado y "Mostrarlo" sigue siendo una característica muy agradable que nunca he visto en un IDE de Python, aunque no puedo hablar por Ruby.Smalltalk llegó un poco tarde a la fiesta de la aplicación web. Los primeros esfuerzos como VisualWave nunca tuvieron un gran éxito y no fue hasta que salió Seaside que un marco web decente obtuvo aceptación en los círculos de Smalltalk. Mientras tanto, Java EE ha tenido un ciclo de vida de aceptación completo comenzando con fanáticos delirantes promocionándolo y finalmente aburriéndose y moviéndose hacia Ruby; -}
Irónicamente, Seaside está empezando a tener un poco de atención entre los conocedores, por lo que podemos encontrar que los viajes de Smalltalk vuelven a ser populares.
Habiendo dicho eso, Smalltalk es un sistema muy agradable una vez que hayas calculado cómo conducirlo.
Stephane Ducasse tiene algunos grandes libros de Smalltalk disponibles aquí:
http://stephane.ducasse.free.fr/FreeBooks.html
Entonces, aunque la comunidad de Smalltalk no es tan prolífica como las comunidades de Ruby and Rails, todavía hay mucha ayuda por ahí.
Usa Ruby porque puede tener patas de negocios, Smalltalk no.
Puedo decirte por experiencia personal. Aún utilizando Smalltalk, me encanta y he usado un par de sabores. Aunque Smalltalk es un excelente lenguaje, y es todo lo que usted mencionó, probablemente no convencerá al CIO / CTO promedio para que use Smalltalk en un nuevo proyecto. Por supuesto, puede que incluso le cueste convencer a un CIO / CTO conservador para que use Ruby. Al final, debe tener mucho cuidado si desea un soporte comercial sostenido a largo plazo y la capacidad de encontrar empleados fuera de la calle que puedan respaldar sus sistemas en el futuro. Como ejemplo, Smalltalk fue realmente una gran cosa a principios de los 90 e IBM invirtió mucho en él a finales de los 90. Para IBM Smalltalk iba a ser el próximo idioma para todas las aplicaciones comerciales. IBM puso a Smalltalk en todo, incluidos sus sistemas de mainframe. Java se hizo popular, se hizo cargo del mercado, y Smalltalk se convirtió en un jugador de nicho. Hace más de un año IBM abandonó el lenguaje (su término está en el ocaso). Además, eche un vistazo a la historia. ParkPlace and Digitalk where the first major commercial players in the Smalltalk arena, they merged and then went out of business.
Puedes encontrar un trabajo bastante fácil para Ruby. Aunque realmente amo Smalltalk, es virtualmente imposible entrar en el nicho de Smalltalk. Hay mucho trabajo en ello, pero si no entraste cuando era popular, es prácticamente imposible ahora.
Todas las otras razones son insignificantes porque necesita pasar mucho tiempo, enfocado en el trabajo real para aprender un idioma correctamente. Si no eres rico en forma independiente, la mejor manera de hacerlo es la exposición a él en el trabajo.
Como recién llegado a la discusión, el problema principal con Smalltalk y Lisp es que no puede ejecutarlos con CGI o FastCGI en alojamiento compartido.
Las masas sin lavar nunca las usarán si necesitan VPS o servidores dedicados para usarlas. En mi opinión, Seaside es superior a casi cualquier cosa, pero ¿funcionará en Dreamhost o Webfaction?
I love both Smalltalk and Ruby - but have found that Ruby is more applicable to what I do daily, and is closer to my heart (practically speaking). What does Ruby offer that Smalltalk doesn''t?
- Text-based scripting
- Low implementation requirements (runs in more places)
- Easier to learn and justify (Perl and Python programmers will have no trouble
- Easier to move programs around - text files!
- Interfaces well with native environment
- Anywhere Java runs, jRuby runs...
- Bigger and much more active community
Some have mentioned gst (GNU Smalltalk); the problems still hold.
I think part of the problem is the development-environment-is-the-runtime. This gives a lot of power, but it also presents a larger learning curve.
Here is a hello world tutorial.
This is very different from other languages where I just need to know how to open a text editor and copy and paste text, hit save, and run a compiler. I HAVE to know how to use the environment. That tutorial doesn''t even show me how to create a basic program (which is likely more a fault of that tutorial) that I can run.
There is definately a higher cost of just getting things going than most other languages.
Most languages have some nice eye-catching code that they can show off. I haven''t seen that with Smalltalk. I also think that there is some stigma to Smalltalk because it has been around so long and it is still relatively obscure.
I think the BIGGEST difference is that Ruby is much more similar to perl in terms of USEAGE. Smalltalk never got a foothold into the "scripting" languages.
The VM is really cool and I hope ruby will have something similar to it so we can treat everything on our OS that is written in ruby as object in memory space, however until then I simply enjoy Ruby''s terse, short syntax, the ability to just write a tiny script and reuse it later. Ruby got all the advantages of perl and the OOP is much more similar to smalltalk than perl''s OOP hack.
I would go further than Jonke''s answer, and say there are now a large number of languages that have a very strong community, almost enough to suit every taste, and a subset of these have mainstream recognition (ie your manager will let you use them at work as well).
It''s easy to learn the basics of a language, but to actually use it effectively you need to invest enough time to learn the platform and the tools, as well as the syntax and the idioms. IIRC, McConnell claims that it takes about three years to become truly proficient.
Given those things, it''s hard to justify spending a lot of time on languages like LISP and Smalltalk, although they are interesting and perhaps educational to look at.
Interesting perspective from Robert Martin (from RailsConf 2009): "What Killed Smalltalk Could Kill Ruby, Too"
Use whatever makes you more powerful and faster to beat your challenge.
For us , a little in house framework, we built in top of seaside is really our superpower.
I love the RoR community, it has the right attitude. That''s very very valuable. But at the same time, technologically, seaside makes you stronger against more complicated problems.
You can do great seaside web apps using open-source stuff.
dabbledb was a sartup based on seaside and, hey! Avi sold it to twitter in june this year!
I say you don''t need to wait for others to approve your initiative.
Just go for it. Make it done. Show us that works.
You''re not alone. We are on the same boat.