¿Por qué elegimos usar #Smalltalk como principal lenguaje para nuestras soluciones? Actualmente, está muy lejos del #TopTen en cuanto a popularidad. [abrimos hilo] 👇👇👇
Clásicos como Python, C++, C#, Java y Javascript se disputan la cima, mientras se defienden de nuevos como Swift, Typescript, Go y Kotlin.
Si observamos algunos de los rankings más conocidos, notaremos que Smalltalk no aparece. Acá podemos ver el #Top20 de lenguajes de #programación más populares según el índice PYPL (1°) y TIOBE (2°). El de TIOBE se completa con el puesto 50. Smalltalk no figura.
Aún así, grandes entidades financieras han desarrollado algunos de sus sistemas con Smalltalk (o ST para los amigos), tal como lo hicimos nosotros. ¿Por qué? Para responder esta pregunta, analizaremos las siguientes cuestiones:
a) Los problemas financieros pueden requerir sistemas muy complejos, debido a la enorme cantidad de casos de uso que tienen. A pesar de esto, dichos problemas tienen la particularidad de componerse de objetos claramente identificables tales como instrumentos, cotizaciones…
...operaciones, cuentas, etc. Es decir, son problemas muy complejos que fácilmente se dividen en problemas mucho más sencillos. Modelando correctamente dichos elementos junto con sus interacciones, se puede resolver el problema. Un #lenguaje orientado a objetos como ST...
...es la mejor alternativa para modelizar fácil y rápidamente estos objetos. #Programar con este grado de abstracción permite escribir #código pensando explícitamente en precios y monedas, bonos y acciones, operaciones y movimientos, en vez de pensar en estructuras o funciones.
Veamos a modo de ejemplo, cómo podríamos crear un objeto que represente un movimiento monetario con ciertos parámetros en ST (1°) y en un hipotético sistema construido en Python (2°). ¿Cuál te parece más declarativo y descriptivo?
Podemos decir que ST brinda como atributos de calidad la #legibilidad (código similar al lenguaje coloquial) y #simplicidad (se minimizan las complejidades esenciales y accidentales).
b) Los objetos financieros, además de no ser triviales, cambian constantemente (la reglamentación de compra venta de moneda extranjera, por mencionar uno). Es muy importante obtener modelos que sean flexibles y adaptables en el tiempo. Sabemos que pueden cambiar, y lo harán.
Como se ha dicho, ST nos permite usar un lenguaje mucho más cercano al dominio financiero. Esto hace que identificar los cambios necesarios en el código para reflejar las novedades del mercado de capitales, sea mucho más fácil e intuitivo que en otros lenguajes.
Cabe destacar este estudio (ifpug.org/wp-content/upl…) que compara multiples lenguajes y sus “function points” (métrica de funcionalidad entregada al usuario, independiente de la tecnología usada). Allí se ve que Smalltalk puede ser mucho más #productivo que C++, Java o Python.
Entonces, ST nos brinda #flexibilidad y #extensibilidad (se puede agregar/modificar/quitar funcionalidad sin dañar el sistema). Todo esto se debe cubrir con un buen set de casos de tests. ST incentiva la utilización de TDD (Test Driven Development), facilitando su creación.
c) El dominio de las finanzas es muy dinámico. Tener un entorno de #programación "vivo", en el cual experimentar y bocetar nuestras ideas rápidamente sin tener que compilar y linkear como en C++, o depender del limitado REPL de Python, es invaluable. Veamos algunos ejemplos:
Entonces, ST también nos ayuda a cumplir con los siguientes atributos: #usabilidad y #robustez (al tener feedback inmediato de la ejecución del código, se minimiza la probabilidad de introducir errores al realizar modificaciones, es decir, lo contrario a "error prone").
d) A pesar de esto, inevitablemente aparecerán errores en el sistema y "#bugs" a resolver. Para ello, los distintos dialectos de ST ofrecen distintos "#debuggers" (herramientas que sirven para ejecutar la aplicación de manera controlada y detectar incidentes).
Pero a diferencia de los “debuggers” de otros lenguajes, en ST no solo se puede ejecutar el código paso a paso, colocar "breakpoints", visualizar los valores de las variables y hasta editarlas en tiempo de ejecución, sino que también se puede modificar el código fuente.
En este ejemplo utilizaremos el "debugger" para modificar el código durante la ejecución, alterando el resultado. ¿El problema? Un mago intenta sacar un conejo de su sombrero mágico, pero no lo consigue. Encontremos el "bug" y su solución.
Finalmente ST nos permite cumplir con: #correctitud o #mantenibilidad (ausencia de errores), Consistencia (coherencia entre las operaciones que realiza el usuario) y Completitud (capacidad del sistema para realizar todas las operaciones que usuario podría requerir).
Para los más teóricos: ST no tiene tipado estático, a diferencia de muchos de los lenguajes mencionados al principio. Esto permite despreocuparse sobre qué es cada variable, cada objeto... y centrarse más en su comportamiento. Uno de los resultados es el polimorfismo.
En este sentido, podemos decir que dos objetos totalmente distintos como pueden ser una operación de compra de títulos y una operación de plazo fijo, poseen atributos similares (tienen una cuenta, una fecha de concertación, etc). En ST esta manera de pensar es moneda corriente.
En ST, TODO es un objeto. Hasta el entorno de programación y el código fuente que escribimos. ST nos permite utilizar no solo lambdas y closure, sino también "full closures". Podemos ejecutar código anónimo con binding de variables y retornar desde dentro del bloque de código.
Resaltando todas las ventajas y flexibilidades de ST, es evidente porque es un lenguaje a tener en cuenta a la hora de resolver problemas donde la facilidad de modelado, la modificabilidad del sistema y la robustez del mismo son atributos deseables, como sucede en Fintech.
👍Bonus 1: En la edición 2017 de la habitual encuesta de StackOverflow, Smalltalk quedó en segundo lugar en el ranking de los lenguajes más queridos. Esto demuestra que si bien la comunidad es pequeña y el lenguaje no es mainstream, quienes lo usan, lo valoran con creces.
👍Bonus 2: Para terminar, dejamos algunas frases relevantes de Alan Kay, uno de los padres de la Programación Orientada a Objetos (#OOP por sus siglas en inglés) y del lenguaje Smalltalk.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Mercap

Mercap Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!