La sociedad actual ya podría ser denominada como la “Sociedad Tecnológica”, y además está en pleno proceso de transformación a lo que sería ya la “Sociedad Técnica” como les hemos explicado en diversas ocasiones. En ese camino de (también inevitable) futuro se cruzan alargadas sombras de profunda incertidumbre como es ese cercano fin de la premonitoria Ley de Moore, y que augura el fin de la era del hardware eternamente más potente con cada nueva generación de smartphones u ordenadores.
Pero no todo son malos augurios, y el hecho es que salida tecnológica posible al desastre del fin de esa ley verdaderamente la hay. El “pequeño” problema es que esa (casi) única salida conocida se asienta precisamente sobre un terreno muy muy pantanoso (y costoso) y en el que, a pesar de su gran carácter estratégico, además Occidente ha retrocedido en muchos frentes: el software. ¿Hemos servido en bandeja de plata nuestro futuro socioeconómico a esos competidores nuestros que desarrollan? Pues sí, no sólo les hemos entregado incondicionalmente nuestro futuro, sino también buena parte de nuestra tecnología y nuestros mercados. Un mal movimiento en el tablero que podría llevarnos a un jaque-mate inconscientemente voluntario.
La Ley de Moore tenía que llegar algún día al fin de su línea de vigencia
A buen seguro que ese nombre de Moore les resultará muy familiar a los más tecnófilos, al igual que su ley. En verdad, la famosa Ley de Moore ha resultado ser una de las leyes que más sorprende que haya mantenido su vigencia durante tantas décadas desde que Moore la enunciase. El asunto fue casi más premonitorio que fundamentado, puesto que en aquel momento era imposible predecir qué avances y descubrimientos se harían en el campo de la micro-electrónica, de tal manera que la miniaturización y la progresión de la potencia informática fuesen predecibles hasta el punto de enunciar una ley. Y fue allá por 1965 cuando Gordon Moore afirmó que el número de transistores por unidad de superficie en una placa electrónica se duplicaba anualmente, y que esa progresión se mantendría durante dos décadas. En 1975, Moore se corrigió ligeramente a sí mismo al contar ya con más datos empíricos en la mano, y admitió que el ritmo de progresión en la integración electrónica sería de duplicarse, pero cada dos años en vez del uno inicial. Semejante ritmo incansable de progresión exponencial se ha venido manteniendo incluso mucho más allá de las dos décadas previstas originariamente, y en nuestros días (mayormente) se sigue cumpliendo.
Pero ya en 2007 el propio Moore vaticinó el fin próximo de su propia ley, y dijo que en el plazo de 10 o 15 años la ley dejaría de cumplirse, si bien vaticinó que una nueva tecnología tomaría el relevo del progreso en la capacidad computacional. Tal vez ni siquiera el propio Moore pudiese imaginar allá por 1965 los motivos por los que ahora su Ley está perdiendo vigencia, pero éstos no son ni menores ni superables en algunos casos. Y es que la miniaturización extrema a la que han llegado los microprocesadores, y más concretamente los transistores impresos sobre obleas de Silicio, ha llegado a una escala tal que surgen graves problemas, entre los cuales destaca por insuperable que sus propiedades eléctricas macroscópicas ya no son lo que prima en cómo los electrones fluyen por ellos: la escala es ya tan pequeña que la electrónica ha entrado en un terreno en el que las leyes cuánticas empiezan a aplicar, inutilizando mayormente la electrónica clásica tal y como la conocemos.
Y ya que nombramos aquí la mecánica cuántica, hay que decir que efectivamente la tecnología de computación cuántica es una posible salida adelante en términos de hardware, que así volvería a dar un gran salto en potencia, pero el problema son los plazos: la vigencia de Ley de Moore se agota ya año tras año, mientras que el ordenador cuántico está todavía muy lejos de ser una realidad comercial y de mercado masivo. Así pues, se hace necesario encontrar otra solución, al menos para el impasse. Y hay otras soluciones hardware sobre la mesa, como son las tecnologías de microelectrónica tridimensional con transistores 3D, transistores impresos sobre galio en vez de sobre silicio, o las arquitecturas de computadores 3D con varios transistores “apilados”, pero parece que tampoco vayan a poder dar mucho más margen para mantener en el tiempo los resultados esperados, al menos no en la misma progresión exponencial de Moore y menos con carácter pseudo-ad-infinitum de décadasdécada,s que en tecnología son toda una eternidad.
Y entonces ahora la pregunta es: ¿Qué tecnología y cómo puede tomar el relevo de un ritmo tan exponencial, en torno al cual se ha estructurado no sólo el mercado y el sector, sino toda la tecnología más fundamental?. Porque no se trata simplemente de que usted ya no vaya a disfrutar de un salto en potencia cada vez que cambie de smartphone como el que veníamos acostumbrando (algo que realmente ya ha empezado a ocurrir), las implicaciones últimas de todo esto van mucho más allá, y algunas de ellas son incluso una amenaza muy cierta para nuestras socioeconomías. Sin ir más lejos, la posibilidad de que los gobiernos y las grandes compañías puedan disponer de superordenadores sensiblemente más potentes que los del lado oscuro otorga al lado “menos oscuro” del panorama tecnológico una clara ventaja. Y que conste que afirmamos esto pasando de puntillas sobre esas redes distribuidas sobre miles de ordenadores infectados con malware, y formando una red sincronizada dirigida por los hackers contra sus objetivos, lo que con la Internet de las Cosas es una amenaza en -y de- potencia que sólo irá a más.
Que deje de haber ordenadores cada vez más potentes no sólo tiene además implicaciones sobre la ventaja en hardware para los pocos que se lo pueden permitir, ya que la potencia más innovadora está al alcance casi exclusivamente de gobiernos y grandes compañías precisamente: ese mercado de supercomputación es muy estrecho y está muy controlado, y es imposible que una red de hackers gubernamentales como las que hay a decenas en la península de Crimea puedan hacerse con uno fácilmente (por eso recurren a las redes distribuidas). Pero aparte del hardware, está el tema del software, y corriendo sobre un “hierro” casi igual de potente que la generación anterior, ya no será posible la clásica huida adelante por la que se podían utilizar claves criptográficas cada vez más fuertes, y que siempre requieren de un hardware sensiblemente cada vez más potente, que ahora ya va a dejar de ser tal: la seguridad informática está en gran riesgo con la defunción de la Ley de Moore, siendo el verdadero Talón de Aquiles de la “Sociedad Técnica”. Y hablando de software… Tal vez sea en ese mismo software primo-hermano del hardware donde esté la clave para vadear el potencial desastre del fin de la Ley de Moore.
La solución más inmediata para el hardware está en… ¡El software!
Pues como ya bien apuntase el MIT Technology Review en este excelente artículo, la Ley de Moore ha tenido también un lado bastante negativo para nuestro progreso tecnológico y socioeconómico. Y es que la industria del software ha caído presa de la complacencia de saber que su software no tenía porqué ser eficiente en el uso de los recursos hardware, pues éstos siempre iban a acabar llegado más potentes y más baratos en un futuro próximo. Eso por no hablar del binomio de simbiosis (para ellos) por el que las nuevas versiones de sistemas operativos y de programas requerían que te comprases un ordenador más potente, que a su vez permitía software más voraz en consumo de recursos hardware, que te acababa volviendo a hacer migrar de “hierro”. Vamos, una espiral cuasi-infinita en la cual el que siempre acababa pagando era el consumidor informático (que somos ya todos), y que ahora que toca a su fin, dejando en evidencia con la bajamar además que ese software tan voraz en hardware ahora mismo presenta grandes (grandísimas) deficiencias en lo que a eficiencia de consumo de recursos hardware se refiere.
Y ahí está el margen de mejora en rendimiento que no es que sea mucho, es que es muchísimo. Es totalmente cierto que salimos (esperemos que momentáneamente) de la era del hardware cada vez más potente, pero esperemos que sea sólo para entrar en la era del software cada vez más potente con los mismos recursos. He aquí un excelente candidato para cubrir ese impasse que les decía que hay en nuestra línea de vida tecnológica, como mínimo hasta que la computación cuántica y otras tecnologías hardware sean viables comercialmente a gran escala. Y este tema de la eficiencia del software no es baladí ni mucho menos, puesto que tecnologías como la Inteligencia Artificial, el Big Data, o algunas otras que están transformando digitalmente nuestro mundo, hoy por hoy requieren millones y millones de ciclos de microprocesador (y por tanto de potencia de proceso) para poder dar sus mejores frutos, así que este tipo de nuevo software deberá aportar a nuestra socioeconomía por partida doble: por sus nuevas funcionalidades y capacidades, y a la vez por su inevitablemente mayor eficiencia desde su mismo diseño y desarrollo.
Y que conste que la capacidad de mejora del software no va asociada únicamente al código de las aplicaciones que utilizamos como usuarios finales, sino que aplican de forma agregada a todo el stack tecnológico que corre por debajo hasta llegar al “hierro”, abarcando contenedor, middleware, sistema operativo, hipervisor (si lo hubiere)… hasta llegar incluso al microcódigo propio de las instrucciones del procesador, que deberán diseñarse de forma que haya procesadores especializados para los diferentes tipos de software que pueden “correr” sobre ellos. Todo ello aportaría un descomunal efecto multiplicador a toda la potencia adicional que puede “regalarnos” una mejora en la eficiencia del software.
Pero así visto el problema no es realmente tecnológico… ¿Qué tipo de problema hay entonces?
Como ven, el problema realmente no es tanto técnico, como ciertamente económico, motivo por el que hemos decidido analizarlo desde un medio como El Blog Salmón. Porque cambiar las arquitecturas de todo el Stack de software (e incluso los propios lenguajes de programación), para hacerlos mucho más eficientes, no requiere precisamente poco dinero. No es poco ni en términos del coste de re-escribir trillones y trillones de líneas de código que ya están actualmente en producción y que habría que re-escribir; no crean que cada nueva versión de un programa trae nuevas todas y cada una de sus sentencias, sino que es todo lo contrario, y más allá de lavados de cara y meros cambios de interfaz, lo cierto es que incluso las funcionalidades totalmente nuevas se basan en gran medida en código ya desarrollado anteriormente. Les sorprenderá saber que en no pocos casos esas líneas de código reutilizado puede llegar a datar incluso de los años 90 o más allá (el propio lenguaje ensamblador de las arquitecturas x8086 son el mejor ejemplo).
Así que decíamos que hacer el código más eficiente no sería en absoluto barato. Tampoco lo es en términos de alumbrar una nueva tecnología de software que estaría por venir, y que nos devolviese a la gran eficiencia de aquel C de los 90 que sigue batiendo por mucho a los lenguajes mayormente interpretados de hoy en día como Python o Java, pero que a la vez permita “tirar” líneas de código fácilmente en un entorno ágil para el desarrollador. No lo es tampoco en términos de cambiar el micro-código de los procesadores, lo cual forzaría a una generación de hardware y software totalmente nueva muy posiblemente sin mucha retro-compatibilidad. Y por último, no lo es en términos de profesionalización de una industria como la informática en la que, salvo empresas punteras, parece que se piensa que cualquiera puede valer para desarrollar un software que luego no resulta aportar la calidad que podría, en muchos casos por no haber sido desarrollado por un ingeniero informático profesional con la debida formación y experiencia. Y además, en términos de eficiencia, así "mataríamos dos pájaros de un tiro", y la eficiencia de código, además de en eficiencia de recursos hardware, se convertiría también en una no menos esencial eficiencia energética, que, según ya les analizamos, es un infranqueable techo de cristal para tecnologías como la Inteligencia Artificial en la era del cambio climático.
Y ya que la esencial calidad del software sale a colación, exponemos todo lo anterior por no entrar a hablar de lo que diversos expertos en software han dado en llamar el “Apocalipsis del software”, y por el que esa deficiente calidad del código puede acabar trayendo graves consecuencias y disrupciones de servicios esenciales en otros aspectos al margen de la eficiencia, con un potencial impacto masivo sobre la población, e incluso sobre su seguridad más básica y personal. Es un extremo que ya ha llegado a ocurrir parcialmente, como muy bien retratase en este interesantísimo artículo el diario “The Atlantic”, que cuenta cómo una mala calidad de un código de décadas atrás provocó incidentes muy graves sobre un servicio de emergencias en EEUU, con todas las severísimas implicaciones que supuso, como ambulancias o patrullas policiales que no llegaban en momentos críticos.
Éste es un panorama sectorial del software especialmente lacerante en el caso de España, donde los desarrolladores se colocan en la escala más junior y sin experiencia (léase peor retribuida y lamentablemente menos valorada) de la escala empresarial. Por que se hagan una idea de la situación, en España se vienen contratando desde hace años para programar incluso a numerosos licenciados en Filosofía y Letras (con todos mis respetos a los mismos) u otras licenciaturas que tienen todavía incluso menos que ver con una formación mínimamente especializada, que al menos avale el desarrollo de un software profesionalizado y de la calidad que la excelente formación nacional en Ingeniería Informática (o similares) puede proveer, aportando conocimientos desde el primer día de beca o contrato. Lo cierto es que al mercado laboral informático español le separan años luz del de otros países como EEUU o Alemania, donde un ingeniero informático senior puede acabar desarrollando toda su carrera como desarrollador, y percibiendo por ello una buena remuneración, que incluso puede superar ampliamente a la de su responsable. Aún estamos a tiempo de que en España la cosa deje de ser así, porque realmente los desarrolladores son los que producen la materia prima del sector que es el software, y sin calidad de materia prima no hay mucho futuro.
Y además de todo lo anterior, tenemos el otro gran “pero” de la dinámica en la que en las últimas décadas se han embarcado suicidamente nuestros sectores del desarrollo del software. Como les decía al principio, Occidente puede ser que haya retenido patentes y derechos de propiedad y uso sobre los desarrollos que nuestras compañías han sufragado para alumbrar toda una nueva generación de servicios y aplicaciones informáticas. Pero el hecho es que el “expertise” del software ha sido también en gran medida deslocalizado (“externalizado” para los eufemísticos) a terceros países, mediante subcontrataciones en la mayoría de los casos por motivos económicos, y pagando a los desarrolladores de otros países tan sólo una fracción de lo que costarían esos mismos desarrollos aquí. Eso por no hablar de los plazos de entrega o de los derechos laborales inherentes a las condiciones contractuales allende los mares, derivando todo ello en un complejo panorama que ya está agitando a los propios trabajadores occidentales del sector. Así por ejemplo, India es toda una potencia en desarrollo de software, y los indios tiran millones de líneas de código cada día no sólo desde oficinas ubicadas en suelo estadounidense, sino que también millones de ellos lo hacen desde su propio país en el marco de contratos de comercio internacional.
El extremo (extremísimo) de esta suicida (y en parte explotadora) tendencia deslocalizadora del software, está por ejemplo aquellos cruceros poblados por desarrolladores casi siempre indios con unas condiciones de trabajo bastante lamentables, y que echaron el ancla en el límite de las aguas internacionales de la costa californiana para soslayar desde allí la legislación laboral estadounidense, pero desde donde sus ejecutivos iban continuamente en helicóptero a California para negociar contratos y conseguir clientes para su empresa. Es una práctica que se engloba dentro de lo que se denomina como desarrollo de software “offshore”.
Efectivamente, el problema al que se enfrenta el estado actual del software de nuestras socioeconomías para poder ejercer de salvador (temporal) de último recurso es que es un auténtico monstruo que nos ha crecido entre los brazos, y ha sido lamentablemente así por no haber hecho las cosas bien y con la calidad adecuada desde el principio. En vez de ello, se ha querido creer cortoplacistamente que “todo era Jauja”, y que además lo seguiría siendo por los siglos de los siglos. Pero no será porque desde aquí nos resignemos y no nos empeñemos en ser irreductiblemente optimistas (mientras haya margen para ello), y podemos afirmar que no hay mal que por bien no venga, y que, a pesar de todo, al menos ahora el software ineficiente nos da un nuevo gran filón de posible margen de mejora mientras que la tecnología cuántica y otras acaban de estar suficientemente maduras. El que no se consuela es porque no quiere, y el que no es eficiente es porque no ve la necesidad. Dicen que la economía es la ciencia de la escasez, y no sé si este extremo es realmente cierto, pero lo que tengo meridianamente claro es que en la escasez está la eficiencia, y que cuando no hay escasez de recursos, una gran parte de cualquier colectivo o sector se dedica a “atar los perros con longanizas”: en el sector del software también ha llegado el momento de coger las longanizas y utilizarlas para producir esos bocadillos que serán el futuro pan de nuestros hijos, que en realidad son los hijos de esa inevitable "Sociedad técnica”, que lo es de todos y para todos, y de la que nadie podrá escapar.
Imágenes | Pixabay Elchinator | Pixabay TheDigitalArtist | Pixabay geralt | Pixabay TheDigitalWay | Pixabay TheDigitalArtist