Pregunta

¡Mis preguntas son simples!

  1. ¿Comenzarías a aprender Smalltalk si tuvieras el tiempo? ¿Por qué? ¿Por qué no?
  2. ¿Ya conoces 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 "quot; Smalltalk Light". La segunda razón por la que estoy interesado en Smalltalk es Seaside .

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

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

¿Fue útil?

Solución

Si te gusta Ruby probablemente te gustará Smalltalk. IIRC Seaside se ha portado a la Gemstone VM, que forma parte de sus Gemstone / S OODBMS. Esto tiene un soporte de subprocesos mucho mejor que Ruby, por lo que es un mejor back-end para un sistema de alto 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 agradable. Una vez que lo tienes a tu alrededor (tiende a ser un poco de un choque cultural para las personas que están acostumbradas a C ++ o Java), encontrarás que es un ambiente realmente bueno para trabajar. Incluso un pequeño discurso muy malo como el Los antiguos Digitalk que utilicé son un sistema muy agradable de usar. Muchos de los antiguos tipos de gurú de XP y OO como Kent Beck y Martin Fowler se cortan los dientes en Smalltalk en el día y ocasionalmente se puede escuchar el anhelo de 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ódigo sorprendentemente grande. En un momento dado, se puso de moda en los círculos del mercado financiero, donde la productividad de los desarrolladores y el tiempo de comercialización son bastante importantes. Hasta mediados de la década de 1990, era más o menos el único juego en la ciudad (con la posible excepción de LISP) si quería un lenguaje de alto nivel con soporte comercial adecuado para el desarrollo de aplicaciones.

  • La implementación es fácil: solo tiene que colocar el archivo de imagen en el directorio correspondiente.

  • No es realmente una razón, pero el Gang of Four Book 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 es propietario de los servidores , esto podría no ser un problema.

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

  • Tiende a no jugar bien con los sistemas tradicionales de control de fuentes (al menos desde mediados de los 90, cuando lo usé). Este puede o no ser el caso.

  • Es algo insular y le gusta jugar solo. Python o Ruby están diseñados para integrarse 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, otros sistemas más tradicionales sufren este tipo de insularidad en mayor o menor grado y eso no Parece que no impiden mucho su uso.

Otros consejos

Bueno, ya que me mencionaste por mi nombre, creo que debería hacer el timbre.

Como dije en la 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 realizado la incidencia política de Smalltalk durante los últimos diez meses, puedo ver que realmente está sucediendo. Más clientes están recurriendo a Smalltalk y Seaside, y los proveedores de Smalltalk están trabajando arduamente para captar esta nueva afluencia de atención. Se están planeando conferencias más grandes de Smalltalk. Se están publicando más ofertas 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 también están por ahí.

Editar

Bueno, varios años más tarde, ahora estoy recomendando Dart en su lugar. Es un gran lenguaje originado por Google pero ahora es propiedad de un comité de ECMA. Se ejecuta al lado del servidor en el estilo de node.js, pero también en el lado del cliente en los navegadores modernos mediante el envío a JavaScript. Muchos buenos libros, blogs, canales de ayuda, soporte IDE, pastebin público en vivo . Creo que definitivamente tiene piernas ... lo suficiente como para escribir un curso para enseñarlo en el sitio o en línea, y estoy bastante seguro de que hay un libro o dos en mi obra. Y Gilad Bracha, un Smalltalker de antaño es un importante contribuyente al diseño, por lo que hay una gran cantidad de Smalltalk en Dart.

Smalltalk es un buen lenguaje para aprender, y lo bueno es que solo se necesita un día para hacerlo. Es mucho más que un lenguaje académico. Las personas están construyendo aplicaciones enormes, escalables y replicables que manejan 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 del transporte marítimo .

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

Lo que me convenció fue GemStone. Me gusta mucho el cristal de Gemstone (GemStone, Linux, Apache, Smalltalk, Seaside). La parte asesina de eso es GemStone, que maneja toda la persistencia del objeto para ti, sobre todo sin que pienses en ello. Ver algunas de sus demostraciones y escuchar lo que la gente está haciendo con GemStone restablece mi idea de qué " gran aplicación " quiso decir.

La parte que más me molesta de Rails es el mapeo objeto-relacional. Eso no es nada contra Ruby porque apesta tanto en GLORP (que maneja ActiveRecord for Smalltalk), Perl, o cualquier otra cosa. Asignar objetos a tablas de bases de datos es simplemente 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 una gran piedra (o una tropa de monos) que me quitan de la espalda.

> no se pudo encontrar un entorno de desarrollo de Smalltalk que no costara ambos brazos y una pierna

Google - smalltalk gratis

Cincom Smalltalk, Squeak, GNU Smalltalk

Learning 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 surgió de Smalltalk.

Un obstáculo para aprender Smalltalk es que se trata de un sistema de paso de mensajes con una sintaxis extraña para el control de flujo como:

i < 60
   ifTrue: [ self walk ]

Tiene una biblioteca de clases muy madura que tiene una consistencia que no he visto 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. Al programar Smalltalk, siempre me pregunto cómo se hace en el entorno.

Smalltalk se implementa generalmente 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 le ha dado a Smalltalk un nuevo foco de atención. Es un entorno basado en la continuación que permite la depuración intra-hit y una experiencia de desarrollo de tipo Rich Client sin problemas (el flujo de la aplicación principal se puede diseñar en un solo método). Su integración con script.aculo.us se ha realizado de tal manera que se puede llamar fácilmente desde Smalltalk.

Nigel, una cita que tengo es esta:

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

Lo encontré aquí .

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

Los Smalltalks tienen IDE maravillosos que no querrá perderse una vez que haya superado 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, sin embargo.

saludos

PS: en realidad recomiendo aprender ambos!

No sé Ruby ..

Smalltalk es un lenguaje puro OO. Si siente la necesidad de entender realmente la OO, y no solo la OO simulada de los lenguajes 'OO' más populares (como C ++, Java, etc.), le recomendaría que juegue con smalltalk.

En smalltalk todo es un objeto, con atributos, comportamiento y meta. En las simulaciones tiene tipos de datos que utiliza en sus objetos.

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

No estaría de acuerdo con el póster que cree que usted no usaría Smalltalk para aplicaciones grandes, eso es precisamente donde brilla. Pero también he creado aplicaciones prototipo bastante geniales (en minúsculas) en menos de una semana.

Aprendí OO en ST a partir del 92, increíblemente contento de haberlo hecho. Me dio un fondo real en OO. Pensando en las clases. No hay tipos. ST tiene un énfasis real en la mensajería. Si quieres saber algo, envía un mensaje a un objeto y obtén una respuesta. En mi humilde opinión, el ethos y el IDE realmente te animan a hacer lo correcto con tu acoplamiento y cohesión.

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

Descarga Squeak, encuentra un buen libro y juega. El único inconveniente es que si tu concierto diario usa Java o C #, terminarás deseando poder usar ST. Llegarías a casa antes.

Chris Brooks

Estoy totalmente en tus zapatos. Estoy usando RoR y buscando en Smalltalk land. Aquí hay algunos pros y amp; Los contras me parecen importantes:

Pros:

  • Madura & amp; entorno estable
  • Ciclo de desarrollo rápido
  • te hace pensar más y escribir menos

Cons:

  • requiere un pensamiento diferente
  • Todavía no lo entendí

Es bastante gracioso cómo me enteré de Smalltalk. Fue esta una de las cosas que siguió apareciendo en los resultados de Google al buscar cosas de Lisp y Erlang. Un día lo comprobé y me sorprendí con el entorno agradable de Windows. Pocos momentos después me encontré con Aida / Web framework. Me enganché y comencé a aprender Smalltalk a través del desarrollo web con este marco.

Todavía no estoy del todo allí, pero es tan interesante que no puedo quedarme quieto ... :-) Me estoy divirtiendo de nuevo.

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

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

Sé y uso Smalltalk, tengo alrededor de 15 años, todavía lo mantiene y no recomendaría Smalltalk a un amigo. Por qué no? El empleo es algo bueno de tener y seguir obteniendo. Aunque puede aprender mucho de Smalltalk, no puede convertirlo fácilmente en un empleo remunerado en este día y edad.

Además, parecías estar entusiasmado con Seaside y yo 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 necesario para tener éxito.

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

Esto puede no ser cierto si eres un programador lento.

Me enseñaron Smalltalk en uno de los primeros cursos de Programación Orientada a Objetos de nivel universitario de posgrado (alrededor de 1988). El profesor pensó que lo mejor para comenzar era un " puro " OO langauge, antes de pasar a uno más moderno (hicimos un poco de C ++ al final del semestre).

Según esa medida, es mejor comenzar con OO puro, aunque en estos días tenemos Java & amp; C #, los cuales son " casi puros " OO: lo suficientemente cerca como para que puedas obtener al ignorar las características que no son OO de ellos y limitarte al subconjunto Pure-OO de los idiomas.

Si quieres una mejor comprensión de la Programación Extrema (e incluso Scrum) diría .

Por qué los impacientes programadores de Java necesitan aprender Smalltalk:

http: //www.dafydd. net / archive / 2010 / why-smalltalk-isnt-just-another-language /

He sido ingeniero de software desde hace algunos años. He escuchado que algunas personas mencionan Smalltalk algunas veces, y ciertamente Smalltalk ha existido desde alrededor de 1980, pero es uno de esos idiomas que parece que nunca llegó a la corriente principal del software. Algo así como Objective C, CLIPS, PL / I, etc., algo que quizás hayas escuchado, pero algo en lo que la mayoría de la gente nunca ha programado.

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

¡Absolutamente, aprende Smalltalk! Esto es 2015 y Smalltalk está aumentando de nuevo, 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 reputación de Smalltalk , esto es No es la pequeña conversación de tu padre. Modern Smalltalk es emocionante y prometedor.

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

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

Si puedo obtener las cifras de Gemstone / S como base de datos, también lo consideraré. Así que 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. Trabajarías (y no deberías) con un software que no te gusta tanto tiempo ;-). Tengo la impresión de que Gemstone / S es uno de los " killer " aplicaciones Pero la persistencia de los objetos sigue siendo un campo muy difícil ...

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

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

Es todos los objetos, todo hacia abajo. Esto hace que para un enfoque de trabajo realmente consistente.

Los enteros son instancias de Class Integer. Las cadenas son una colección de objetos de carácter. Las clases son objetos de instancia singleton para la clase que definen.

Las estructuras de control funcionan al enviar mensajes de obtención 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 tarjeta 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 #. Supongo que también es cierto para Python.

Es tan bueno para dejar en claro los conceptos de que una importante universidad del Reino Unido utilizó Smalltalk para capacitar a 5,000 personas al año en informática orientada a objetos.

Squeak 5, acaba de ser lanzado. Ha obtenido importantes aumentos de rendimiento de su nueva máquina virtual Cog / Spur, que cuenta con recolección de basura progresiva.

Pharo 4 tiene un encantador tema de escritorio de aspecto limpio. La próxima versión, Pharo 5, será lanzada pronto. Se moverá al uso de la máquina virtual Cog / Spur, tendrá aproximadamente 5,000 clases en el lanzamiento, y los paquetes adicionales de clases están disponibles en la red a través de la herramienta del navegador de configuración.

Squeak 5 tiene un buen rendimiento incluso en la primera generación de Raspberry Pis, y es casi un 50% más rápido en la nueva Raspberry Pi cero de $ 5. $ 99 te compra una Raspberry Pi 2, pantalla y estuche - ejecutando un IDE completo y completo con todas las funciones.

Se está realizando una investigación de vanguardia en sistemas OO distribuidos y coordinados 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 comerciales en el banco más grande del mundo.

Puede usar Smalltalk como una especie de CoffeeScript superalimentado, escribiendo en Amber Smalltalk y transpilando 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, y en cualquier lugar para MacOS, Windows y Linux. (Posiblemente RiscOS, también).

Dolphin Smalltalk está orientado firmemente a la apariencia de Windows nativa, y le permite compilar .exes cerrados de su trabajo terminado para distribuirlo 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 masivamente extensible. (¿Mencioné que Pharo ahora tiene 5,000 clases, en comparación con las 3,000 de Squeak? Pharo es un tenedor de Squeak 3.9)

** Hay una guía de instrucciones 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 herramienta madura maravillosa, al igual que el marco AidaWeb más tradicional.

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 Pickaxe y la referencia de la biblioteca a mi lado). Me ayudó enormemente con Java y con Xerox Moo-code.

Acabo de volver a escribir aplicaciones para controlar, administrar y distribuir aplicaciones móviles receptivas y multiplataforma masiva.

Espero que pronto volveré a escribir mis aplicaciones móviles JavaScript usando Amber, también.

Realmente no sé lo que estás buscando.

Si está buscando un idioma diferente para escribir, creo que dependería 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 es que las aplicaciones no son Smalltalk.

Si estás buscando aprender las ideas detrás de Ruby, esta podría ser una muy buena jugada. No tengo nada cuantitativo, pero siempre me sentí mejor con el uso de herramientas (como los sistemas de lenguaje) si supiera algo más que las herramientas, si me doy cuenta de las ideas detrás de ellas o cómo funcionaron.

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

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

Sí, estoy interesado en ello. Intenté comenzar una vez, pero no pude encontrar un entorno de desarrollo de Smalltalk que no costara ambos brazos y una pierna.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top