Lenguajes de programación y marcos
Dependiendo de su rol, puede ser especialista en uno o más lenguajes de programación o generalista en muchos idiomas y especialista en algunos. Puede elegir ser un experto en Java Rockstar o .NET, C o C ++, Ruby on Rail, Python Django, experto en PHP como desarrollador de back-end y HTML, CSS, JavaScript y Node.js para front-end y back-end. Luego React, Angular, JQuery o cualquier otro marco para el front-end.
Lenguaje específico de dominio – DSL
Los lenguajes de programación son generales y para tareas de programación más avanzadas debemos usar DSL para tareas específicas en un dominio específico. El punto central detrás del uso de framework o DSL es la productividad y la simplicidad, para hacer más con menos esfuerzo.
DSL detallado, DSL simplificado y DSL minimizado
Aquí hay un ejemplo de cómo diferentes DSL ayudan a minimizar, personalizar y simplificar el trabajo en cuestión. La construcción de una VPC (Virtual Private Cloud) en AWS requiere +2500 líneas de código en formato JSON, si usa YAML, se convierte en +2000 líneas de código. Con Terraform HCL (lenguaje de configuración HashiCorp), la misma tarea requiere menos de 500 líneas de código. Para algunos casos de uso específicos, desarrollo una aplicación que requirió menos de 100 líneas de configuración para construir más de +30 VPC. Luego tenemos un rango de +2500 LOC (líneas de código) a 100 o 96% menos líneas de código para la misma tarea.
Cómo ponerse al día – Use el código para crear código
Estoy programando en más de 20 lenguajes de programación y DSL, pero no puedo memorizar toda la sintaxis y escribir código sobre la marcha sin consultar la documentación de todos estos lenguajes de programación, hay muchas similitudes pero también hay grandes diferencias.
En algunos casos, podemos escribir una aplicación para crear una buena arquitectura y probar otro lenguaje de programación para simplificar y automatizar las tareas repetitivas.
Una vez que tuve que migrar las tablas de MS-SQL a otras tablas que requieren decenas de miles de líneas de comandos SQL, escribí un marco y una aplicación en menos de 2000 líneas de código para crear estos comandos SQL, el resultado fue un front-end con algunos opciones para crear decenas de miles de líneas de código con un solo clic, luego tuve que extender este script de migración para escenarios más complejos, así que actualicé la aplicación y luego tuve muchas opciones para muchos escenarios de migración, cada una disponible con un solo clic. El uso de esta aplicación no requiere conocer el proceso interno, pero si tiene curiosidad por mi parte, modifíquela y úsela para diferentes proyectos y tareas similares.
Elija la herramienta adecuada: muchas opciones disponibles
Escribí muchas aplicaciones de automatización en PHP, Node.JS y Ruby, pero casi todas podrían escribirse en muchos otros idiomas, el enfoque y la estrategia son los mismos, pero la sintaxis es diferente. La aplicación más loca que escribí tenía más de 10 lenguajes y marcos, era una aplicación de modelado 3D con .NET, PHP, MS-SQL, ActionScript y Adobe AIR para back-end y HTML 5, CSS 3, JQuery, 3d.js , chart.js y Graph.js en el front-end. Pero la pila podría ser cualquier cosa. La base de datos podría ser cualquier SQL o incluso NoSQL. El back-end podría ser Java, Ruby, Python, Node.JS y hoy el modelado 3D en lugar de ActionScript y Adobe AIR podría ser el marco de JavaScript y hay muchas opciones para la visualización de datos y gráficos. HTML 5 y CSS 3 son las únicas partes que permanecen igual, excepto que es una aplicación móvil nativa que no está basada en HTML.
Elija la herramienta adecuada – Opción óptima para infraestructura
En el caso de IaC (Infraestructura como Código) hay muchas opciones. Por ejemplo, en el caso de AWS, podemos usar casi cualquier SDK de AWS para escribirlo en Java, PHP, Node.js, Ruby, .NET o Python Boto, etc., pero terminamos con decenas de miles de líneas de código, es posible pero SDK no es la herramienta correcta, CloudFormation es una recomendación de AWS para Infraestructura que termina teniendo miles de líneas de código en lugar de decenas de miles. Terraform es la opción más adecuada para terminar con cientos de líneas de código.
Elija la herramienta adecuada: opción óptima para la configuración
En el caso de la administración de la configuración nuevamente, podemos usar SDK en el caso de AWS o lenguaje general como Python, Ruby, Bash o PowerShell y terminar con decenas de miles de líneas de código, pero ¿por qué no usar Chef, Puppet, Ansible o SaltStack, que es el preferido? herramienta específicamente diseñada para gestionar la configuración. Si eres desarrollador, entonces Chef es más fácil, Puppet es más difícil pero ambos escritos en Ruby. Si usted es SysAdmin, entonces Ansible o SaltStack tiene más sentido ya que ambos están escritos en Python y usan YAML. Pero puede lograr lo mismo con Python puro, Ruby o Bash y PowerShell para Windows.
Conclusión
Hay muchas maneras de desollar a un gato, pero no todas son óptimas en cuanto a costo, valor y tiempo. Puede apegarse a la funcionalidad central de un lenguaje, pero luego está limitado a su innovación, pero el uso de un marco nos ayuda a simplificar el proceso, enmascarar la complejidad y tener poderosos bloques de construcción en lugar de construir todos los bloques de construcción.
En casos de uso de dominio específico, el lenguaje de dominio específico es más poderoso que el marco o el uso de lenguaje de programación puro: DSL es un tipo de marco específico en torno a casos de uso específicos y es menos general que los marcos generales.
Comience desde “Lenguaje de programación” para conocer las mejores prácticas y conocer el idioma dentro y fuera. Mejore su productividad empleando los marcos correctos y elija los populares y probados, pero no el que nadie escuchó de él. Use SDK para agregar más potencia a sus habilidades de desarrollo y productividad. Use DSL para obtener más productividad en tareas específicas del dominio.
El proceso de mejora es el mismo que la codificación en un editor de texto mínimo como vim o un bloc de notas en lugar de un editor avanzado como Eclipse, Notepad ++, texto sublime, etc. con resaltador de sintaxis, funciones de alcance, autocompletado, etc. Seguro que podemos usar cualquier editor y confiamos en nuestra memoria, pero si queremos desarrollar una aplicación real, necesitamos un editor real adecuado para nuestro idioma de elección, el punto es la productividad y la facilidad de uso.
Ejemplos de DSL : Lenguaje de configuración HashiCorp, Chef Ruby DSL, Puppet Ruby DSL, Libro: Martin Fowler: Lenguaje específico del dominio