smalltalk seaside

¿Comenzarías a aprender Smalltalk?



seaside (21)

Mis preguntas son simples!

  1. ¿Comenzarías a aprender Smalltalk si tuvieras tiempo? ¿Por qué? Por qué no?
  2. ¿Ya conoces a Smalltalk? ¿Por qué recomendarías Smalltalk? Por qué no?

Personalmente soy un programador de Ruby on Rails y realmente me gusta. Sin embargo, estoy pensando en Smalltalk porque leo varios blogs y algunas personas llaman a Ruby algo así como "Smalltalk Light". La segunda razón por la que estoy interesado en Smalltalk es Seaside .

Tal vez alguien ha hecho la misma transición antes?

EDITAR: En realidad, lo que más me entusiasmó de Smalltalk / Seaside es el siguiente Episodio de WebDevRadio: Episodio 52: Randal Schwartz on Seaside (entre otras cosas)


¡Absolutamente, aprende Smalltalk! Esto es 2015 y Smalltalk está en aumento nuevamente, gracias a Pharo . Pharo es GRATIS. Pharo está evolucionando rápidamente en una poderosa herramienta empresarial. En la versión 4.0, y pronto será 5.0, ¡ha madurado mucho en solo cuatro años!

Luego está Amber , que es Smalltalk para la web. También es GRATIS y evoluciona rápidamente.

A pesar de la reputación de Smalltalk , este no es Smalltalk de su padre. Modern Smalltalk es emocionante y prometedor.

Es cierto que los trabajos de Smalltalk no son (todavía) abundantes. Pero si una cantidad suficiente de ustedes se agrega a una nueva ola de Smalltalkers, entonces la industria se adaptará a ella y veremos una adopción más amplia de Smalltalk en los negocios. La pregunta es, ¿tienes la visión?


¡No! Si realmente comienzas a aprenderlo, es posible que no quieras programar en otra cosa nunca más.

Esto puede no ser cierto si eres un programador de lisp.


1) ¡Sí! Siempre es bueno aprender un idioma. Si va a aprender un idioma, conviértalo en un lenguaje poderoso e influyente que se puede aprender fácil y rápidamente.

Smalltalk sigue siendo un idioma y entorno preeminente para el aprendizaje de los conceptos OO.

Son todos los objetos, todo el camino hacia abajo. Esto permite un enfoque realmente coherente para trabajar.

Los enteros son instancias de entero de clase. Las cadenas son una colección de objetos de carácter. Las clases son objetos instancia únicos para la clase que definen.

Las estructuras de control funcionan enviando mensajes get a instancias de Class Boolean.

Incluso los métodos anónimos (bloques de código, también conocidos como bloques) son objetos.

Todo se hace enviando un mensaje a un objeto. La sintaxis se puede ajustar en una postal.

La claridad de los conceptos y su implementación en Smalltalk significa que puede desarrollar formas de pensamiento que se transfieren directamente a Java, Ruby y C #. Espero que sea cierto para Python, también.

Es tan bueno para aclarar los conceptos que una importante Universidad de Reino Unido usó Smalltalk para capacitar a 5,000 personas al año en computación orientada a objetos.

Squeak 5, acaba de ser lanzado. Ha obtenido importantes aumentos en el rendimiento de su nueva máquina virtual Cog / Spur, que se caracteriza por la recolección progresiva de basura.

Pharo 4 tiene un tema de escritorio bonito y limpio. La próxima versión, Pharo 5, se lanzará pronto. Pasará a utilizar la máquina virtual Cog / Spur, tendrá alrededor de 5.000 clases en la versión, y paquetes adicionales de clases están disponibles en la red a través de la herramienta del navegador de configuración.

Squeak 5 funciona incluso en Raspberry Pis de primera generación, y es casi un 50% más rápido en el nuevo $ Raspberry Pi de $ 5. $ 99 le compra un Raspberry Pi 2, pantalla y estuche - ejecuta un IDE maduro, completamente funcional.

La investigación de vanguardia se está llevando a cabo en sistemas OO coordinados y distribuidos en Smalltalk (por ejemplo, Naiad y Spoon).

Algunas de las bases de datos corporativas más grandes del mundo se ejecutan en Smalltalk, incluido el seguimiento del 60% de los contenedores de envío del mundo y los sistemas de comercio en el banco más grande del mundo.

Puede utilizar Smalltalk como una especie de CoffeeScript superpotente, escribir en Amber y transpilar a JavaScript, ejecutándose en el navegador.

Squeak, Pharo y Amber son idiomas y entornos libres, de código abierto y con licencia abierta.

Squeak y Pharo proporcionan servicios de escritura única, ejecutables en cualquier lugar para MacOS, Windows y Linux. (Posiblemente RiscOS, también).

Dolphin Smalltalk está dirigido firmemente a la apariencia nativa de Windows, y le permite compilar los archivos .exex cerrados de su trabajo finalizado para su distribución a los usuarios finales. El desarrollo adicional de Dolphin por parte del proveedor se ha detenido, pero es completamente funcional y, como todos los Smalltalks, está diseñado para ser extensible de forma masiva. (¿Mencioné que Pharo ahora tiene 5.000 clases, en comparación con 3.000 de Squeak? Pharo es una bifurcación de Squeak 3.9)

** Hay una guía práctica para instalar e iniciar Squeak, Amber, Pharo, Cuis y Dolphin en: ** http://beginningtosmalltalk.blogspot.co.uk/2015/11/how-to-get-smalltalk-up-and-running.html

El marco web de Seaside se ejecuta en Squeak y en Pharo. Es una maravillosa herramienta madura, como es el marco más tradicional de AidaWeb.

VisualAge, VisualWorks y Gemstone proporcionan sistemas robustos de nivel empresarial. Gemstone proporciona una base de datos de objetos infinitamente escalable con transacciones y persistencia.

2) Sí, ya lo uso.

Lo aprendí a través de la Open University, e inmediatamente fui productivo en Ruby (una copia del libro de Pico y la referencia de la biblioteca a mi lado). Me ayudó enormemente con Java y con Xerox Moo-code.

Acabo de volver para escribir aplicaciones para controlar la administración y distribución de aplicaciones móviles masivas y multiplataforma.

Espero que pronto vuelva a escribir también mis aplicaciones móviles de JavaScript con Amber.


Aprender Smalltalk le dará una base en el desarrollo de software orientado a objetos desde la perspectiva del hombre que inventó OO (Alan Kay). La idea de un entorno de ventanas superpuestas vino de Smalltalk.

Un obstáculo para aprender Smalltalk es que es un sistema de transmisión de mensajes con una sintaxis extraña para controlar el flujo como:

i < 60 ifTrue: [ self walk ]

Tiene una biblioteca de clase muy madura que tiene una coherencia que no he visto en demasiados lugares. La biblioteca de clases en todos los entornos (incluso Smalltalks comerciales) tiene una fuente disponible que le permite aprender de los maestros del idioma. Cuando programo Smalltalk, siempre me pregunto cómo se hace en el entorno.

Smalltalk generalmente se implementa en una imagen que es un entorno en vivo para todos los objetos en su sistema.

El depurador interactivo realmente separa Smalltalk de Ruby.

Seaside es el marco de desarrollo web y ha dado a Smalltalk un nuevo centro de atención. Es un entorno basado en la continuación que permite la depuración dentro de los hits y una experiencia de desarrollo de tipo de cliente enriquecido sin problemas (el flujo de aplicaciones principal se puede diseñar en un único método). Su integración con script.aculo.us ha sido hecha de tal manera que se puede llamar fácilmente desde Smalltalk.


Bueno, ya que me mencionaste por mi nombre, siento que debería hablar.

Como dije en esa entrevista de podcast, y como lo he demostrado repetidamente en mi blog en http://MethodsAndMessages.vox.com/ , este es " el año de Smalltalk ". Y después de haber hecho la defensa de Smalltalk durante los últimos diez meses, puedo ver que realmente está sucediendo. Cada vez más clientes recurren a Smalltalk and Seaside, y los vendedores de Smalltalk trabajan arduamente para captar esta nueva afluencia de atención. Se están planeando conferencias de Smalltalk más grandes. Se publican más anuncios de trabajo. Se están haciendo más publicaciones en el blog.

Si recurres a Smalltalk hoy, no estás solo. Hay muchos otros que están allí también.

Editar

Bueno, varios años después, ahora estoy recomendando a Dart . Es un lenguaje excelente originado por Google, pero ahora pertenece a un comité de ECMA. Se ejecuta en el servidor en el estilo node.js, pero también en el lado del cliente en los navegadores modernos al transpilar a JavaScript. Muchos buenos libros, blogs, canales de ayuda, soporte IDE, público en vivo pastebin . Creo que definitivamente tiene piernas ... lo suficiente para escribir el material didáctico para enseñarlo en el sitio o en línea, y estoy bastante seguro de que hay uno o dos libros en mis manos. Y Gilad Bracha, un Oldtalker antiguo, es uno de los principales contribuyentes al diseño, por lo que hay un montón de Smalltalk en Dart.


Estaría en desacuerdo con el afiche que considera que no usaría Smalltalk para aplicaciones grandes, es precisamente allí donde brilla. Pero también he creado prototipos bastante geniales (nota minúscula) en menos de una semana.

Aprendí OO en ST a partir de 92, increíblemente contenta de haberlo hecho. Me dio un fondo real en OO. Pensando en clases Sin tipos. ST tiene un énfasis real en la mensajería. Si quiere saber algo, envíe un mensaje a un objeto y obtenga una respuesta. En mi humilde opinión, el ethos y el IDE realmente lo aliento a hacer lo correcto con su acoplamiento y cohesión.

En mi trabajo diario en Java, estoy atascado con archivos, genéricos, IDE como eclipse que son órdenes de magnitud menos productivas que cualquier ST IDE. Estaba usando ST la única vez que terminé un desarrollo antes de lo previsto. De hecho, fue muy productivo, y obtuvimos tanta reutilización que tuve que mudarme a otro proyecto, ¡ya que no tenía nada que hacer! (Ok, tal vez podría haber pasado tiempo aprendiendo a estimar ...)

Descargue squeak, encuentre un buen libro y juegue. El único inconveniente es que si su función de día está usando Java o C #, terminará deseando poder usar ST. Llegarías a casa más pronto

Chris Brooks


Este hilo se ha vuelto muy real para mí. Estoy planeando una migración de software a una aplicación web. Es un software basado en una base de datos. Estoy especialmente revisando las alternativas 1) Rails 2) Seaside

Si puedo obtener las cifras de Gemstone / S como base de datos, lo consideraré también. Entonces para mí significa que tengo que aprender Smalltalk (mejor) que antes. Porque podría ser que sea mi trabajo durante los próximos 15 años. Deberías (y no deberías) trabajar con un software que no te gusta por tanto tiempo ;-). Tengo la impresión de que Gemstone / S es una de las aplicaciones "asesinas". Pero la persistencia de los objetos sigue siendo un campo muy difícil ...


Estoy totalmente en tus zapatos. Estoy usando RoR y buscando en la tierra de Smalltalk. Aquí hay algunos pros y contras que considero importantes:

Pros:

  • Ambiente maduro y estable
  • Ciclo de desarrollo rápido
  • Te hace pensar más y escribir menos

Contras:

  • Requiere pensamiento diferente
  • Todavía no lo entendía del todo

Es bastante gracioso cómo llegué a saber sobre Smalltalk. Fue esta una cosa que se mantuvo apareciendo en los resultados de Google cuando buscaba cosas de Lisp y Erlang. Un día lo verifiqué y quedé impresionado con el agradable entorno de Windows. Pocos momentos después encontré el framework Aida / Web. Me enganché y comencé a aprender Smalltalk a través del desarrollo web con este marco.

Todavía no está del todo allí, pero es tan malditamente interesante que no me puedo sentar quieto ... :-) Me estoy divirtiendo nuevamente.


He sido ingeniero de software durante varios años. He escuchado que la gente menciona Smalltalk algunas veces, y ciertamente Smalltalk ha existido desde aproximadamente 1980, pero es uno de esos idiomas que nunca pareció entrar en el mainstream del software. Algo así como Objective C, CLIPS, PL / I, etc., algo de lo que quizás haya oído hablar, pero algo en lo que la mayoría de la gente nunca ha programado.

Probablemente no me tome el tiempo de aprender Smalltalk a menos que lo necesite para un trabajo en particular. Hace unos años observé algunos tutoriales y ejemplos de Smalltalk, y parece que tiene algunas ventajas claras para ciertos aspectos de la programación de OO (como el concepto del mensaje parece genial). Pero lamentablemente, no es la corriente principal, y no parece estar ganando mucho impulso.


Me enseñaron Smalltalk en uno de los primeros cursos universitarios de Object-Orient Programming de nivel universitario (alrededor de 1988). La maestra pensó que era mejor comenzar con un lenguaje OO "puro", antes de pasar a uno más moderno (hicimos un poco de C ++ al final del semestre).

Con esa medida, es mejor comenzar con OO puro, aunque en estos días tenemos Java & C #, que son OO "casi puros", lo suficientemente cerca como para que puedas pasar por alto las características que no son de OO, y limitándose al subconjunto Pure-OO de los lenguajes.


Nigel, una cita que tengo es esta:

Aunque ahora hace mucho tiempo que no hice nada, nomino a Smalltalk, todavía no me he encontrado con nada parecido para poder transferir pensamientos al código de la computadora. No es solo el lenguaje: es el maravilloso entorno de navegación, las bibliotecas y la cultura de escribir código claro y bien diseñado tan rápido como cualquier otra cosa puede producir espaguetis. Cuando los participantes de JavaOne ensalzaron que Java era mucho más productivo que cualquier otra cosa, necesitaba una bolsa de papel marrón. Bueno, volviendo a ordenar mis classpaths ... - Martin Fowler (Software Development Magazine, enero de 2001)

Lo encontré aquí .


No comenzaría a aprender si tuviera tiempo. Por qué no? Porque sería más productivo y lucrativo financieramente aprender C # o Java.

Por otro lado, si eres un aficionado y te gustaría hacer una excavación arqueológica, te sugiero que dediques un tiempo a mirar qué, cuándo, por qué y cómo de smalltalk investigando a Alan Kay. Una historia fascinante y una persona increíble (después de todo, ganó el Premio Turning). Entonces tal vez juegue con chirrido un poco para tener una idea del idioma. Después de esto, es posible que tenga un nuevo respeto / comprensión de bloques, cierres y principios orientados a objetos.

Conozco y uso Smalltalk, lo tengo desde hace 15 años, aún lo mantengo , y no recomendaría Smalltalk a un amigo. Por qué no? El empleo es algo bueno tener y seguir recibiendo. Aunque puede aprender mucho de Smalltalk, no puede convertirlo fácilmente en un empleo remunerado en este día y edad.

Además, parecía estar entusiasmado con Seaside y asumiría la asociación Seaside / GemStone. He usado GemStone durante bastante tiempo y los dos juntos son muy atractivos. Espero que puedan obtener la cuota de mercado y el impulso necesarios para tener éxito.


No sé Ruby ...

Smalltalk es un lenguaje OO puro . Si sientes la necesidad de comprender realmente OO, y no solo el OO simulado de los lenguajes ''OO'' más populares (como C ++, Java, etc.), entonces te recomendaría que juegues con smalltalk.

En smalltalk todo es un objeto, con atributos, comportamiento y meta. En las simulaciones tienes tipos de datos que usas en tus objetos.

Yo diría que juega con eso, solo te beneficiarás.


Realmente no sé lo que estás buscando.

Si está buscando un idioma diferente para escribir, creo que eso dependerá en gran medida de las bibliotecas disponibles. No conozco ni a Ruby ni a Smalltalk, pero parece probable que la forma más eficiente de escribir Ruby on Rails: tipos de aplicaciones no sea Smalltalk.

Si estás buscando aprender las ideas detrás de Ruby, este podría ser un muy buen movimiento. No tengo nada cuantitativo, pero siempre me sentí mejor sobre el uso de herramientas (como los sistemas de lenguaje) si sabía más que solo las herramientas, si conocía las ideas detrás de ellas o cómo funcionaban.

Si desea aprender diferentes tipos de lenguajes orientados a objetos, es posible que desee aprender Smalltalk (si difiere significativamente de Ruby), algo así como Java o C ++, y quizás también el Common Lisp Object System.

Si solo quieres aprender algo diferente, Smalltalk bien puede ser una buena opción. También sugeriría Common Lisp, y otras personas sin duda tendrán otras sugerencias (¿pueden obtener un buen sistema Forth hoy en día?).


Recomiendo a todos que aprendan Lisp (Scheme) o Smalltalk.

Smalltalks tiene maravillosos IDEs que no querrás perderte una vez que superas el choque cultural. Y sí, hay más de uno gratis: Squeak, Dolphin, Smalltalk / X y Visualworks (No Comercial).

Lisp puede ser incluso más limpio en su base matemática.

Saludos

PD: en realidad, ¡recomiendo aprender ambos!


Sí, estoy interesado en eso. Intenté comenzar una vez, pero no pude encontrar un entorno de desarrollo Smalltalk que no costara tanto para los brazos como para las piernas.



Si te gusta Ruby, es probable que te guste Smalltalk. IIRC Seaside ha sido portado a Gemstone VM, que es parte de su Gemstone / S OODBMS. Esto tiene mucho mejor soporte de subprocesos que Ruby, por lo que es un mejor back-end para un sistema de gran volumen. Esta podría ser una buena razón para echarle un vistazo de cerca.

Razones para aprender Smalltalk:

  • Es un entorno de programación realmente, muy agradable. Una vez que lo haya entendido (tiende a ser un shock cultural para las personas acostumbradas a C ++ o Java), encontrará que es un muy buen entorno para trabajar. Incluso un pequeño y muy cutre como el Old Digitalk que usé es un sistema notablemente agradable de usar. Muchos de los antiguos gurús de XP y OO como Kent Beck y Martin Fowler se mordieron el culo en Smalltalk en el día y ocasionalmente se pueden escuchar anhelando los buenos viejos tiempos en público (Gracias a Frank Shearer por la cita, +1) - El desarrollo ágil se originó en esta plataforma.

  • Es una de las plataformas de desarrollo más productivas de la historia.

  • Existen varias implementaciones maduras y existe una base de códigos sorprendentemente grande. En un momento dado, se puso bastante de moda en los círculos de los mercados financieros, donde la productividad de los desarrolladores y el tiempo de lanzamiento al mercado es bastante importante. Hasta mediados de la década de 1990, era más o menos el único juego de la ciudad (con la posible excepción de LISP) si quería un lenguaje de alto nivel compatible con el mercado que fuera adecuado para el desarrollo de aplicaciones.

  • La implementación es fácil: solo deje caer el archivo de imagen en el directorio apropiado.

  • No es realmente una razón, pero el libro de Gang of Four usa Smalltalk para algunos de sus ejemplos.

Razones para no aprender Smalltalk:

  • Es algo así como un nicho de mercado. Puede tener problemas para encontrar trabajo. Sin embargo, si está produciendo algún tipo de aplicación .com en la que posee los servidores, esto podría no ser un problema.

  • Muchos lo ven como un sistema heredado. Hay relativamente poco desarrollo en la plataforma (aunque Seaside parece estar impulsando un poco el renacimiento).

  • Tiende a no jugar muy bien con los sistemas de control de fuente tradicionales (al menos a partir de principios de los 90 cuando lo usé). Esto puede o no ser el caso.

  • Es algo insular y le gusta jugar solo. Python o Ruby están diseñados para una integración desde cero y tienden a ser más promiscuos y, por lo tanto, más fáciles de integrar con software de terceros. Sin embargo, varios otros sistemas más convencionales sufren de este tipo de insularidad en mayor o menor grado y eso no parece impedir mucho su uso.


Smalltalk es un buen lenguaje para aprender, y lo mejor es que solo lleva un día hacerlo. Es mucho más que solo un lenguaje académico. La gente está construyendo aplicaciones enormes, escalables y replicables manejando miles de millones de dólares. Simplemente no hablan mucho de eso. Ver, por ejemplo, GemStone y Orient Overseas Container Lines: Un estudio de caso de la industria naviera .

Seaside es una buena razón para aprender Smalltalk, pero no creo que lo encuentres en órdenes de magnitud mejor que Rails.

Lo que me convenció fue GemStone. Me gusta mucho el GLASS de Gemstone (GemStone, Linux, Apache, Smalltalk, Seaside). La parte más importante de eso es GemStone, que maneja toda la persistencia de objetos principalmente sin que usted lo piense. Al ver algunas de sus demos y escuchar lo que las personas están haciendo con GemStone, reinicié mi idea de lo que significaba "gran aplicación".

La parte que más me molesta acerca de Rails es el mapeo relacional de objetos. Eso no es nada en contra de Ruby porque apesta tanto en GLORP (que maneja ActiveRecord para Smalltalk), Perl o cualquier otra cosa. Asignar objetos a las tablas de la base de datos es doloroso. Con GemStone, el pensamiento sobre la base de datos desaparece, por lo que el trabajo con la base de datos también desaparece. Es como si me quitaran una piedra enorme (o una tropa de monos) de mi espalda.



> no se pudo encontrar un entorno de desarrollo Smalltalk que no costara ni brazos ni piernas

Google - Smalltalk gratis

Cincom Smalltalk, Squeak, GNU Smalltalk