Cómo diseñar sistemas en lenguajes funcionales de tipo dinámico

De la misma manera que lo haría normalmente, pero con más disciplina, diligencia y pruebas.

La estructura de datos JSON (o lo que sea) que obtenga de algún otro servicio será la misma, ya sea que esté clasificada en tipos reales o implícitos.

Lo mismo es cierto de Go.

¿Cómo podría confiar en que una aplicación Go podría funcionar, si no tiene clases?

Simplemente lo haces, y funciona bien.

En una aplicación JS, modelaría los objetos que espero usar dentro de mi DSL; pero como objetos, no como clases o cualquier otra cosa. Instancias de estructura pura.

A partir de entonces, escribiría convertidores que incluyan bolsas de datos indulgentes, y los convierta a formatos rígidos a toEmployee(data) , etc. Compondría esas transformaciones puras y rígidas en una transformación de orden superior, para poder tomar todo el árbol de entrada y llegar a un árbol de salida muy estrictamente definido, de mi especificación, y luego poner el árbol a través de la tubería para cualquier servicio, produciendo así el formato de salida esperado, o un montón de pruebas fallidas.

Pero incluso en un reino tan difícil como JS, no permitiría que los datos atraviesen el sistema hasta que estén en una forma que sea parte de mi DSL o una forma intermedia entre los objetos DSL. Mi sistema estaría trabajando en tipos que definí, a pesar de que no hay clases … … y los tipos de argumentos son plausiblemente dinámicos … … y los miembros de los argumentos son plausiblemente mutables.

Y Clojure ofrece mucha más seguridad que esto, por lo que es aún más fácil razonar.

More Interesting

¿Cuáles son mis posibilidades de ser admitido en la Universidad de Saarland?

¿Cuánto más desordenada es la condición de trabajo de los ingenieros de software en India que en Estados Unidos?

¿Es una buena idea adherirse estrictamente a Scrum?

¿Cómo podemos lograr el mismo tipo de codificación de productividad en Node.js que en Ruby on Rails?

¿Cuál es la mejor manera de implementar ITIL en una organización que hace UX (diseño de experiencia de usuario)?

Viniendo de un fondo HTML5 y JavaScript, ¿cuál es el mejor enfoque para comprender los conceptos de Objective-C y comenzar a construir dificultades medias para aplicaciones complejas?

¿Cómo es trabajar en Booking.com como ingeniero de software?

¿Debo realizar una pasantía de ingeniería de software en Twitter, Pinterest o Palantir?

¿Es cierto que no hay o menos crecimiento en las pruebas de software?

¿Cuál será el destino de los ingenieros de software en India después de 4 a 5 años? Todos los países están prohibiendo a los ingenieros de TI, primero los EE. UU., Malasia y ahora es el Reino Unido.

¿Cómo es pasar de colaborador individual en un entorno de ingeniería a la suite C en un corto período de tiempo?

¿Cuál es la mejor práctica para crear software médico?

¿Puede el software de reconocimiento de fotos identificar un estilo (p. Ej., Urbano, preppy, chic, etc.)?

Cómo definir una 'característica' de un software de forma precisa y efectiva

¿Yelp sería un buen lugar para comenzar, para un nuevo ingeniero de software?