Подтвердить что ты не робот

Основные субоптимальные решения в истории программного обеспечения

На протяжении всей истории разработки программного обеспечения иногда случается, что какой-то человек (обычно неизвестный, возможно, невольно) сделал то, что в то время представляло собой тривиальное, краткосрочное решение, которое изменило мир программирования. Какие события такого рода приходят на ум, и какова была наша реакция промышленности на смягчение боли?

Иллюстрация (самая большая из которых я могу придумать): когда IBM разработала оригинальный ПК и решила сэкономить пару долларов на производственных расходах, выбирая мертвый 8088 с 8-битной адресной памятью, вместо один из 16-битных опций (8086, 680n и т.д.), обрекающий нас на 20 лет вычисления смещения адреса.

(В ответ было начато много карьеры в разработке платформы unix.)

Где-то ближе к другому концу шкалы лежит решение, которое кто-то сделал, чтобы клавиша Shift Lock в левой части клавиатуры вместо клавиши Ctrl.

4b9b3361

Ответ 1

Пол Аллен решил использовать символ/для параметров командной строки в MS DOS.

Ответ 2

Выделение только двух цифр для поля года.

И смягчение было потратить огромные суммы денег и времени непосредственно перед тем, как поля переполнились, чтобы расширить их и исправить код.

Ответ 3

Завершение карьеры Алана Тьюринга, когда ему было всего 42 года.

Ответ 4

Microsoft решает использовать обратную косую черту, а не forwardlash в качестве разделителя пути. И неспособность виртуализировать букву диска.

Ответ 5

Собственно, 8088 и 8086 имеют такую ​​же модель памяти и одинаковое количество адресных битов (20). Единственная разница - это ширина внешней шины данных, которая составляет 8 бит для 8088 и 16 бит для 8086.

Я бы сказал, что использование несогласованных окончаний строк различными операционными системами (\n - UNIX,\r\n - DOS,\r - Mac) было плохим решением. В конце концов, Apple, смягчился, сделав\п по умолчанию для OS-X, но Microsoft упорно придерживаться\г\п. Даже в Vista Notepad не может корректно отображать текстовый файл, используя \n как завершение строки.

Лучшим примером этой проблемы является ASCII-режим FTP, который просто добавляет /r к каждому /n в файле, переданном с сервера UNIX, клиенту Windows, даже если файл изначально содержал/r/n.

Ответ 6

Было много субоптимальных решений в дизайне C (приоритет оператора, глупый оператор case и т.д.), которые встроены во множество программ на многих языках (C, С++, Java, Objective-C, может быть, С# - не знаком с этим).

Я считаю, что Деннис Ритчи заметил, что он переосмыслил приоритет довольно скоро, но не собирался его менять. Не со всеми тремя установками и сотнями тысяч строк исходного кода в мире.

Ответ 7

Решение о том, что HTML следует использовать для чего-либо, кроме маркировки гипертекстовых документов.

Ответ 8

Решение Microsoft использовать "C:\Program Files" в качестве стандартного имени папки, где программы должны быть установлены в Windows. Внезапно работа из командной строки стала намного сложнее из-за этого многословного места со встроенным пространством. Вы не можете просто ввести:

cd \program files\MyCompany\MyProgram

В любое время, когда у вас есть пробел в имени каталога, вам нужно заключить все в кавычки, например:

cd "\program files\MyCompany\MyProgram"

Почему они не могли просто назвать это c:\programs или что-то в этом роде?

Ответ 9

Яблоко, вытесняющее Стива Джобса (в первый раз), возглавляемое последователями сахаристых салютов и невдохновленных и скучных счетчиков bean.

Ответ 10

Гэри Килдалл не заключил сделку с IBM, чтобы лицензировать CP/M 86 для них, поэтому они не будут использовать MS-DOS.

Ответ 11

HTML как язык отображения браузера.

В HTML изначально был разработан язык разметки контента, целью которого было описать содержимое документа, не делая слишком много суждений о том, как должен отображаться этот документ. Это было замечательно, но внешний вид очень важен для большинства веб-страниц и особенно важен для веб-приложений.

Итак, с тех пор мы исправляем HTML с помощью CSS, XHTML, Javascript, Flash, Silverlight и Ajax, чтобы обеспечить постоянный кросс-браузерный показ отображения, динамический контент и клиентский интеллект, которые требуются веб-приложениям.

Сколько раз вы хотели, чтобы языки управления браузером были выполнены в первую очередь?

Ответ 12

Решение Microsoft не добавлять * NIX-подобные права на выполнение и отсутствие файлов и безопасность в MS-DOS. Я бы сказал, что девяносто процентов вирусов Windows (и шпионских программ), которые у нас есть сегодня, будут устранены, если каждый исполняемый файл должен быть помечен как исполняемый файл, прежде чем он сможет даже выполнить (и тем более разрушить хаос) в системе.

Только одно решение породило рождение антивирусной индустрии.

Ответ 13

Использование 4 байтов для time_t и временных меток интернет-протоколов.

Это еще не укусило нас - дайте ему немного больше времени.

Ответ 14

Важные веб-сайты, такие как банки, которые по-прежнему используют "вопросы безопасности" в качестве вторичной безопасности для людей, забывающих свои пароли. Спросите Сару Пэйлин, насколько хорошо это работает, когда каждый может найти свою девичью фамилию матери в Википедии. Или еще лучше, найдите сообщение в блоге, о котором писал Брюс Шнайер.

Ответ 15

EBCDIC, стандартный набор символов IBM для мэйнфреймов. Последовательность сортировки была "безумной" (буквы алфавита не смежны).

Ответ 16

Lisp использование имен "CAR" и "CDR" вместо разумных для этих основных функций.

Ответ 19

Имена файлов DOS 8Dot3 и принятие Windows с использованием расширения файла для определения запуска приложения.

Ответ 20

Использование qwerty-клавиатуры на компьютерах вместо dvorak.

Ответ 21

Думаю, что пароль будет аккуратным способом контроля доступа.

Ответ 22

Каждый дизайнер языка, который сделал свой синтаксис другим, когда единственная причина была "просто быть другой". Я думаю о S и R, где комментарии начинаются С#, а _ - оператором присваивания.

Ответ 23

Microsoft копирует сочетания клавиш из исходного Mac, но вместо Ctrl используется вместо Command Key для Undo, Cut, Copy, Paste и т.д. (Z, X, C, V и т.д.) и добавляет почти бесполезную Windows ключ в положении большого пальца, который почти ничего не делает по сравнению с мизиными многочисленными функциями клавиш Ctrl. (Современные Маки получают полезную клавишу Ctrl (для команд терминала), и - командный ключ в позиции большого пальца (для быстрых клавиш программы или системы) и клавишу Alt (опция) для ввода странных символов.) (См. в этой статье.)

Ответ 24

Строки с нулевым завершением

Ответ 25

7 бит для текста. А затем "исправление" этого с помощью кодовых страниц. Проблемы с кодированием убьют меня когда-нибудь.

Ответ 26

Принятие решения о том, что " порядок сети" для многобайтовых номеров в интернет-протоколе сначала будет первым байтом заказа.

(В то время гетерогенность сети означала, что это было решение о выпуске монеты. Спустя тридцать лет процессоры Intel, полностью доминирующие на рынке, кажутся более низкими по порядку, были бы лучшим выбором).

Ответ 27

Решение Netscape поддерживать Java в своем браузере.

Ответ 28

Решение Microsoft основывать Window NT на DEC VMS вместо Unix.

Ответ 29

Термин Translation Lookaside Buffer (который должен называться как-то вдоль линий кэша страниц или адресного кэша).