tutorial example ejemplos descargar programming-languages oop smalltalk

programming-languages - example - smalltalk syntax



¿Qué tiene de especial Smalltalk? (12)

Acabo de comenzar a reavivar mi interés en Smalltalk, y en mi opinión, hay algunas cosas convincentes que son especiales acerca de Smalltalk:

  • Entorno de desarrollo altamente productivo
  • Soporte integrado para metodologías de programación Agile / Extreme
  • Modelo de objeto "puro"
  • Marco de gráficos fácil de usar

Ninguno de estos lo hace especialmente útil para las personas que no están en el negocio de desarrollo de software. Mi primera exposición fue cuando vi una interfaz de usuario para un dispositivo embebido en una PC usando Smalltalk. Esto permitió que la interfaz de usuario fuera modificada y probada muy rápidamente, y cuando se completó, proporcionó a los desarrolladores integrados una "especificación ejecutable" que era mucho más precisa que cualquier documento. Me sorprende que no haya visto esta técnica con mucha más frecuencia de lo que he observado en mis viajes durante los últimos 20 años.

Usar Smalltalk como herramienta de creación de prototipos es mi principal interés: creo que dado un nuevo problema, diferentes enfoques para resolverlo pueden ser probados y validados de manera rápida y fácil en un entorno Smalltalk, y una vez que se encuentre la solución deseada, debería ser relativamente Mecánico para convertirlo a Java / C ++ / C # etc. etc. De hecho, para tipos repetitivos de cosas, podría ser posible usar Smalltalk para generar código para partes de la solución en algún otro idioma de destino.

En cada publicación técnica, y también en este sitio, las personas siempre comparan los lenguajes OO con Smalltalk . Mi experiencia es en Java: ¿es tan importante que Smalltalk lo estudie?


Estoy de acuerdo con los demás. No estoy seguro si es importante per se, pero es COOL (imho).

Me encanta que no haya bucles o condicionales en el idioma. If-then-else es un mensaje enviado a un objeto booleano. Los objetos de tipo True hacen una cosa, los objetos de tipo False hacen otra. (Sí, True y False son subtipos de Boolean, con un solo valor cada uno, verdadero y falso, respectivamente).

Comienza siendo algo contra-intuitivo, pero te da una visión muy interesante y profunda de cómo debería funcionar la programación OO ...


La otra cosa sobre SmallTalk es que sus ex alumnos incluyen Kent Beck y Ward Cunningham. Su trabajo con SmallTalk generó pruebas automatizadas de xUnit , patrones de diseño de software , tarjetas CRC y otras prácticas que se incorporaron a XP / Agile, etc. Por lo tanto, podría argumentarse que SmallTalk ha sido un contribuyente importante al panorama de la programación moderna.


No solo fue uno de los primeros, Smalltalk sigue siendo un parangón del diseño de lenguaje OO. Los lenguajes más populares que vinieron después, C + +, Java e incluso Objective-C, todos tienen una orientación a objetos más primitiva y son más restrictivos que el antiguo y bueno Smalltalk. Smalltalk tenía objetos penetrantes de primera clase, un gran soporte para la introspección en el tiempo de ejecución, el uso muy natural de la tipificación de patos y cierres que funcionaban mejor de lo que he visto en cualquier lenguaje no funcional. Quiero decir, estamos hablando de un lenguaje que no tenía estructuras de control nativas (si, mientras, etc.) pero fue capaz de crearlas fuera de su sistema de objetos de una manera que funcionó a la perfección. ¿Cuan genial es eso?

No recomendaría Smalltalk para cualquier desarrollo de aplicaciones de escritorio intensivo en estos días (simplemente no hay una implementación viable de IMO), pero si quiere ver cómo se suponía que fuera OO y tal vez recoger algunas ideas que pueda usar en sus aplicaciones , Smalltalk es un gran lugar para mirar.


Pasé unos 5 minutos en una presentación en una conferencia el mes pasado sobre la historia y la influencia de Smalltalk. Vea el desarrollo basado en imágenes con Smalltalk . Uno de los conceptos más extraños para los programadores de hoy es el desarrollo "basado en imágenes". Hay algunas buenas analogías, incluyendo un DBMS y una hoja de cálculo.


Sí, Smalltalk es tan importante que debes estudiarlo. ¿Por qué? Puede comprender la programación orientada a objetos en forma pura y simple. Lo que la gente olvida es que Smalltalk-80 "Blue Book" tiene solo unas 90 páginas dedicadas al idioma, el lenguaje es así de simple. Las otras 300 páginas hablan sobre la jerarquía de clases predefinida, que es una obra maestra de diseño para un lenguaje basado en clases y orientado a objetos que usa herencia única. Obtendrás una comprensión mucho más profunda de los objetos (por ejemplo, las clases son objetos, y tienen metaclases, y así sucesivamente hasta el infinito ... excepto que el nudo está cuidadosamente vinculado para mantener el sistema finito) de lo que obtendrías al estudiar un lenguaje híbrido como Java o C ++. Smalltalk importa no solo por su historia sino por su simplicidad:

  • Lo suficientemente simple para que pueda entender todo el idioma y las bibliotecas

  • Muestra una idea (los objetos son todo lo que necesita) empujada a su extremo lógico

¡Todos tienen algo que aprender de Smalltalk!


Sí. Descarga la imagen de un clic del mar , comienza a usarla con el tutorial de James Foster y aprenderás al menos:

  • cómo deberían construirse las aplicaciones web
  • cómo se supone que funciona la depuración

Si solo conoce un lenguaje orientado a objetos, debería considerar aprender un segundo, un tercero y un cuarto para obtener una perspectiva más amplia de la programación con objetos. Aprender Smalltalk estirará tu cerebro porque muchos de los conceptos familiares a los que estamos acostumbrados en otros idiomas (por ejemplo, if-then-else, for (;;), while (), etc.) no están en Smalltalk. Hay equivalentes, obviamente, pero Smalltalk hace las cosas de manera diferente, y aprender sobre las diferentes formas de hacer las cosas siempre es una buena idea.

Buena suerte.


Smalltalk es uno de los primeros dos lenguajes originales de OOP, el otro es Simula-67. En consecuencia, hay dos familias grandes: el modelo estáticamente estático centrado en la invocación de métodos, pionero de Simula (C ++, Java, C # pertenecen todos) y el modelo de tipado dinámico centrado en el paso de mensajes, iniciado por Smalltalk (Python, Ruby pertenecen aquí )

Hoy en día, Smalltalk no es particularmente importante por sí solo, hay algunas personas que todavía lo usan para escribir cosas, pero definitivamente no es la corriente principal. Sin embargo, aprenderlo le dará una idea de cómo y por qué evolucionó OOP.


Smalltalk fue uno de los primeros lenguajes orientados a objetos (OO) (con otros como Simula y Eiffel ) y puede decirse que es extremadamente "puro" en un sentido OO:

  • Todo es un objeto y los objetos solo se comunican a través del envío de mensajes
  • Sin primitivas (sin int , boolean , etc.)
  • Sin estructuras de control (no for , while , if , etc.) Suena imposible pero es verdad!
  • Sin estática

También fue pionera en otras cosas, ahora comunes:

  • la máquina virtual (y compilación JIT)
  • Depuración por inspección
  • Código de ejecución "Hotswapping"
  • el IDE moderno
  • Cierres
  • Pato escribiendo
  • Arquitectura Modelo-View Controller (MVC) para UI
  • Desarrollo basado en pruebas (TDD) y metodología ágil

Y hay otras cosas conectadas con Smalltalk que realmente no llegaron a la corriente principal:

  • Sistema basado en "imagen" en lugar de basado en archivos.
  • Bases de datos orientadas a objetos

Y es justo decir que la API de colecciones de Java y la API de colecciones de apache-commons están muy influenciadas por Smalltalk.

No diría que debe aprender Smalltalk per se , pero una familiaridad con los fundamentos de estas características (ahora presente en muchos otros idiomas) es seguramente una ventaja para usted.

Tenga en cuenta que actualmente smalltalk sobre el idioma, que originalmente se concibió como un lenguaje educativo (es decir, dirigido a niños) por su creador, Alan Kay. Ya no es particularmente usado. Eso no quiere decir que no se use. JPMorgan, por ejemplo, tiene un gran sistema de administración de riesgos de derivados exóticos escrito en él.


Smalltalk tiene muchas innovaciones brillantes, cosas que hoy damos por sentadas, que incluyen:

  • siendo el primer IDE
  • proporcionar soporte programático para una GUI con un mouse Si aprendes la programación de GUI de Smalltalk, realmente habrás entendido MVC correctamente.
  • siendo construido a partir de un pequeño número de ideas poderosas que funcionan juntas muy bien
  • La manera de Smalltalk es no chocar con un comportamiento inesperado, es adaptarse . Si envía un mensaje a un objeto que no lo comprende, aparece el depurador y lo invita a escribir ese método ... por lo que brinda un excelente soporte para el desarrollo incremental .
  • El IDE, la aplicación que está escribiendo y sus datos son todos parte del mismo sistema, por lo que puede escribir sus propias herramientas y depurar instrumentación mucho más fácilmente.
  • El conjunto de herramientas TDD en Smalltalk es mejor que cualquier otro idioma (ver a continuación).
  • Squeak Smalltalk tiene bastante investigación de diseño de vanguardia:
    • la interfaz de usuario mórfica : puede familiarizarse con el concepto de "vida"
    • el marco web costero: conozca qué es un servidor de continuación y cómo es radicalmente diferente
    • Squeak tiene una fuerte conexión con el proyecto de software OLPC (una laptop por niño) y podría tener una gran influencia en el mundo.
    • Descubra qué es un "rasgo" ...
    • Juega con el entorno inmersivo radical 3D llamado Open Croquet.
  • Debido a que Smalltalk es un lenguaje más pequeño, más simple y más consistente, con su propio entorno integrado, es un lugar mucho menos confuso para comenzar a enseñar OOP . Las personas que toman esta ruta terminan siendo mejores programadores Java, Ruby y C # porque pueden aprender OOP básico sin todas las incoherencias desordenadas de los lenguajes principales.
  • Algunos Smalltalks comerciales tienen asombrosos entornos de bases de datos OO distribuidas en varios nodos . Estoy pensando en Gemstone.
  • ¿Desea saber la diferencia entre Model-View-Controller y Model-View-Presenter ? Vea Dolphin Smalltalk ...

La razón más importante para aprender Smalltalk hoy es que la programación extrema y el scrum se inventaron en la comunidad Smalltalk ... y el estilo altamente interactivo de programación que experimentas en Smalltalk es más simple, más potente y directo que cualquier cosa que puedas hacer con Java o C # o Ruby ... y realmente no puedes entender qué tan bien pueden funcionar los métodos ágiles hasta que hayas intentado hacer una programación extrema en Smalltalk . Pocos idiomas (de todos modos, no convencionales) tienen un conjunto de características comparable.

... para entender realmente qué TDD puede ser, necesitas usar SUnit. JUnit simplemente te muestra dónde fallaron tus pruebas. SUnit en realidad le permite hacer clic en el depurador en el punto donde falló la prueba y ver los objetos reales y cómo están conectados para que pueda ver, vivir en el depurador cómo falló el código y arreglarlo allí mismo.


Solo dos comentarios:

  1. Smalltalk no es un objeto "orientado", son objetos reales, solo objetos y mensajes en el entorno.

  2. Smalltalk no es un lenguaje, es un entorno que tiene un lenguaje (del mismo nombre), pero la mayor parte de la "magia" aquí es gracias al entorno (la imagen).