¿Es inteligente comenzar a aprender Smalltalk como un estudiante de CS?

Escribí un artículo que explica por qué es inteligente aprender Smalltalk: cómo aprender Smalltalk puede mejorar sus habilidades como programador.

Smalltalk es la mejor manera de aprender programación orientada a objetos (OOP), el paradigma de programación más utilizado en toda la industria de TI. ¿Por qué? Debido a que Smalltalk, en virtud de su objeto “pureza”, destila la POO a sus conceptos esenciales básicos sin todo el extra que los lenguajes Java, C ++, Python y Ruby imponen al principiante. La programación es bastante difícil como es. ¿Por qué hacerlo más difícil de lo que tiene que ser?

Si bien Smalltalk no es una excelente opción vocacional porque no se usa tan comercialmente como los lenguajes “principales” y, por lo tanto, los trabajos de programación son más difíciles de obtener (¡pero no imposible!), Estudiar CS no debe centrarse únicamente en el empleo. Un estudiante de CS debe esforzarse por aprender tanto como sea posible, y de la mejor manera posible, sin una actitud mercantil.

Además, no hay inconveniente para aprender Smalltalk. Una vez que haya aprendido a programar de la manera correcta, elegir un segundo o tercer idioma (como Java, Python o C ++) es bastante sencillo. Los mejores programadores en la industria son pesadamente políglotas.

Incluso si ya conoce Java y C ++, es posible que no aprecie la POO como se debe entender. Smalltalk le dará una perspectiva única que no se puede encontrar en ningún otro idioma. Ese tipo de sabiduría no tiene precio.

Sí por 2 razones muy grandes

  1. te hará un programador OO mucho mejor
  2. Es un lenguaje muy útil para aprender.

Vamos a tomar (1). Smalltalk es el lenguaje orientado a objetos de primera clase. La programación orientada a objetos apareció por primera vez en el lenguaje de programación Simula y luego se ramificó en dos estilos a) El estilo OO basado en prototipos inventado por el lenguaje de programación Self b) El estilo OO basado en clases inventado por Smalltalk

Pero Smalltalk no solo es el primero, también es el mejor, principalmente porque fue diseñado desde el primer día con OO en mente con mucho cuidado. Smalltalk ha tomado muchas de las cosas de Lisp, una de ellas fue la sintaxis mínima. En Smalltalk, todo es un objeto con una excepción de alrededor de 6 palabras clave, dependiendo de la implementación que esté utilizando, puede demostrar la sintaxis completa del lenguaje, incluidas algunas bibliotecas básicas (condiciones, bucles, etc.) en menos de 10 líneas de código.

Si las condiciones, para los bucles y mucho más, están acostumbrados a formar parte de la sintaxis de un lenguaje, no son más que objetos en Smalltalk.

Por lo tanto, OO es diferente a otros idiomas, no es otra herramienta o característica, sino el núcleo del lenguaje.

Esto permite una gran flexibilidad en la expresión de abstracciones dentro del código, algo en lo que Smalltalk es mejor.

Sin embargo, a diferencia de otros idiomas, el objetivo no es OO, es el medio para llegar al fin, por lo que Smalltalk viene con un montón de técnicas OO que será difícil encontrar en otros lenguajes de programación.

Creo que el mejor libro para escribir sobre OOP es este

Besttalk Best Practice Patterns: Kent Beck: 9780134769042: Amazon.com: Libros

Hay muchas ideas asombrosas que se pueden aplicar fácilmente a otros idiomas. Esto también es la ventaja de Smalltalk, porque la sintaxis es tan mínima que es muy fácil llevar estas ideas a otros idiomas.

Mover (2) puede ser una sorpresa para algunas personas, extrañamente hay una especie de rumor flotando alrededor de que Smalltalk es una antigua reliquia del pasado. Que de alguna manera era popular en el pasado y ahora no lo es. Lo cierto es que incluso para los estándares actuales Smalltalk está adelantado a su tiempo, muchas de las grandes ideas de Smalltalk son todavía un trabajo en progreso en otros idiomas.

Toma la codificación en vivo, una ventaja muy importante de usar Smalltalk. La codificación en vivo es la capacidad de modificar el código mientras se ejecuta, básicamente, le permite crear una aplicación mientras la aplicación se está ejecutando. Smalltalk puede hacer esto porque compila métodos y objetos sobre la marcha y reemplaza los antiguos con su nueva versión modificada. Esto sucede bajo el capó sin que el usuario lo sepa o se le exija seguir algún paso específico.

Esta idea no proviene de Smalltalk, sino de Lips, como muchas otras ideas de Smalltalk. Sin embargo, lo que Smalltalk hizo de manera diferente a Lisp es basar todo el lenguaje en él. La codificación en vivo no es solo otra característica, es Smalltalk.

Otro hecho importante es que Smalltalk todavía está activamente desarrollado. Smalltalk nunca fue popular porque a diferencia de otros lenguajes de programación, la popularidad nunca fue un objetivo, ni siquiera uno secundario. El propósito de Smalltalk es ser un entorno de codificación en vivo que forme una base para inventar nuevos idiomas y nuevas bibliotecas. Esencialmente es un ecosistema de software fértil a diferencia de todo lo que existe.

Además, debido a que Smalltalk está tan bien diseñado, no necesita, como otros idiomas, un ejército de programadores para avanzar rápidamente. Pharo, por ejemplo, es una implementación moderna de Smalltalk que lanza una nueva versión cada año con cientos de correcciones de errores y un montón de nuevas características.

Como tal, Smalltalk es una excelente opción para ser una herramienta de “centro neurálgico”, ya que Smalltalk es un lenguaje, un IDE y todo un sistema operativo virtual que puede manejar proyectos muy complejos fácilmente. Smalltalk ha sido una opción particularmente popular en proyectos bancarios y en proyectos súper grandes que tratan con una gran cantidad de datos críticos.

Además, Smalltalk tiene casi 50 años de madurez, ha demostrado su valor y aún se mantiene fuerte.

Utilizo Pharo como mi lenguaje de script principal, he desarrollado herramientas para usar bibliotecas de otros lenguajes de programación, Python y C ++.

La combinación de bibliotecas potentes con un entorno de desarrollo de software tan innovador y bien diseñado es una solución realmente excelente para muchos problemas.

Pharo también puede usar las bibliotecas de Java y Javascript.

Smalltalk para mí es la mejor arma de pirateo, ya que no ofrece solo un lenguaje bien diseñado como Lisp, sino todo un entorno extremadamente preciso que puede lidiar con códigos complejos y minimizar posibles errores. También facilita el desarrollo de sus propias herramientas de desarrollo de software, ya que le brinda acceso directo a la fuente y utiliza el idioma incluso en los lugares donde espera encontrar el código C.

Smalltalk es un universo de posibilidades que todos los desarrolladores deberían probar, incluso si él o ella decidiera utilizar otros idiomas.

Quiero aprender más lenguajes de programación y convertirme en un candidato más atractivo para las empresas de tecnología.

Te perdiste el punto aquí. Claro, si bien es bueno tener un buen conocimiento de algunos idiomas, la solidez de su perfil no es la cantidad de idiomas que conoce.

Tendrá muchas más posibilidades de conseguir un empleo en las principales empresas de tecnología si mejora sus habilidades en algoritmos, estructuras de datos y otros fundamentos. También puedes contribuir a proyectos de código abierto.

Y, por cierto, aprender algo solo porque te hace más atractivo nunca ha funcionado. Encuentra tus intereses que puedan hacerte más comercial y enfócate en ellos.

Si desea ser atractivo para las empresas de tecnología, debe utilizar los idiomas más comunes. Java, Swift, Objective-C, SQL, JavaScript, HTML, CSS, PHP, Python, Ruby son los más comunes ahora. Deben cubrir la posibilidad de conseguir un trabajo en desarrollo web o desarrollo móvil.

Sí. Las ideas detrás de Smalltalk son algunas de las más importantes en Ingeniería de Software. Eso es un importante subcampo de la informática. Además, Smalltalk es un gran ambiente para experimentar y aprender cualquier tema en CS.

Durante tu estudio en la universidad es bueno desarrollar un estilo de pensamiento de programación. Creo que es más importante que aprender un lenguaje específico. El estilo de pensamiento está formado por el aprendizaje de muchos conceptos y Smalltalk puede ampliar sus horizontes incluso si está un poco anticuado en la actualidad. Si fuera un empleador, valoraría a un candidato de este tipo en caso de que supiera que es un recién graduado y que se requiera capacitación de todos modos.