ORM, ¿en verdad una maravilla?

Vivimos en un mundo sustentado por la tecnología que nos hace tener que estar muy atentos cada día para saber como adaptarnos. Como desarrollador de software que soy ése es mi día a día, ver nuevas maneras de resolver los problemas en mi trabajo, intentar encontrar la solución más sencilla para con ello ahorrarme tiempo, dolores de cabeza e incluso ser más conciso a la hora de codificar.

Con este mar de cambios hay gente que vivió el cambio de la programación estructurada a la programación orientada a objetos. El tiempo cada vez nos mostraba como la gente gustaba de hacer sus abstracciones de software cada vez más por medio de objetos.

Incluso a día de hoy cada vez que sale un lenguaje con ideas nuevas o que representa un contraste total en nuestra manera de pensar (paradigma) es difícil que se haga de un trozo del mercado. En fin, vamos que la programación orientada a objetos está sobrevaluada.

¿Alguien conoce Scala o Clojure?

Bueno, Scala y Clojure son dos lenguajes de programación muy interesantes que corren sobre la máquina virtual de Java (Scala también corre sobre la plataforma .NET). Por un lado, Scala es un lenguaje de programación híbrido entre funcional (no puro, dado que acepta variables y valores) y orientado a objetos. Clojure por otra parte, es un lenguaje de programación completamente funcional, es un dialecto de Lisp. ¿Cuál de estos dos lenguajes creen qué tiene más seguidores?… Exacto, Scala, porqué nos permite usar objetos.

Y este es el problema, el siguiente paso a nivel de desarrollo de software era en pensar como explotar las capacidades multi-core, servicios asíncronos, el ser conciso en lo que se codifica, escalabilidad horizontal, etc. Para vista está en como se busca que la información sea escalable a los lados, con movimientos como NoSQL que proponen hacer de las bases de datos almacenes y dejar el procesamiento/consulta de esos datos a las aplicaciones.

¿Y los ORM?

Pues parte de eso, ¿qué pasa si necesito hacer una consulta entre los alumnos que han reprobado una de las siguientes materias: matemáticas, física y literatura?… Tendría que abogarme a buscar los objetos para cada una de las materias, de ahí buscar qué alumnos llevan esas materias y después aplicar un filtro de quién reprobó. Ahí estoy haciendo varias consultas, algo que con una sola sentencia SQL pude haber hecho y recibir una tupla con los datos necesarios para un reporte, por decir algo.

En fin, creo que o estoy comenzando a entender un poco de esto o simplemente estoy perdiendo el norte, es lo bueno de ser alguien curioso, no se aceptan dogmas ni se busca ser fiduciario, más bien se busca ser concreto y buscar lo que mejor funcione para según que caso.

¿No debo usar un ORM?

No, esto no es lo que dije. Yo creo que es bien cómodo usar un ORM, me gusta la idea e incluso considero que son algo muy práctico para cierto tipo de aplicaciones. Sin embargo, creo que con los ORM tenemos un ejemplo de “uso el destapador de sodas para construirme un atril” y en general creo que ese es el problema que se sufre con la programación orientada a objetos.

Lo que si que recomiendo es, evaluar que necesitas para cada trabajo. Es como si yo quisiera usar Rails para crear una aplicación móvil. ¿Qué se puede? Pues si, pero no es lo más indicado, menos considerando que Rails fue creado para hacer aplicaciones web alojadas en un servidor, mientras que la aplicación móvil se ejecutará en un entorno completamente distinto.

Espero no haber ofendido a nadie y si tienes una mejor manera de decir las cosas, este es tu medio.

Bueno, sin más por este día, solo me queda agradecer la visita 🙂

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s