He estado programando durante poco menos de un año y tengo algo de experiencia escribiendo aplicaciones de sistemas, aplicaciones web y scripts para empresas / organizaciones. Sin embargo, una cosa que nunca he hecho realmente es trabajar con un framework como Django, Rails o Zend.
Mirando el marco de Django, estoy un poco frustrado con la cantidad de marcos abstraídos. Entiendo los objetivos centrales de DRY y el código mínimo, pero parte de esta dependencia excesiva en diferentes módulos y una gran abstracción de las funciones centrales se siente así:
Hace que los programas tengan una fecha realmente rápida debido a la naturaleza cambiante de los módulos / marcos,
Hace que el código sea difícil de entender debido a la gran cantidad de marcos y módulos disponibles y todas sus idiosincrasias,
Hace que el código sea menos lógico a menos que haya leído toda la documentación; es decir, puedo leer algunas comprensiones de listas y lógica condicional y descubrir qué está haciendo un programa, pero cuando ves funciones que requieren pasar cadenas y diccionarios arbitrarios, las cosas se vuelven un poco difíciles de entender a menos que ya seas un gurú en un módulo dado; y:
Hace que sea difícil y tedioso cambiar entre marcos. Cambiar de idioma ya es un desafío, pero es manejable si tienes una comprensión lo suficientemente sólida de su funcionalidad / filosofía central. Cambiar entre marcos parece ser más una cuestión de memorización memorística, que de alguna manera parece alentar la ineficiencia que estos marcos fueron diseñados para eliminar.
¿Realmente necesitamos poner como 50 capas de abstracción sobre algo tan simple como una consulta MySQL? ¿Por qué no usar algo como la interfaz PDO de PHP, donde las declaraciones preparadas / pruebas de entrada se manejan pero la consulta SQL universalmente comprensible todavía es parte de la función?
¿Son realmente útiles esas abstracciones? ¿La hinchazón de características no las hace inútiles y hace que las aplicaciones sean más difíciles en comparación con aplicaciones similares escritas sin usar un marco?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- En primer lugar, un buen marco es una capa de abstracción (quizás 2 o 3 internamente) y, en segundo lugar, "algo tan simple como una consulta MySQL" implica una buena docena de abstracciones. Incluso después de que la consulta que ejecuta desde su lenguaje interpretado haya llegado al servidor de la base de datos, todavía tiene consultas sobre bases de datos sobre motores sobre sistemas de archivos sobre almacenamiento físico. En resumen: sí, necesitamos abstracciones, porque evitan que nuestra cabeza explote.
as a relatively inexperienced programmer
más tiempo haga el software, más apreciará pasar menos tiempo reinventando la rueda y más tiempo en casa haciendo las cosas que ama.