Cómo crecer un millón de veces y así bajar los precios
Muy a su pesar, se le atribuye a Bill Gates el haber dicho que 640 KB de RAM deberían ser suficientes para todos. Lo ha negado tantas veces como se lo ha citado; no porque sí Wikiquote la consigna como atribuida erróneamente al cofundador de Windows. En fin, la haya dicho o no, con el paso del tiempo casi toda afirmación relacionada con la tecnología y las ciencias se convierte en un papelón. Ptolomeo hizo un papelón, para el caso. Y el gran Newton, lo mismo, en equipo con Euclides.
La memoria RAM no es (repito: no es) el espacio donde se guardan tus programas y tus documentos. Eso se llama almacenamiento. Una cosa es el disco duro de una computadora (el almacenamiento, en los smartphones) y otra muy diferente la memoria RAM. Para recurrir a una vieja analogía, el almacenamiento es la biblioteca; el procesador es nuestro cerebro, y la memoria RAM es el pizarrón donde hacemos cuentas y anotaciones. Los veteranos sabrán entender el reduccionismo.
Pizarrón de oro
La memoria RAM ha sido tradicionalmente muy costosa. Por eso siempre tuvimos poca. Solo que “poca”, en este caso, es cuestión de fechas. Esos 640 KB de la frase mal atribuida a Bill Gates eran realmente muchísimo. La afirmación es, supuestamente, de 1981, el año en el que IBM lanzó su PC. En agosto, para más datos.
Unos 15 años antes (en términos históricos, nada), mi padre trajo a la Argentina una computadora para hacer la tipografía de un diario. Esa máquina era enorme, pesada y carísima. ¿Cuánta RAM tenía? Cuatro KB. Leyeron bien, 4 kilobytes. Cuatro mil bytes. Cuatro mil caracteres. Esa es la extensión de los Manuscritos de la contratapa del diario, para que se den una idea, y era toda la memoria RAM de que disponían los programadores. (Cuestión al margen: no estoy seguro de que los bytes ya fueran de 8 bits en esa época, pero supongamos que sí, para no complicar más el asunto.)
Cuando la cantidad de RAM era tan absurdamente pequeña, tenías que priorizar la eficiencia del código, y, por supuesto, trabajabas en un lenguaje ensamblador, cuya abstracción es cero (grosso modo, cada instrucción en ensamblador equivale a una instrucción en lenguaje de máquina). Uno de los recuerdos de mi infancia son los interminables listados de instrucciones que poblaban el estudio de mi padre, escritos a lápiz, para programar aquella enorme máquina.
Quince años después, para cuando con mi hermano empezamos a compartir las primeras computadoras para hobbistas, la cantidad de RAM había aumentado a 64 KB. Habrán oído hablar de la Commodore 64. Bueno, el 64 era por la cantidad de KB de RAM.
Así que en 15 años la memoria de las computadoras había crecido 16 veces. La revolución digital estaba arrancando y –todavía más importante– acelerándose. Mi hermano estaba terminando la secundaria y yo acababa de entrar en la carrera de Letras, en la UBA. Las PC todavía eran impagables, pero no todos los modelos venían con 640 KB de RAM. No, señor. Ese era el valor máximo. El modelo básico se vendía con 16 KB; costaba, sin diskettera, 4500 dólares de hoy.
Por lo tanto, puestos en perspectiva, los 640 KB son una enormidad. Ciento sesenta veces más que en 1967. Cualquier comparación hacía pensar, en aquella época, que iba a ser suficiente para todo el mundo. Autos, por ejemplo. Si un coche de 1967 hubiera avanzado de la misma suerte, en 1981 habría podido transportar a 800 pasajeros. El equivalente a dos Jumbos 747. (Dicho sea de paso, algo semejante ocurrió con el tamaño del campo para las direcciones del protocolo IP versión 4.)
Escala al cielo
Pero, fuera de que autos y computadoras no pueden compararse (aunque muchos siguen pensando que sí y apresuran conclusiones disparatadas), la cantidad de memoria RAM, en los inicios de la computación personal, era enorme. Ahora, ¿por qué esos 640 KB de RAM no alcanzaron y hoy un celular tiene 6000 veces más memoria? Porque las computadoras personales al principio, aunque empezaban a quedar al alcance del público común y las pymes, eran carísimas. ¿Cómo se redujo el precio de una PC en al menos un orden de magnitud en 40 años?
Uno de los fenómenos menos comprendidos de la revolución digital es la escala. Es poco comprendido porque funciona igual en todas las industrias, pero en la informática los números son exorbitantes. Creemos que es escala como en los autos o las hamburguesas, pero no. Observen: hoy llevamos en el bolsillo una computadora que en 1967 habría sido no solo inconcebible (no existía el GPS, por ejemplo), sino que, de haberlo sido, habría ocupado una superficie de varios kilómetros cuadrados; mobile first, digamos. Eso no pasa con los autos. O con las hamburguesas.
Ni hablemos del precio. En los últimos 60 años el costo de cada mil millones de operaciones de coma flotante por segundo (gigaFLOPS, una unidad usada para expresar el poder de cómputo) pasó de 160.000 millones de dólares a 4 centésimas de dólar. ¿No tiene sentido, no? Dejando de lado algunas cuestiones técnicas, solo el componente de gráficos de un buen celular habría costado, en 1960, 96 billones de dólares; más de cuatro veces el producto bruto interno de Estados Unidos. Hagamos 100 billones por el equipo completo, sin cargador.
Como en otras industrias, la forma de hacer esta magia es por medio de la escala. No podés fabricar un cerebro electrónico barato. La cuestión es cuántos tenés que fabricar para que sea rentable venderlos a un precio accesible. En esta industria (igual que en la de los servicios de Internet, desde MercadoLibre hasta Google o Facebook) no hablamos de unos cuantos cientos de miles. O varios millones. Aquí las cifras están en el orden de los miles de millones. Eso es lo que tenés que fabricar (y vender todo, o vas a la quiebra). De otro modo, estos bienes y servicios se convierten en un lujo para pocos, como hace 60 años, cuando las computadoras eran un privilegio exclusivo de algunos pocos gobiernos y grandes compañías e Internet ni siquiera existía.
Pantalla negra
Es decir, el costo de la memoria RAM descendió a medida que se multiplicó la demanda de chips y el número de fábricas de esos componentes. Eso fue lo que, pacientemente, Bill Gates esperó antes de lanzar Windows 95, el producto que le daría a Microsoft la supremacía absoluta en su momento. Cuando el costo por megabyte de RAM (mega, no giga) rompió el piso de los 100 dólares, a principios de la década del ’90 del siglo pasado, lanzó su nuevo Windows, que oficialmente requería como mínimo 4 megabytes (MB) y que en la práctica necesitaba al menos 8 para funcionar bien.
¿Cómo habíamos pasado de 4000 a 8.000.000 de bytes de RAM ? El código, así como los recursos gráficos y otros lujos con los que empezábamos a tentarnos, ocupaban cada vez más RAM, que cada año costaba menos y era más rápida. Además, y más importante, a medida que bajaba el precio de la capacidad de cómputo, podían hacerse cosas más interesantes. La tentación fue irresistible y nos trajo hasta los prodigios que llevamos ahora en el bolsillo; mi primera PC no habría sido capaz de ejecutar siquiera WhatsApp, por ejemplo. Qué digo mi primera PC; algunos smartphones viejos ya no podrán correr este mensajero. Destaco viejos porque en realidad estamos hablando de teléfonos que salieron hace unos diez años.
No me voy a poner a pontificar sobre los buenos viejos tiempos en los que hacías todo desde la pantalla negra y solo 1 megabyte de RAM. O cuando el núcleo de Linux cabía en un diskette. Y no me voy a poner a pontificar porque, primero, 1 megabyte de RAM ya era muchísimo y, segundo, porque los recursos visuales le permiten a más personas usar una computadora (o un smartphone, para el caso). Si no hubiera más personas usando estas tecnologías, el precio nunca bajaría.
Pero este ritmo frenético tiene su lado oscuro. Uno de los fenómenos de los últimos 30 años es que, precisamente por el aumento de la demanda y de la competencia, hubo que acelerar los tiempos de desarrollo. Con mucho cómputo y memoria muy baratos a disposición y con plazos cada vez más frenéticos, el código eficiente pasó a segundo plano. Pasamos de la mentalidad basada en la austeridad a la basada en la abundancia.
La pregunta es: ¿a qué llamamos eficiente? Si simplificamos un poco, para que esto no se vuelva del todo indigesto, un conjunto de líneas de código será más eficiente si hace lo mismo que otro conjunto de líneas de código, pero con menos consumo de cómputo y de RAM. Más uso de cómputo y de RAM significan más consumo de energía eléctrica, y, como consecuencia, más producción de dióxido de carbono. O sea, más contaminación.
Si se recurre a la micro administración del código, tomar decisiones de esta clase es teóricamente posible. El tema es que, por un lado, existen innumerables bibliotecas de software (librerías, en la jerga) que contienen código que todo el mundo usa; habría que ponerse a revisar todo eso; ¿hay tiempo? Por otro, el código puede a su vez escribir código. ¿Está diseñado para hacerlo más eficiente? ¿O al crearlo en tiempo real necesita sacarlo rápido y good enough? Esto es solo la punta del iceberg. Por ejemplo, debido a la escala, que conduce a un inevitable recambio constante, seguimos acumulando basura electrónica a tasas demenciales. Entre tanto, hay funciones que consumen energía como si no hubiera un mañana, y que sin embargo son fundamentales para el cliente y para la industria. El GPS, anoten.
En total, la cuestión no tiene una solución simple y rápida, excepto, prima facie, el código fuente abierto. Fiscalizar la calidad del software, especialmente en términos de eficiencia, es impracticable. Compañías que deben actualizar su código dos veces por semana, solo para garantizar la seguridad de sus programas, tardarían seis meses solamente en llenar el papeleo de la burocracia estatal. Además, gran parte de ese código está cerrado, y las empresas tiene derecho de mantenerlo cerrado.
Pero el software libre es un principio de solución a por lo menos dos problemas de importancia estratégica. Por un lado, saber cuán eficiente es el código, en términos de consumo de energía, y, eventualmente, mejorarlo en ese aspecto; es decir, reemplazar el intervencionismo estatal por la inteligencia colectiva. Antes de asegurar que esto no funciona porque es simple voluntarismo, miren Linux; su núcleo está en todos los teléfonos con Android. Parece que sí funciona.
Por otro lado, el código abierto permite saber qué hace exactamente el software; esto último, en un ministerio de defensa, por ejemplo, no es un asunto trivial. Con Windows no podemos saberlo. Con el software libre, aunque no sea sencillo y requiera una inversión de dinero importante, es posible. Que sea posible hace toda la diferencia.
Así que, de alguna manera, pasamos de 4000 a 4000 millones de bytes (o más) de memoria RAM en algo así como medio siglo. Es un aumento de un millón de veces. Algo semejante pasó con la capacidad de cómputo. Son datos incomprensibles. Pero no se puede negar que hemos avanzado mucho. Algunas compañías (Google, Microsoft, Amazon, Facebook), conscientes de que sus huellas de carbono son colosales, hacen un esfuerzo por emplear energías renovables. Eso está bien (sin entrar en detalles).
Pero la comprensión del impacto de las nuevas tecnologías en el medio ambiente está todavía en pañales. Una de las fuentes que cita WebsiteCarbon.com para ilustrar cuánto contaminan las nuevas tecnologías es el diario inglés The Independent, cuyo sitio no usa energías renovables y contamina más que el 87% de los otros sitios de la web. Ya conocen mi posición respecto del medio ambiente. Hasta diez líneas de código eficiente ayudan. Lo único que no sirve para nada son los eslóganes.