17 de septiembre de 2012.Pienso que desde que el cerebro humano nos ha dotado de la capacidad de representación delmundo, "lo mágico", como representación de aquello maravilloso y sin explicación lógica, ejerce unafuerza de atracción de la que pocos nos podemos librar. Desde los primeros momentos de nuestravida estamos a merced de una "papilla" de magia que nos llega por doquier: los cuentos de hadas,los dibujos animados, las películas infantiles y no tan infantiles, el cine en general, los videojuegos,...Las matemáticas como modelo explicativo del universo en el que nos ha tocado vivir es víctima deuna creencia en la que se otorga cualidades extraordinarias a los números, pero aunque esta ideaesté presente, y con cierta razón, desde los clásicos griegos, hace ya tiempo que la numerología seha desmarcado de las matemáticas y persiste hoy día como "pseudociencia" siendo campo abonado para incautos que caen en el negocio del tarot, horóscopo y toda clase de "videntes". Aúnreconociendo cierto efecto mágico a números cuya función explicativa de las leyes del universo esclave, como el número pi, phi, nº de euler, nº de avogadro, la relación áurea, etc, lo cierto es que elconcepto de "número mágico" puede aplicarse a cualquier número y a cualquier cosa. Como sesuele decir, "busque usted cualquier propiedad mágica, y la encontrará".En cuanto al mundo de la programación informática se refiere, posiblemente sea esta idea depropiedad especial lo que confiere el nombre de "número mágico" a una forma de programarpotencialmente perniciosa. Recuerdo bien mi época de estudiante universitario en informática, que,en alguna clase de programación, surgió para mí, por primera vez, este término: "LLámese númeromágico a la inserción directa en el código fuente de ese número".Veamos un ejemplo extremo (¿o no?), que facilita la comprensión del concepto.Supóngase que una empresa contrata a un trabajador autónomo con una tarifa de 90 euros/hora yuna carga de trabajo de 6 horas diarias durante 50 días.Al final del periodo contratado, una forma de calcular el coste del trabajo realizado sería:CosteTrabajo = 50 * 6 * 90Pero con estos tres números de pueden realizar además variadas operaciones, por ejemplo, horastrabajadas:HorasTrabajadas = 50 * 6O también coste diario:CosteDiario = 90 * 6A estos números, así utilizados se les ha llamado "número mágico" y el efecto pernicioso se puedever claramente cuando cambia el valor de la tarifa, o duración del contrato o la carga diaria de trabajo. Si los cálculos utilizados con estos números están muy repartidos por todo el código del programa,la actualización del software puede ser muy tediosa y por supuesto costosa, en tiempo y en dinero.¿No se percibe aquí esa "magia", en este caso "magia negra" asociada al número en cuestión?.Ni qué decir tiene que los números mágicos en programación han de evitarse todo lo posible. Unasolución a nuestro ejemplo podría ser:Variable Declaration Tarifa = 90 DuracionContrato = 50 TrabajoDiario = 6 CosteTrabajo = DuracionContrato * TrabajoDiario * Tarifa HorasTrabajadas = DuracionContrato * TrabajoDiario CosteDiario = Tarifa * TrabajoDiarioEl coste de mantenimiento del software disminuye muchísimo. Por supuesto, por "número mágico" no me refiero únicamente a números, el concepto se puede ampliar a todo tipo de datos, porejemplo, una cadena de caracteres.Pero seamos críticos y observemos la aplastante realidad de la vida cotidiana. Aunque muchaspersonas hayamos obtenido titulación universitaria en informática, y tengamos en teoría unaformación depurada, incluyendo desde luego este concepto de número mágico, se puede ver código lleno de números mágicos. Que cada cual lo observe en su correspondiente lugar de trabajo, que ano ser que exista un procedimiento que lo contemple explícitamente, este tipo de magia estarápresente en los programas corporativos. En cuanto a código público, pues tengan ustedes lacompleta libertad de echar un ojo a manuales de ayuda oficiales, webs de divulgación deprogramación y algún software libre.Algunos factores podrían estar detrás de la eterna presencia del fantasma del número mágico.1. El programador no tiene formación adecuada.2. Aún teniendo formación, el programador no tiene la experiencia suficiente para aplicar proactivamente lo aprendido.3. La presión de tiempo por una entrega del producto puede hacer que se programe "como sea".4. Se programa en un entorno cultural indisciplinado y caótico.5. No existen referencias externas que induzcan a una programación adecuada en el entorno cultural (programadores de mayorexperiencia o normas corporativas).etc.Aunque seguramente no podremos eliminar por completo de nuestros códigos el número mágico, pienso que con no mucho esfuerzopodremos conseguir software de mayor calidad y con efectos potenciales menos perniciosos. Quizás en un entorno cultural que premie la calidad podamos encontrar actividades que por un lado evite una programación descuidada y por otro lado detecte los descuidos en laprogramación. Quizás sea un problema de voluntades.Proyecto de expresión y espacio para la tecnología, cultura, empresa, estética y humanidades en generalInformación legalLa eterna presencia del fantasma del número mágico.