Leo en «The Quintessential PIC Microcontroller» al respecto de la historia de las primeras máquinas de 8 bits y sobre el desarrollo de los microprocesadores de ese entonces. El 8088, el 6800, el 6502, el mismísmo Z80. Todos tenían pros y contras y la realidad es que había pocas diferencias significativas. Pero la batalla para hacerse del mercado masivo empezaba.
Por ejemplo, la Apple II se basó en el 6502, un microprocesador que era diseñado por Chuck Peddle, quien fuese el responsable también del diseño del 6800 de Motorola. El 6502 se parecía realmente mucho al procesador de la familia Motorola 68xx y eso significaba que tal vez podían ser compatibles pin a pin, «patita con patita». Pero curiosamente, Motorola demandó a MOS Technology (los que hacían el 6502) para que no pudiesen ser compatibles pin a pin, esto es, no podían ser intercambiables.
Más allá de la fascinante historia de cómo el hardware ha sido desarrollado y cómo los microprocesadores han llegado a tener cada vez más poder, es claro que en el sistema capitalista, que es donde el cómputo finalmente se ha desarollado, las batallas por ser el líder del mercado llevan a estas extrañas paradojas. Por ejemplo, si la familia de Motorola, la 68xx era tan poderosa y el 6502 podía ser compatible pin a pin con ellos, ¿por qué no dejarlo? ¿Temían acaso que la gente decidiera poner procesadores 6502 en sus máquinas desplazando los Motorola 6800 que venían en esas computadoras de 8 bits? Si un producto es bueno o mejor que el de la competencia, ¿no bastaría esto para mantenerse en el gusto del público? Pero más aún ¿en términos de diseño y electrónica, no habría sido conveniente mantener una compatibilidad pin a pin entre esas familias de procesadores?
Porque en otros ámbitos, por ejemplo, muchas veces lo que se busca es que diferentes plataformas usen las mismas herramientas. Por ejemplo, hay ambientes de programación que permiten usar diferentes lenguajes. El editor, el entorno, es igual para Lisp, Java, Pascal, C, etcétera, y esto hace que los desarrolladores de herramientas no tengan cada uno que escribir su propio sistema para programar. Esto sin duda ahorra tiempo y simplifica la problemática de muchas herramientas.
En ajedrez computarizado, ya hemos hablado de protocolos de comunicación entre interfaz gráfica y motor de ajedrez. Hay dos protocolos populares, Universal Chess Interface (UCI) y XBoard/Winboard. Esto conlleva enormes ventajas, pues el o los programadores de los motores de ajedrez pueden dedicarse exclusivamente a resolver los problemas de programación y no tener además que lidiar en cómo van a presentar el tablero de ajedrez al usuario en la pantalla.
La actitud de Motorola me sorprende pero la comprendo. No tienen necesidad de poner en bandeja de plata su tecnología para hacerse compatibles con nadie si no quieren, pero sin duda eso por una parte, hace que otros desarrollos tengan que hacerse de nuevo desde cero, en lugar de sacar ventaja de lo que ya está hecho. Por otra parte, quizás promueve que la competencia decida trabajar más duro para sacar un producto mejor. Y si regresamos al presente y vemos que AMD tiene sus líneas de procesadores e Intel tiene la suya, probablemente no son compatibles pin a pin por razones similares.
Un ejemplo más, Apple liberó su código fuente del sistema operativo de discos de su Apple II. El DOS 3.3 fue muy funcional en su momento en esas computadoras de 8 bits. Hoy día quizás podría servir este código para echar a andar sistemas embebidos, pero si se quiere usar este código comercialmente hay que todavía pedirle permiso a Apple. Pienso que han pasado ya tantos años que esta restricción es de alguna medida absurda.
El mundo del capitalismo es sin duda salvaje en muchos sentidos, pero en ocasiones parece ir contra la lógica más elemental y afecta tal vez el desarrollo tecnológico, que podría acelerarse si no hubiese estas restricciones.