mordecki.com Artículo Por Daniel Mordecki 05 de octubre de 2003 Las técnicas y herramientas de programación diseñadas para correr en equipos con 64kb de RAM y 30MB de disco se siguen usando hoy, muchas veces sin cuestionarse su vigencia. No es un problema de moda, sino de la necesidad de generar sistemas más eficientes y rentables. Todo es poco Así nació la informática, con equipos que ocupaban manzanas enteras, para procesar apenas unas operaciones aritméticas sencillas. Durante muchos años, a pesar de las mejoras significativas, las computadoras siguieron siendo equipos enormes, costosos y con recursos extremadamente escasos: un procesador demasiado lento, un disco demasiado pequeño, y una cantidad de memoria mínima. Es así que en el año 79 u 80, encontrar equipos que daban soporte a un centenar de terminales con 64kb de RAM y 30MB de disco era algo todavía frecuente. en el año 79 u 80, encontrar equipos que daban soporte a un centenar de terminales con 64kb de RAM y 30MB de disco era algo todavía frecuente Los logros de esos años son mayúsculos, y hoy nos preguntamos con asombro: ¿como hacían? ¿Cómo procesaban las facturas, llevaban los inventarios, pagaban los sueldos, con esas máquinas que hoy parecen ridículas? Los algoritmos lucen una elegancia y un ingenio sin límites. Los modelos de datos y las técnicas asociadas a ellos destilan un clase digna de los mayores elogios. En general, durante esos años se sentaron las bases de la informática moderna, bases que siguen hoy vigentes. Pero desde la ENIAC1 hasta el 80 habían pasado 35 años. 35 años en los que la forja de la teoría y la práctica informática tuvo un convidado de piedra: construir las aplicaciones que dieran soporte a los procesos de negocios y a las investigaciones científicas extrayendo la mayor potencia de cada ciclo de procesador, de cada bit de memoria. Los sistemas operativos, los lenguajes de programación, la teoría de construcción de aplicaciones y la cultura de toda la industria estaba permeada de norte a sur y de este a oeste por la obsesión de conseguir programas que se adaptaran mejor a los recursos escasos de los sistemas. Cualquier programador sabía "rematar" un programa en assembler para ahorrar ciclos de procesador, consideraba detalladamente el almacenamiento de sus variables en memoria, de modo de ahorrar la mayor cantidad de bytes y de acelerar al máximo los accesos a memoria que el programa realizara. Esta práctica ininterrumpida de más de tres decenios constituyó una verdadera filosofía de trabajo: la filosofía de la escasez. La realidad del derroche La realidad de hoy es muy distinta. La mayoría aplastante de la capacidad de procesamiento del mundo está la mayoría del tiempo ociosa, sin contar el tiempo en que está apagada. La mayoría aplastante de la capacidad de procesamiento del mundo está la mayoría del tiempo ociosa, sin contar el tiempo en que está apagada Los procesadores tienen una instrucción llamada NOP (No OPeration) que el sistema operativo ejecuta cuando no tiene nada para hacer. En todo momento se están ejecutando en el mundo cientos de miles de trillones de operaciones NOP. Los discos por su parte están llenos de programas y archivos que no tenemos idea de para qué sirven, (muchas veces no sabemos siquiera quién los instaló) pero que no desinstalamos por el miedo a que luego de la desinstalación la máquina deje de funcionar. Tal vez la memoria no esté tan holgada, pero de todos modos los equipos de hoy en día tienen muchas veces sólo para las operaciones de video más memoria que lo que hace 20 años se usaba para dar soporte a 100 usuarios, y además es 1000 veces más rápida y 1000 veces más barata. Las consecuencias Que los equipos pongan a disposición de los usuarios una enorme capacidad de procesamiento es algo realmente bueno. Que las bases de la informática estén fundadas en una teoría sólida, probada una y otra vez en la práctica, es también muy bueno. Lo que no es bueno es que la filosofía de la escasez subsista 20 años después que sus causas más profundas ya no existen. Más equipos menos programadores no es bueno es que la Hoy en día el mayor costo, tanto en tiempo como en recursos y dinero, filosofía de la escasez lo lleva la mano de obra que desarrolla, implementa y soporta los subsista 20 años después que sus causas más sistemas. Los equipos, que antaño representaban la mayor parte de los profundas ya no existen costos informáticos, hoy son un costo relativamente pequeños en comparación a los costos de mano de obra. Pero la filosofía de la escasez sigue predominando, invirtiendo las prioridades: se desarrolla el software con herramientas nacidas de esa filosofía y con metodologías propias de esa filosofía. Programar en Cobol o RPG por ejemplo, no tiene "per se" nada de malo: tanto Cobol como RPG son lenguajes robustos, ampliamente probados y muy eficientes sin duda. Pero nacieron bajo la filosofía de la escasez, y a ella se deben. Hoy es necesario dotar a los programadores y analistas de herramientas de más alto nivel, que les permitan desarrollar programas más sofisticados en menos tiempo. Probablemente estas herramientas de más alto nivel terminen generando código Cobol, C o RPG, que luego será compilado y ejecutado en el equipo. Es cierto que el código escrito directamente es en general más eficiente que el generado por herramientas de alto nivel. Pero para ello deben cumplirse algunas condiciones: tener programadores de gran nivel que dichos programadores cuenten con una larga experiencia en el uso del lenguaje de programación que dispongan de tiempo para optimizar su código. Mientras tanto un programador utilizando una herramienta de más alto nivel generará un código menos eficiente, pero lo hará sensiblemente más rápido y con menos bugs. Por supuesto que con herramientas de alto nivel se pueden desarrollar programas pésimos, pero esto es algo que se puede hacer también con herramientas de bajo nivel. Para que la comparación tenga sentido, pensemos en ambos casos en desarrolladores de buen nivel, con un conocimiento razonable de la herramienta que usan. La diferencia de rendimiento se compensa con equipos más poderosos: así de sencillo. Es más económico, tiene menos errores y es mucho más fácil y barato de mantener. La diferencia de rendimiento se compensa con equipos más poderosos: así de sencillo. Es más económico, tiene menos errores y es mucho más fácil y barato de mantener. Ciclos de desarrollo más cortos La filosofía de la escasez nació y se desarrollo en un tiempo donde valía la pena pasar un mes refinando el código para que fuera posible ejecutarlo en los mínimos 64KB del equipo. No solo valía la pena: era imprescindible porque no había más que 64KB. También los procesos que se atacaban se mantenían relativamente estables en el tiempo: la contabilidad, el pago de los salarios o el manejo de inventarios son procesos relativamente estáticos, que se mantienen en sus pilares fundamentales incambiados a lo largo de muchos años dentro de una empresa. Hoy en día, un proyecto de dos años es para una empresa de 500 empleados un megaproyecto. Para una de 50 empleados es sencillamente impensable Hace 20 o 30 años que la informatización de un proceso implicara un proyecto de dos años era algo común. Y otra vez lo mismo: las herramientas, las técnicas, las metodologías estaban concebidas sobre esta base. Hoy en día, un proyecto de dos años es para una empresa de 500 empleados un megaproyecto. Para una de 50 empleados es sencillamente impensable. El "time to market" de la mayoría de las implementaciones se mide en meses, no en años, y muchos de ellos en semanas. Invertir neuronas en problemas con más retorno El resultado de la filosofía de la escasez puede resumirse en la siguiente frase: "Siguiendo los dictados de la filosofía de la escasez se pone foco en problemas con bajo retorno, y se deja de lado la oportunidad de trabajar sobre problemas con mayor retorno". Sacar horas de trabajo de la mejor gente en optimizar el código para correrlo en equipos pequeños, es un derroche de talento. Sin duda, esa esfuerzo sería mucho más rentable si se dedicara a desarrollar software más sofisticado, con mejores interacciones con los usuarios, que abarque más procesos de la empresa, que llegue más lejos, hasta clientes, proveedores y distribuidores, que permita transformar los torrentes de datos en armas para tomar decisiones más informadas. Vencer la inercia En realidad, lo único que sostiene en pie a la filosofía de la escasez es la inercia: no es más rentable, no es más adecuada a la realidad, no es más eficiente, no produce más satisfacción ni en los clientes, ni en los usuarios, ni en los propios programadores. Pero el argumento de que hace más de 50 años que lo venimos haciendo así parece ser más fuerte que la razón Vencer a la inercia que sostiene en pie a la filosofía de la escasez es un imperativo que generará en su empresa sistemas mejor adaptados a las necesidades de los negocios que a las necesidades de los equipos _____________________ Vencer a la inercia que sostiene en pie a la filosofía de la escasez es un imperativo que generará en su empresa sistemas mejor adaptados a las necesidades de los negocios que a las necesidades de los equipos. 1 ENIAC (Electronic Numerical Integrator and Computer) es considerada la primera computadora electrónica digital. Fue construida por la Marina de los Estados Unidos, para realizar cálculos de Balística, durante la segunda guerra mundial. Comenzó a operar en octubre de 1945.