7 razones por las que los frameworks son los nuevos lenguajes de programación

En la década de 1980, la forma más fácil de iniciar una pelea de nerds era proclamar que tu lenguaje de programación favorito era el mejor. ¿C, Pascal, Lisp, Fortran? Los programadores pasaron horas explicando exactamente por qué su forma particular de elaborar una cláusula si-entonces-si no era superior a la suya.

Eso fue entonces. Hoy en día, las batallas relacionadas con la sintaxis y la estructura han terminado en gran parte porque el mundo ha convergido en unos pocos estándares simples. Las diferencias entre el punto y coma, los corchetes y otras cosas en C, Java y JavaScript son menores. Todavía existen debates interesantes sobre la mecanografía y los cierres, pero la mayoría son discutibles porque la automatización está cerrando la brecha. Si no le gusta especificar un tipo de datos, es muy probable que la computadora pueda inferir exactamente lo que quiso decir. Si su jefe quiere JavaScript pero a usted le gusta Java, un compilador cruzado convertirá todo su Java escrito estáticamente en JavaScript minificado, listo para ejecutarse en un navegador. ¿Por qué luchar cuando la tecnología nos respalda?

Hoy, la acción interesante está en los marcos. Cuando me senté con otros miembros de la facultad de la Universidad Johns Hopkins para planificar un nuevo curso, los marcos dominaban la conversación. ¿Angular es mejor que Ember? ¿Node.js es todo eso?

Diseñamos un curso de encuesta que exploraría la arquitectura de los paquetes de software más importantes que son la base de Internet. Este fue el centro de la acción, digno de un curso de encuesta que exploraría la arquitectura de los paquetes de software más importantes que ciñen la Internet de hoy.

En este sentido, los frameworks son los nuevos lenguajes de programación. Allí es donde se encuentran las últimas ideas, filosofías y aspectos prácticos de la codificación moderna. Algunos se apagan, pero muchos se están convirtiendo en los nuevos componentes fundamentales de la programación. Aquí hay siete facetas que alimentan la tendencia de los frameworks y hacen de los frameworks el nuevo semillero favorito para las peleas de nerds.

La mayoría de la codificación consiste en encadenar API

Hubo un tiempo en que escribir software significaba desplegar todo su conocimiento del lenguaje de programación para exprimir al máximo el código. Tenía sentido dominar la complejidad de los punteros, las funciones y el alcance: la calidad del código dependía de hacer lo correcto. En estos días, la automatización maneja gran parte de esto. Si deja declaraciones sin valor en el código, no se preocupe. El compilador elimina el código muerto. Si deja punteros colgando, el recolector de basura probablemente lo resolverá.

Además, la práctica de codificar es diferente ahora. La mayor parte del código es ahora una larga línea de llamadas a API. Hay cambios de formato ocasionales de los datos entre llamadas a la API, pero incluso esos trabajos suelen ser manejados por otras API. Unos pocos afortunados pueden escribir un código inteligente, que golpea bits y hace malabares con los punteros para las entrañas de nuestras máquinas, pero la mayoría de nosotros trabajamos con las capas superiores. Simplemente ejecutamos una tubería entre API.

Debido a esto, es más importante comprender cómo se comporta una API y qué puede hacer. ¿Qué estructuras de datos acepta? ¿Cómo se comportan los algoritmos cuando el conjunto de datos crece? Preguntas como estas son más fundamentales para la programación actual que las sobre sintaxis o lenguaje. De hecho, ahora hay una serie de herramientas que simplifican la llamada a una rutina en un idioma desde otro. Es relativamente sencillo vincular bibliotecas C con código Java, por ejemplo. Comprender las API es lo que importa.

Los hombros de los gigantes valen la pena pararse

Imagina que te has convertido en discípulo de Erlang u otro idioma nuevo. Decide que ofrece la mejor plataforma para escribir una aplicación estable y sin errores. Este es un buen sentimiento, pero podría llevarle años volver a escribir todo el código disponible para Java o PHP en el último idioma que elija. Claro, su código podría resultar dramáticamente mejor, pero ¿vale la pena el tiempo extra?

Los marcos nos permiten aprovechar el arduo trabajo de quienes nos precedieron. Puede que no nos guste la arquitectura que eligieron y podemos discutir sobre los detalles de implementación, pero es más eficiente reprimir nuestras quejas y encontrar una manera de vivir con las diferencias. Es mucho más fácil heredar todo lo bueno y lo malo del código base a través de un marco. Tomar el camino del macho escribiendo todo usted mismo en su nuevo lenguaje favorito en lugar de en uno de sus marcos más populares no le permitirá disfrutar de la flor y nata de su nueva elección tan rápido como lo haría simplemente remitir a los creadores de marcos y sus API.

Lo que importa es conocer la arquitectura, no la sintaxis

Cuando la mayor parte de la codificación consiste en encadenar llamadas a la API, no hay mucha ventaja en aprender las idiosincrasias del lenguaje. Claro, podría convertirse en un experto en cómo Java inicializa campos estáticos en los objetos, pero sería mucho mejor averiguar cómo aprovechar el poder de Lucene o JavaDB o alguna otra pila de código. Podría pasar meses asimilando las rutinas de optimización de los compiladores de Objective-C, pero aprender los entresijos de la última biblioteca principal de Apple realmente hará que su código grite. Obtendrá mucho más información sobre los detalles delicados del marco que sobre la sintaxis del lenguaje en el que se basa el marco.

La mayor parte de nuestro código pasa la mayor parte de su tiempo en los bucles internos de las bibliotecas. Obtener los detalles del idioma correctamente puede ayudar, pero saber lo que está sucediendo en las bibliotecas puede dar sus frutos de manera espectacular.

Dominan los algoritmos

Aprender un lenguaje de programación puede ayudarte a hacer malabares con los datos almacenados en las variables, pero eso solo te lleva hasta cierto punto. El verdadero obstáculo es conseguir que los algoritmos sean correctos, y estos suelen ser definidos e implementados por los marcos.

Muchos programadores comprenden que es peligroso y un desperdicio dedicar tiempo a volver a implementar algoritmos y estructuras de datos estándar. Claro, es posible que pueda ajustarlo un poco a sus necesidades, pero corre el riesgo de cometer errores sutiles. Los marcos se han probado ampliamente a lo largo de los años. Representan nuestra inversión colectiva en una infraestructura de software. No hay muchos ejemplos de cuándo tiene sentido "salirse de la red", dejar de lado el trabajo duro de los demás y construir una cabina algorítmica con sus propias manos.

El enfoque correcto es estudiar los marcos y aprender a usarlos para su mejor ventaja. Si elige la estructura de datos incorrecta, podría convertir un trabajo lineal en uno que lleve un tiempo que es una función cuadrática del tamaño de entrada. Eso es una gran molestia una vez que te vuelves viral.