Bugs

Hace unos días mencioné la asentada omnipresencia de los errores en la informática; una situación extrapolable, en general, a casi todos los productos de software y hardware de cierta complejidad tecnológica.

En el argot de la computación, a estos errores se los conoce como "bugs" ("bichos" en inglés), heredando una etimología que ya se venía usando en otros campos de la ingeniería al menos desde el siglo XIX y que, en el caso de la informática, se vio ciertamente reforzada a mediados del siglo XX cuando los ordenadores electromecánicos que ocupaban grandes salas fallaban a veces a causa de bichos reales, como aquella polilla del Mark II que pasó a la posteridad.

Parientes cercanos de los Gremlins, los bugs de software también tienden a esconderse de la luz, ocultándose y haciendo difícil su detección mientras permanecen agazapados para aparecer, en forma de fallos y comportamientos imprevisibles, cuando uno menos se lo espera. Alan M. Turing, uno de los padres fundadores del gremio, ya advirtió de la caótica y perversa complejidad de sistemas aparentemente simples en los que entran en juego unas pocas reglas elaboradas.

Debido a su apelativo, algo cariñoso y ya bastante familiar, existe el riesgo de subestimar su capacidad devastadora. Hay quien opina que si los defectos del software se denominasen "bombas de relojería" en lugar de "bugs", la predisposición a acotarlos y limitar su propagación por parte de los equipos y empresas desarrolladoras sería mucho más adecuada.

Y la verdad es que no parece descabellado teniendo en cuenta que la ubicuidad del software va más allá nuestro doméstico editor de textos o nuestra aplicación web favorita, sino que ha tomado ya el control de sistemas y procesos mucho más críticos en los que un pequeño error puede tener graves e incluso letales consecuencias.

Aviones estrellados, misiones espaciales fracasadas estrepitosamente, apagones energéticos y de comunicaciones, sobredosis letal de radiación en pacientes de cáncer, fallecimientos por deficiencias del sistema de envío de ambulancias e incluso alertas de seguridad nacional propias de la película Juegos de Guerra. Estas y otras muchas historias terroríficas (más de un centenar) aparecen recopiladas en Software Horror Stories. Todo un manifiesto para no tomarse esta ciencia a la ligera.


Círculos viciosos

La Wikipedia define el dialelo o círculo vicioso como el argumento circular (la pescadilla que se muerde la cola) empleado en el intento de probar una cosa mediante otra, y la segunda mediante la primera.

Esa reciprocidad en bucle, aunque a menudo se esgrime en defensa de falacias (de índole política, las más de las veces), también puede ser reflejo de una realimentación verdadera. Curiosamente, el ejemplo de Wikipedia para este último caso es uno que recientemente nos está resultando bastante familiar: «Baja la bolsa porque se asustan los inversores, y se asus­tan los inver­sores por­que baja la bolsa.»

Pero no suelen ser precisamente los accionistas ni grandes inversores los que más sufren las viciadas circularidades. Los países y poblaciones subdesarrollados, por ejemplo, suelen padecer la coyuntura de varios círculos enquistados en su contra:

Círculos viciosos del subdesarrollo

En tales y tan desdichadas circunstancias, se manifiestan tres grandes castas de bucles realimentados, correspondientes a los círculos viciosos económico, cultural y demográfico. Por si fuera poco, estos efectos se solapan entre sí formando lazos cruzados y reforzando las sinergias negativas del conjunto.

Como los bucles infinitos, los procesos viciados de esta manera sólo pueden romperse con la injerencia de agentes o factores externos al sistema. Lamentablemente y para colmo de males, como explica Juan Carlos Martínez Coll, los países menos desarrollados cuentan con algunos impedimentos adicionales como barreras de entrada a las aportaciones de cultura y capital desde el exterior.

Desde una perspectiva aún más global, también parece ineludible la existencia permanente en el mundo de otro círculo vicioso y reiterativo. Se trata de un ciclo que ha venido repitiéndose de forma inexorable desde el origen de los tiempos, sin que ninguna generación haya logrado aprender a esquivarlo por completo. Pete Seeger ya lo describió con lírica pero acertada sencillez en su florido himno de 1961.


La expansión del conocimiento

Parece evidente que la Wikipedia crece y lo hace a buen ritmo, pero ¿qué patrón particular sigue su expansión?

Esta es la pregunta a la que da respuesta un reciente estudio sobre la enciclopedia colaborativa, en el cual se plantean, como hipótesis de partida, dos posibles esquemas de crecimiento:

  1. Aumenta el número de nuevos conceptos que carecen aún de artículos correspondientes.

  2. El número de conceptos nuevos crece más lento que el número de artículos o entradas.

En el primero de los casos la cobertura de Wikipedia se iría deteriorando gradualmente conforme se fuesen incorporando conceptos huérfanos de artículos que los definan. En el segundo caso, por el contrario, el crecimiento de Wikipedia podría llegar a estancarse.

El estudio sugiere que la expansión de Wikipedia se sitúa en un punto intermedio y equilibrado entre ambos extremos, comprobándose que el ratio entre conceptos definidos y sin definir se ha mantenido estable a lo largo del tiempo.

Además, se comprueba que el nacimiento de nuevos artículos se produce de manera colaborativa, cuando los editores añaden las páginas para las entradas que faltan, y con la particularidad de que la mayoría de los nuevos artículos surgen a partir de los artículos existentes más populares.

Este patrón de crecimiento, denominado preferential attachment, no sólo le garantiza a la Wikipedia un futuro de expansión saludable (sin perjuicio de la usabilidad), sino que constituye también una buena parte de la explicación de otros fenómenos y dinámicas como las citas de artículos científicos, la colaboración entre personas, la World Wide Web y hasta la propia Internet.

No exactamente igual, pero sí con ciertas similitudes, es otro patrón que yo he venido observando a la hora de desempeñar ciertos trabajos y tareas tales como el análisis y diseño de sistemas de software, la elaboración de documentación o la escritura literaria.

Tanto de forma individual como (y especialmente) en la colectividad de un equipo de trabajo, surgen las siguientes fases al abordar un proyecto o problema cuyo alcance o dominio no está completamente definido o es aún desconocido:

En la primera etapa hay tantos conceptos nuevos y desconocidos que el único enfoque posible es enumerarlos y recopilarlos a modo de tormenta de ideas o lista de tareas.

Después ya se puede empezar a agruparlos en temas, identificando los conceptos clave y sus aspectos colaterales. En este punto la perspectiva del problema es aún incompleta, y por ese desconocimiento es cuando la dimensión del mismo parece mayor.

Gradualmente se empiezan a detectar relaciones y dependencias entre los temas, que no suelen ser compartimentos estancos sino que comparten y reutilizan conceptos.

Una vez formalizados los vínculos, semejanzas e interrelaciones, el último paso consiste en la abstracción y consolidación de conceptos, extrayendo un conocimiento generalizado gracias a que ya disponemos de la perspectiva global completa.


La teoría Long Tail, en entredicho

A través de la ACM, me entero de un artículo en el Wall Street Journal que habla de un estudio que vendría a refutar algunos aspectos de la teoría de nichos, o de la larga cola, bautizada así por Chris Anderson, el editor de la revista Wired, en su libro de 2006, y difundida rápidamente como la pólvora en esta red nuestra de cada día.

A falta de profundizar más en la lectura del estudio, parece ser que su autora, Anita Elberse, ha utilizado técnicas similares a las de Anderson para analizar y comparar los patrones de compras y mercados online y offline, descubriendo que no son tan diferentes como presume Anderson.

Yo ya he comentado alguna vez mi modesta comprobación empírica de algunos de los valores y dinámicas del mercado de nichos, pero tampoco me parece desacertado adoptar algo de la actitud escéptica como la que se desprende del artículo del WSJ frente a algunas de las teorías lanzadas desde las páginas de Wired.

Muchas de esas teorías de vanguardia son abrazadas a veces con más entusiasmo que juicio crítico por parte de cierto gremio techie (en el que incluyo mi parte de culpa), tal vez deseoso de popularizar la novedad para hacernos creer que formamos parte de una revolución que está cambiando el mundo como nunca, aun cuando ese mismo mundo se empeñe (sobre todo en cuanto a las fuerzas e inercias económicas) en seguir tan igual como siempre.


Penaltis analógicos y digitales

Muchos de los que vieron los últimos instantes del partido de fútbol de ayer (ya fuere por interés forofístico o meramente sociológico) y lo hicieron a través de una emisión de televisión digital terrestre (TDT), pudieron comprobar como el efecto de retardo o latencia restaba emoción a los lanzamientos de los penaltis.

Los gritos de alborozo o los silencios en un vecindario aún no homogeneizado por el apagón analógico, se anticipaban como por arte de magia a las imágenes de la pantalla, y podían escucharse jubilosos gritos celebrando cada gol (o cada fallo del contrario) aún cuando en el televisor el balón ni siquiera había sido chutado aún por el futbolista.

Esta curiosidad, de la que ya se ha hablado en alguna nochevieja, al hilo de la precisión cronográfica de las campanadas de fin de año, me hizo recordar la inmediatez de lo analógico frente a lo digital. Antes de la ubicuidad de los ordenadores digitales, la computación analógica tenía cierto protagonismo y, sobre todo, un cierto encanto de artesanía e invención.

Así, por ejemplo, con poco más que un tornillo rodando sobre un disco a una distancia móvil de su centro podía calcularse la integral la función definida precisamente por esa distancia variable. Tan sólido mecanismo, resistente a interferencias electromagnéticas, podía usarse, por ejemplo, para autodestruir un cohete que se hubiera desviado de su trayectoria prevista en una distancia superior a la permitida.

Por lo general, la computación analógica es instantánea en el proceso de cálculo, pero la tarea de preparación de los datos de entrada o de extracción y análisis de los datos de salida no es tan trivial. Precisamente la facilidad y comodidad de manipulación es la gran ventaja de los datos digitales, pese a que su cómputo no sea tan inmediato.

Algunos otros ejemplos de artilugios analógicos aparecieron en las páginas de Investigación y Ciencia durante la década de los 80, y también en el libro "Aventuras informáticas" de A. K. Dewdney (Editorial Labor, 1990). Entre los cachivaches, más curiosos que útiles, propuestos para distintos problemas específicos, se encontraban los siguientes:

El ordenador a spaghetti, capaz de ordenar un notable volumen de números (representados por spaghettis de distinta longitud) de forma instantánea, sin más que dar un golpe seco contra la mesa.


Determinación de la envoltura convexa de un conjunto de puntos del plano, sin más que usar una banda elástica.


Artefacto para hallar la recta que mejor se ajusta a una nube de puntos, también basado en gomas elásticas.


Calculadora de la media aritmética de varios números. Primero se llena cada depósito hasta la marca de cada número; después se abren las válvulas y el nivel de líquido se estabiliza justo en la media aritmética.


Ordenador analógico para resolver una ecuación cúbica, estando representados los términos de x, x2 y x3 por un cono, un cilindro y un paraboloide respectivamente.

El libro proponía otros tantos artilugios igualmente curiosos, y todos ellos basados en propiedades o relaciones físicas. No dejan de ser curiosidades, que no le quitan a lo digital su protagonismo en la revolución de nuestro mundo. Pero también nos recuerdan que no todo en el progreso tecnológico está tan claramente delimitado, y todavía quedan huecos para que el mundo analógico le marque un gol al fenómeno digital.