subóptimo suboptimo suboptima economia concepto history

history - suboptima - suboptimo economia



Decisiones subóptimas fundamentales en la historia del software (30)

Apple derrocó a Steve Jobs (la primera vez) que será liderado por una sucesión de vendedores de agua azucarada y contadores de frijol poco inspiradores y poco inspiradores.

A lo largo de la historia del desarrollo de software, a veces sucede que alguna persona (generalmente desconocida, probablemente sin darse cuenta) hizo lo que, en ese momento, parecía una decisión trivial, a corto plazo, que cambió el mundo de la programación. ¿Qué eventos de esta naturaleza vienen a la mente y cuál ha sido la respuesta de nuestra industria para mitigar el dolor?

Ilustración (la más grande en la que puedo pensar): cuando IBM diseñó la PC original, y decidió ahorrar un par de dólares en costos de fabricación al elegir la 8088 con memoria de 8 bits direccionable de medio cerebro muerto, en lugar de una de las Opciones de 16 bits (8086, 680n, etc.), nos condenan a 20 años de cálculos de compensación de direcciones.

(En respuesta, se iniciaron muchas carreras en el desarrollo de la plataforma Unix).

En algún lugar hacia el otro extremo de la escala se encuentra la decisión que alguien tomó de tener una tecla de Bloqueo Shift en el extremo izquierdo del teclado, en lugar de una tecla Ctrl.


Asignando solo 2 dígitos para el campo del año.

Y la mitigación fue gastar grandes cantidades de dinero y tiempo justo antes de que los campos se desbordaran para extenderlos y arreglar el código.


Decidir que HTML debe usarse para cualquier cosa que no sea marcar los documentos de hipertexto.


Decidir que el " orden de red " para números de múltiples bytes en el Protocolo de Internet sería primero de orden byte.

(En ese momento, la naturaleza heterogénea de la red significaba que se trataba de una decisión de lanzamiento de moneda. Treinta años más tarde, los procesadores derivados de Intel dominaban tan completamente el mercado que parece haber sido una opción mejor el byte de orden inferior primero).


El uso de Lisp de los nombres "CAR" y "CDR" en lugar de algo razonable para esas funciones básicas.


En realidad, el 8088 y el 8086 tienen el mismo modelo de memoria y el mismo número de bits de dirección (20). La única diferencia es el ancho del bus de datos externo que es de 8 bits para 8088 y 16 bits para 8086.

Diría que el uso de terminaciones de línea inconsistentes por diferentes sistemas operativos (/ n - UNIX, / r / n - DOS, / r - Mac) fue una mala decisión. Finalmente, Apple cedió al hacer / n predeterminado para OS-X, pero Microsoft se apega obstinadamente a / r / n. Incluso en Vista, el Bloc de notas no puede mostrar correctamente un archivo de texto usando / n como final de línea.

El mejor ejemplo de este problema es el modo ASCII de FTP que simplemente agrega / r a cada / n en un archivo transferido de un servidor UNIX a un cliente de Windows, aunque el archivo contenía / r / n originalmente.


Gary Kildall no hizo un trato con IBM para licenciar CP / M 86 para ellos, por lo que no usarían MS-DOS.


HTML como idioma de visualización del navegador.

HTML fue diseñado originalmente como un lenguaje de marcado de contenido, cuyo objetivo era describir el contenido de un documento sin hacer demasiados juicios sobre cómo debería mostrarse ese documento. Lo cual fue genial, excepto que la apariencia es muy importante para la mayoría de las páginas web y especialmente importante para las aplicaciones web.

Por lo tanto, hemos estado aplicando parches a HTML desde entonces con CSS, XHTML, Javascript, Flash, Silverlight y Ajax, todo con el fin de proporcionar una visualización de visualización cruzada consistente en el navegador, contenido dinámico y la inteligencia del lado del cliente que demandan las aplicaciones web.

¿Cuántas veces ha deseado que los lenguajes de control del navegador se hayan hecho desde el principio?


Hubo muchas decisiones subóptimas en el diseño de C (precedencia del operador, declaración de caso tonto, etc.), que están integradas en una gran cantidad de software en muchos idiomas (C, C ++, Java, Objective-C, quizás C # - no está familiarizado con eso).

Creo que Dennis Ritchie comentó que repensó la precedencia bastante pronto, pero que no iba a cambiarla. No con tres instalaciones completas y cientos de miles de líneas de código fuente en el mundo.


La decisión de Netscape de admitir Java en su navegador.


Microsoft decide usar la barra diagonal inversa en lugar de la barra diagonal inversa como el delimitador de la ruta. Y al no poder virtualizar la letra de la unidad.


Paul Allen decide usar el / carácter para opciones de línea de comando en MS DOS.


Pensando que una contraseña sería una buena manera de controlar el acceso.


Sitios web importantes como los bancos que todavía usan "preguntas de seguridad" como seguridad secundaria para las personas que olvidan sus contraseñas. Pregúntele a Sarah Palin qué tan bien funciona cuando todos puedan buscar el apellido de soltera de su madre en Wikipedia. O mejor aún, encuentre la publicación del blog que Bruce Schneier escribió al respecto.


Todos los diseñadores de idiomas que hicieron su sintaxis diferente cuando la única razón era "solo para ser diferente". Estoy pensando en S y R, donde los comentarios comienzan con # y _ es un operador de asignación.


Usando 4 bytes para time_t y en las marcas de tiempo de los protocolos de internet.

Esto no nos ha mordido todavía, tómalo un poco más de tiempo.


Usar el teclado qwerty en las computadoras en lugar de dvorak.


El término Translation Lookaside Buffer (que debería llamarse algo similar a Caché de página o Caché de direcciones).


La decisión de Microsoft de no agregar * permisos y seguridad de archivos ejecutables / noexecute tipo NIX en MS-DOS. Yo diría que el noventa por ciento de los virus de Windows (y spyware) que tenemos hoy se eliminarían si cada archivo ejecutable necesitara ser marcado como ejecutable antes de que pueda incluso ejecutarse (y mucho menos causar estragos) en un sistema.

Esa sola decisión dio lugar al nacimiento de la industria Antivirus.


Terminando la carrera de Alan Turing cuando solo tenía 42 años.



Microsoft copia las teclas de método abreviado de la Mac original pero usando Ctrl en lugar de una tecla Comando para Deshacer, Cortar, Copiar, Pegar, etc. (Z, X, C, V, etc.) y agregar una clave de Windows casi inútil en el posición del pulgar que no hace casi nada en comparación con las numerosas funciones de la tecla Ctrl del meñique. (Los Mac modernos obtienen una tecla Ctrl útil (para comandos de terminal) y una tecla de comando en la posición de pulgar (para accesos directos de programa o sistema) y una tecla Alt (opción) para escribir caracteres extraños.) (Consulte este artículo ).


Cadenas terminadas en nulo


La decisión de Microsoft de usar "C: / Archivos de programa" como el nombre de la carpeta estándar donde los programas deberían instalarse en Windows. Repentinamente, trabajar desde un símbolo del sistema se volvió mucho más complicado debido a esa ubicación prolija con un espacio incrustado. No puedes simplemente escribir:

cd /program files/MyCompany/MyProgram

Cada vez que tenga un espacio en un nombre de directorio, tiene que encerrar todo entre comillas, como este:

cd "/program files/MyCompany/MyProgram"

¿Por qué no podrían haberlo llamado c: / programas o algo así?



EBCDIC, el juego de caracteres "estándar" de IBM para mainframes. La secuencia de clasificación fue "insana" (las letras del alfabeto no son contiguas).


La decisión de Microsoft de basar Window NT en DEC VMS en lugar de Unix.


7 bits para el texto Y luego "arreglando" esto con páginas de códigos. Los problemas de codificación me matarán algún día.


La decisión de Netscape de reescribir su navegador desde cero . Este es posiblemente uno de los factores que contribuyeron a que Internet Explorer se escapara con la cuota de mercado del navegador entre Netscape 4.0 y Netscape 6.0.


Los nombres de archivo 8Dot3 de DOS y la adopción de Windows de usar la extensión de archivo para determinar qué aplicación lanzar.