miércoles, 14 de noviembre de 2012

El error informático

miércoles, 14 de noviembre de 2012

¿Se equivocan los ordenadores? ¿Por qué la informática tiene esa mala imagen? ¿Por qué se achacan con total naturalidad errores graves a «errores informáticos»? ¿Por qué no se solucionan? ¿Acaso los ordenadores toman decisiones por su cuenta, como en las películas? ¿Qué clase de ciencia es la informática? Algunas personas —paradójicamente no suelen estar especializadas en informática— opinan que esta área de la ingeniería no es una «ciencia exacta», y que por ello la programación de estos dispositivos esta sujeta a ambiguos vaivenes político-sociales. Si bien puede haber algo de cierto en esto, no es debido a la propia tecnología en concreto.

El Mark II (1947) fue un proyecto construido en la universidad de Harvard y financiado por la Marina de los Estados Unidos. En su diseño y construcción participaron algunos de los mejores ingenieros y científicos del momento, tras la Segunda Guerra Mundial. Hasta ese momento estas máquinas eran fiables y totalmente precisas, y sobre todo, hacían lo que se les pedía. Por ello, se utilizaban para tareas que requerían de gran seguridad y precisión, como trayectorias balísticas y órbitas de vuelos estratosféricos. Pero un día, el Mark II dejó de responder como se esperaba. No es difícil imaginar la sorpresa que experimentarían los científicos que lo manejaban, al comprobar como un ordenador matemáticamente preciso hasta ese instante, se «equivocaba».

La causa del error no fue que el programa hizo algo distinto para lo que estaba concebido. El Mark II no realizaba muchas operaciones —comparado con los actuales— pero las que hacía obedecían a un determinismo completamente científico. Cada línea de código debería estar validada según la lógica matemática, y debía ajustarse a la arquitectura física del ordenador, compuesta de circuitos electromecánicos regidos por las leyes de la física. La causa fue ni más ni menos que una polilla. Un «bicho», bug en inglés. Al introducirse una de ellas en la enorme circuitería del voluminoso Mark II, impidió el funcionamiento de uno de sus miles de aparatosos relés electromagnéticos, que en los albores de la ingeniería informática, formaban la mayor parte de su interior. Desde entonces, cada «sorpresa» que dan los programas informáticos se le denomina como bug. Por lo mismo, depurar un programa se traduce en inglés como debugger —quitar los bichos—.

La informática ha evolucionado hacia algo muy distinto de un proyecto científico y tecnológico como empezó siendo, como tampoco la propia Internet se parece a lo que en su día se pensó. Los programadores ya no son exactamente matemáticos o físicos, son en algunos casos, simples aficionados autodidactas. Los equipos se fabrican en serie, en abarrotadas fábricas en China, y las motivaciones que mueven a todos ellos son muy distintas de las de aquellos profesores de universidad, científicos y militares. Y por supuesto, los errores informáticos no son causados por «bichos».

Para entender lo que le ha pasado a la informática propongo explicar otra rama de la ingeniería: la Arquitectura. La Wikipedia la define al mismo tiempo como «Arte o técnica». Qué duda cabe que tiene algo de ambas. Para diseñar un edificio, hay que tener en cuenta la resistencia estructural del mismo, lo que implica el cálculo matemático de resistencias, tensiones, presiones y todo un gran número de parámetros físicos. Para su funcionalidad, hay que tener un gran conocimiento del entorno social y de los usuarios. Para su estética, hay que tener una sensibilidad y gracia especial. En resumen, la Arquitectura se compone de varias capas, desde la basada en la propia realidad física, hasta el más puro arte conceptual.

Con la informática es muy similar, con la diferencia que la gente no se mete dentro de los ordenadores y no existe el riesgo de que al derrumbarse, queden sepultados dentro de ellos. Por ello, nadie en su sano juicio dejaría en manos de una PC clónica con W95, el cálculo de la trayectoria de un satélite orbital, o la gestión de un sistema de monitorización médica a enfermos graves. Sin embargo, la informática se utiliza, y bastante, en estas áreas, lo que pasa es que los criterios de calidad y márgenes de error que se utilizan en estos sistemas, no tienen nada que ver en absoluto con los de «ir por casa». A pesar de la lógica aplastante de este argumento continúa existiendo una gran confusión con este asunto.

Como se ha visto, la informática parte de leyes físicas, ecuaciones matemáticas y proposiciones lógicas, básicamente. Todas ellas ciencias exactas. Sin embargo, su evolución y mejora de procesamiento, la ha llevado a realizar programas más complejos y para funciones muy diversas. Los programadores han de tener cierto «toque» personal, que en algunos casos podría considerarse alguna forma de arte. Y esto es debido a que los ordenadores no tienen que tratar únicamente con fórmulas matemáticas, sino que han de dedicarse a cosas como la llamada «interfaz gráfica de usuario».

Los recientes sistemas operativos dedican una gran parte del tiempo en el procesamiento de gráficos y en organizar la información para que el usuario sin preparación pueda utilizar un computador, algo que en los primeros años no era necesario, ya que antes de la aparición del ordenador doméstico, sus usuarios asumían que debían conocer las herramientas y adaptarse a ellas, y no al revés —cuando aprendemos a conducir un coche nos adaptamos su funcionamiento, y no al contrario—.

Con los nuevos entornos gráficos iniciados por Apple en 1983, los requerimientos de consistencia lógico-matemáticos no eran los mismos que con los computadores dedicados al cálculo matemático y cuya forma de comunicarse era mediante tarjetas perforadas. Ahora lo importante es que el usuario tenga un escritorio con iconos bonitos. A partir de este momento el computador se convirtió en un producto comercial, alejándose de su pasado y comercializándose aún sabiendo que su código estaba sin verificar acorde a criterios científicos —es muy caro hacer esto—, o directamente estaba repleto de errores—los Windows 95~XP—. Sabían que al usuario no le iba a importar, bien por lo cool que era su producto, o bien porque se lo habían pasado en un DVD «pirata».

La excepción a esta situación podría ser el sistema UNIX, un SO (sistema operativo) creado por dos científicos del MIT. Este SO funciona como un reloj, es preciso y siempre hace lo que ha de hacer y lo que se espera de él, salvo ciertas tolerancias presentes en todo proyecto de ingeniería. Basándose en él han surgido otros SO que han heredado parte de su eficacia, pero al que le han añadido la mencionada interfaz de usuario personalizada a criterio de los programadores (Linux, Mac OS X).

Por tanto, el error informático no es debido a un «defecto», o a una «imprecisión» o característica propia e inherente a la informática. Ni tampoco es ineludible. Por el contrario, los problemas típicos de la informática son debidos a la introducción de criterios alejados de su naturaleza, fundamentalmente los comerciales. Allá donde los criterios de programación pasan por filtros distintos que los de la lógica o la propia construcción física, hacen que la informática pierda su carácter de ciencia y no se le pueda exigir la precisión que se pueda esperar de una de ellas. Salvo que se refleje en el contrato comercial, claro.

Enlaces