domingo, 2 de noviembre de 2008

Desarrollo de software multiplataforma II

(Esta es una continuación de la discusión iniciada en la entrada "Desarrollo de software multiplataforma")

Las técnicas de programación multiplataforma se conocen desde hace 40 años. ¿Por qué la industria de la computación dejó de lado todo ese conocimiento, y los programadores redescubren hoy la programación multiplataforma como una novedad?

La IBM PC trajo consigo a las computadoras genéricas, clones, o IBM PC compatibles. Los programadores de aplicaciones para el IBM PC y para el sistema operativo DOS no necesitaban conocer nada acerca de los fundamentos teóricos y los elementos esenciales de los sistemas operativos multitarea/multiusuario desarrollados desde los 60, tales como
  • Procesos, bifurcaciones, procesos hijos, hilos. El DOS no provee funcionalidad para ninguno de estos conceptos de software, fundamentales para la multitarea
  • Pipes, filtros. DOS posee mecanismos rudimentarios de pipes y filtros
  • IPC o Intercomunicación entre procesos. Como DOS no estaba diseñado para multitarea, la intercomunicación entre procesos es un concepto sin sentido
  • FIlesystem o sistema de archivo. En DOS la organización de archivos está programada estáticamente en el sistema operativo y no se puede cambiar. En sistemas tipo Unix el gestor de sistemas de archivos es un simple driver que se puede cambiar dinámicamente, incluso en funcionamiento
  • Lock o cierres de exclusión mutua. Este es un concepto MUY asociado a sistemas multitarea. Permiten bloquear el uso de algún recurso de la computadora por parte de un proceso, para que otros procesos no usen en ese momento el mismo recurso. En DOS no existe este concepto, aunque los programadores encontraron formas rebuscadas de simular locks, como por ejemplo en los programas antivirus "residentes" que podian acceder a los discos al mismo tiempo que los programas (si bien los antivirus son un ejemplo de programas funcionando en multitarea, a esta funcionalidad no la provee el sistema operativo, ya que depende de un método propio del DOS, que es la utilización de programas residentes. Los virus para DOS usaron este mecanismo antes que los antivirus).

Ya que no hacía falta concentrarse en todos estos conceptos y problemas de diseño asociados a los sistemas multitarea/multiusuario, los compiladores para DOS proliferaron, y por lo tanto la industria de software para DOS floreció a un ritmo nunca antes visto, alejando irreversiblemente a los programadores de la Ciencias de la Computación .

Conclusiones

A mi entender, estas son las razones por las que los programadores se alejaron de la programación multiplataforma y de las bases científicas/matemáticas de la computación.

La arquitectura IBM PC+DOS logró retroceder el desarrollo de la computación en 20 años, volviéndola más primitiva de lo que los teóricos de los primeros sistemas operativos multitarea/multiusuario podrían tolerar.

Hoy en día, con computadores que contienen múltiples CPUs, y dado que la construcción de clústeres y sistemas distribuídos es moneda corriente, el ingeniero de software no puede ignorar ni eludir los conceptos y arquitecturas desarrolladas en los sistemas operativos tipo Unix.