¿Alguna vez ha resuelto algún problema crítico con una computadora en alguna industria?

Sí. Hay toda una rama de la informática, llamada Métodos formales, cuyo objetivo es hacerlo.


La idea básica es bastante simple de explicar.

Tome un sistema, cualquier sistema. Podría ser una planta industrial, un avión o una embarcación de tendido de tuberías submarinas. También podría ser una pieza de software, una CPU o una red de comunicación.

Un modelo del sistema está escrito por humanos en un lenguaje formal, cuya sintaxis es precisa y no ambigua. El modelo describe completamente el sistema con todas sus propiedades.

Usando el mismo lenguaje, es posible escribir propiedades que describan comportamientos “buenos” y “malos” del sistema.

Una vez que todo esto se ha hecho, se ejecuta a través de un tipo especial de software, llamado verificador de modelos . Utilizando algoritmos complejos y propiedades lógicas, el verificador de modelos verifica que todas las condiciones “buenas” se cumplan y que todas las condiciones “malas” nunca sucedan. En todos los casos posibles.


Esto es exactamente “resolver problemas críticos”, excepto que se hace antes de que sucedan. Se realiza incluso antes de que se construya el sistema .

Esto es lo que Intel y otros fabricantes de CPU hacen actualmente. En lugar de construir un nuevo procesador (que requiere la creación de una línea de conexión) y probarlo, primero escriben un modelo y hacen que una de sus grandes supercomputadoras verifique su bondad utilizando técnicas de verificación de modelos.

¡Sí! ¡Todo el tiempo! ¡Todos los días!

Las simulaciones computarizadas se utilizan en el diseño de todo tipo de cosas.

Por ejemplo, estaba haciendo un conjunto de tres bloques de construcción para niños, del tipo con una letra del alfabeto en cada cara. Quería encontrar el mejor conjunto de letras para que los niños pudieran deletrear la mayor cantidad posible de palabras de tres letras usando solo tres bloques. Mis bloques tienen computadoras en ellos, saben en qué dirección están y cómo están colocados uno con respecto al otro, ¡y pueden enviar palabras escritas correctamente a una computadora remota en algún lugar!

Pero, ¿qué letras poner en los cubos para permitir que se deletree la mayor cantidad posible de palabras? No es un problema fácil.

Pasé una hora escribiendo software para hacer eso. Le proporcioné al software una lista de todas las palabras de tres letras que pude encontrar de varias fuentes diferentes, y terminé con una lista de 307 palabras moderadamente comunes. Luego hice que el software descubriera el mejor conjunto de letras para permitirle deletrear el número máximo posible de palabras. Utilicé un “algoritmo evolutivo” que aleatoriza las caras de todos los cubos: descubre cuántos puede deletrear y luego cambia aleatoriamente una letra y las relata. Si el nuevo recuento es mejor, conserva la nueva letra y si es igual o peor, deshace el cambio e intenta una elección aleatoria diferente.

Descubrí que no importaba el punto de partida que usara, siempre convergía en 125 palabras diferentes que se podían deletrear … por lo que es muy probable que sea lo mejor posible.

Resultado final las letras en los tres cubos deben ser: NPTHBA + AEIOUY + GDTSRW, y le permiten deletrear 125 palabras diferentes: EDAD, AGO, AIRE, Y, ANT, ARE, ART, ASH, ATE, BAD, BAG, BAR , BAT, BED, BEG, BET, BID, BIG, BIT, BOG, BUD, BUG, ​​BUS, BUT, DAB, DAY, DEN, DIN, DON, DOT, DUB, EAR, EAT, END, ERA, GAP, GAY , GET, GNU, GOT, GUN, GUT, HAD, HAG, HAS, HAT, HER, HEW, HID, HIS, HIT, HOG, HOT, HOW, HUG, HUT, NAG, NET, NEW, NOD, NOG, NOT , AHORA, TUERCA, AVENA, PROPIA, ALMOHADILLA, PAT, PAT, PEG, PER, PET, PEW, PIG, PIT, POD, POT, PUG, RAN, RAP, RAT, RAY, RIB, RIP, ROB, ROT, RUB , RUN, RUT, SAP, SAT, SAY, SEA, SET, SIN, SIP, SIT, SOB, SON, SUB, SUN, TAB, TAG, TAP, TAR, TEA, TEN, THE, TIN, TIP, TIT, TON , TOP, TOW, TUB, TUG, TUT, TWO, URN, WEB, WET, WIN, WIP, WIT, WON

Sí, apenas un problema devastador, pero no podría haberlo hecho de otra manera. La computadora tuvo que darse cuenta de que usar (por ejemplo) dos G’s para poder deletrear “EGG”, “GAG” y “GIG” no era tan bueno como agregar una segunda A para darle más flexibilidad, a pesar de que no tenía palabras con dos A en ellas en mi lista. ¡Nunca lo habría descubierto por mí mismo!

El software se puede utilizar para resolver MUCHOS problemas, algunos triviales, como el mío, otros muy importantes.

No sé si el ejército califica como industria, pero la tradición común es que las computadoras se desarrollaron para poder romper el cifrado de mensajes en la Segunda Guerra Mundial. La historia es que este fue uno de los elementos clave en el resultado de esa guerra.