Transportabilidad.
Palabra que evoca desconocidos y mágicos procedimientos para trasladar aplicaciones fuente, y sin más que recompilarlas empezar a funcionar. Ni siquiera en Unix es posible garantizar esto, lo habitual es obtenerlo al 90%, pero hay que trabajárselo.
En primer lugar, el sistema operativo elegido debe cumplir escrupulosamente con el estándar AT&T SVID (System V Interface Definition), o bien XPG (X/Open Portability Guide) hasta que IEEE POSIX (Portable Perating System Interface) sea una realidad generalizada en el mercado.
Cualquier extensión que proporcione el estándar (¿ANSI?) del lenguaje de programación que utilizamos. Cualquier biblioteca que necesitemos usar y esté fuera del estándar deberá ser generada por nuestra empresa a partir de sus fuentes , y debería adaptarse en la medida de lo posible a un estándar de facto: interfaz de usuario, redes, base de datos, algoritmos científicos, operaciones financieras...
En el desarrollo de cualquier aplicación a medida existen componentes que están ligados al entorno físico de ejecución. Desafortunadamente tan solo descubriremos esto cuando movamos por primera vez nuestra aplicación. Tras un par de experiencias de esta naturaleza se aprende a programar independientemente del entorno (periféricos, formatos de ficheros, tamaños de variables), y si esto no es posible se aíslan los módulos que de él dependen. Mediante compilación condicional, a partir de un único juego de fuentes se generan los ejecutables correspondientes a otros tantos entornos específicos.
Como ejemplo de transportabilidad bajo Unix está el propio núcleo (Kernel) del sistema operativo (unas 100.000 líneas de código fuente), de las cuales están un 90% en lenguaje C, y otro 10% (5% por motivos de eficiencia, y el resto para recoger interrupciones y manipular los registros del procesador, acciones imposibles desde C estándar) en el correspondiente ensamblador de cada arquitectura. De esta manera, con un esfuerzo de 9 hombres-mes un fabricante puede instalar el núcleo de C y otro ensamblador de cada arquitectura. Naturalmente, luego es necesario un esfuerzo indeterminado (y optativo) para modificar el núcleo de manera que haga uso más eficiente de los recursos físicos. A partir de este momento pueden compilarse sin modificación alguna los cuatrocientos comandos que acompañan al sistema operativo, y con un esfuerzo algo mayor las aplicaciones de base: protocolos de comunicaciones, bases de datos, entornos ofimáticos, aplicaciones verticales y horizontales.
Esta es la magia-realidad de Unix. Si alguien duda de ello, no tiene más que echar un vistazo a la lista de fabricantes que hay bajo este sistema operativo. Cada día faltan menos.