Ответ 1
Пол Аллен решил использовать символ/для параметров командной строки в MS DOS.
На протяжении всей истории разработки программного обеспечения иногда случается, что какой-то человек (обычно неизвестный, возможно, невольно) сделал то, что в то время представляло собой тривиальное, краткосрочное решение, которое изменило мир программирования. Какие события такого рода приходят на ум, и какова была наша реакция промышленности на смягчение боли?
Иллюстрация (самая большая из которых я могу придумать): когда IBM разработала оригинальный ПК и решила сэкономить пару долларов на производственных расходах, выбирая мертвый 8088 с 8-битной адресной памятью, вместо один из 16-битных опций (8086, 680n и т.д.), обрекающий нас на 20 лет вычисления смещения адреса.
(В ответ было начато много карьеры в разработке платформы unix.)
Где-то ближе к другому концу шкалы лежит решение, которое кто-то сделал, чтобы клавиша Shift Lock в левой части клавиатуры вместо клавиши Ctrl.
Пол Аллен решил использовать символ/для параметров командной строки в MS DOS.
Выделение только двух цифр для поля года.
И смягчение было потратить огромные суммы денег и времени непосредственно перед тем, как поля переполнились, чтобы расширить их и исправить код.
Завершение карьеры Алана Тьюринга, когда ему было всего 42 года.
Microsoft решает использовать обратную косую черту, а не forwardlash в качестве разделителя пути. И неспособность виртуализировать букву диска.
Собственно, 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.
Было много субоптимальных решений в дизайне C (приоритет оператора, глупый оператор case и т.д.), которые встроены во множество программ на многих языках (C, С++, Java, Objective-C, может быть, С# - не знаком с этим).
Я считаю, что Деннис Ритчи заметил, что он переосмыслил приоритет довольно скоро, но не собирался его менять. Не со всеми тремя установками и сотнями тысяч строк исходного кода в мире.
Решение о том, что HTML следует использовать для чего-либо, кроме маркировки гипертекстовых документов.
Решение Microsoft использовать "C:\Program Files" в качестве стандартного имени папки, где программы должны быть установлены в Windows. Внезапно работа из командной строки стала намного сложнее из-за этого многословного места со встроенным пространством. Вы не можете просто ввести:
cd \program files\MyCompany\MyProgram
В любое время, когда у вас есть пробел в имени каталога, вам нужно заключить все в кавычки, например:
cd "\program files\MyCompany\MyProgram"
Почему они не могли просто назвать это c:\programs или что-то в этом роде?
Яблоко, вытесняющее Стива Джобса (в первый раз), возглавляемое последователями сахаристых салютов и невдохновленных и скучных счетчиков bean.
Гэри Килдалл не заключил сделку с IBM, чтобы лицензировать CP/M 86 для них, поэтому они не будут использовать MS-DOS.
HTML как язык отображения браузера.
В HTML изначально был разработан язык разметки контента, целью которого было описать содержимое документа, не делая слишком много суждений о том, как должен отображаться этот документ. Это было замечательно, но внешний вид очень важен для большинства веб-страниц и особенно важен для веб-приложений.
Итак, с тех пор мы исправляем HTML с помощью CSS, XHTML, Javascript, Flash, Silverlight и Ajax, чтобы обеспечить постоянный кросс-браузерный показ отображения, динамический контент и клиентский интеллект, которые требуются веб-приложениям.
Сколько раз вы хотели, чтобы языки управления браузером были выполнены в первую очередь?
Решение Microsoft не добавлять * NIX-подобные права на выполнение и отсутствие файлов и безопасность в MS-DOS. Я бы сказал, что девяносто процентов вирусов Windows (и шпионских программ), которые у нас есть сегодня, будут устранены, если каждый исполняемый файл должен быть помечен как исполняемый файл, прежде чем он сможет даже выполнить (и тем более разрушить хаос) в системе.
Только одно решение породило рождение антивирусной индустрии.
Использование 4 байтов для time_t и временных меток интернет-протоколов.
Это еще не укусило нас - дайте ему немного больше времени.
Важные веб-сайты, такие как банки, которые по-прежнему используют "вопросы безопасности" в качестве вторичной безопасности для людей, забывающих свои пароли. Спросите Сару Пэйлин, насколько хорошо это работает, когда каждый может найти свою девичью фамилию матери в Википедии. Или еще лучше, найдите сообщение в блоге, о котором писал Брюс Шнайер.
EBCDIC, стандартный набор символов IBM для мэйнфреймов. Последовательность сортировки была "безумной" (буквы алфавита не смежны).
Lisp использование имен "CAR" и "CDR" вместо разумных для этих основных функций.
Null References - a ошибка в миллиард долларов.
Netscape решение переписать свой браузер с нуля. Это, возможно, один из факторов, которые способствовали тому, что Internet Explorer упустил долю рынка браузеров между Netscape 4.0 и Netscape 6.0.
Имена файлов DOS 8Dot3 и принятие Windows с использованием расширения файла для определения запуска приложения.
Использование qwerty-клавиатуры на компьютерах вместо dvorak.
Думаю, что пароль будет аккуратным способом контроля доступа.
Каждый дизайнер языка, который сделал свой синтаксис другим, когда единственная причина была "просто быть другой". Я думаю о S и R, где комментарии начинаются С#, а _ - оператором присваивания.
Microsoft копирует сочетания клавиш из исходного Mac, но вместо Ctrl используется вместо Command Key для Undo, Cut, Copy, Paste и т.д. (Z, X, C, V и т.д.) и добавляет почти бесполезную Windows ключ в положении большого пальца, который почти ничего не делает по сравнению с мизиными многочисленными функциями клавиш Ctrl. (Современные Маки получают полезную клавишу Ctrl (для команд терминала), и - командный ключ в позиции большого пальца (для быстрых клавиш программы или системы) и клавишу Alt (опция) для ввода странных символов.) (См. в этой статье.)
Строки с нулевым завершением
7 бит для текста. А затем "исправление" этого с помощью кодовых страниц. Проблемы с кодированием убьют меня когда-нибудь.
Принятие решения о том, что " порядок сети" для многобайтовых номеров в интернет-протоколе сначала будет первым байтом заказа.
(В то время гетерогенность сети означала, что это было решение о выпуске монеты. Спустя тридцать лет процессоры Intel, полностью доминирующие на рынке, кажутся более низкими по порядку, были бы лучшим выбором).
Решение Netscape поддерживать Java в своем браузере.
Решение Microsoft основывать Window NT на DEC VMS вместо Unix.
Термин Translation Lookaside Buffer (который должен называться как-то вдоль линий кэша страниц или адресного кэша).
Когда Atari создал и выпустил видеоигру E.T. Extra-Terrestrial в 1982 году и в итоге просто заполнил свалки с игрой...
alt text http://upload.wikimedia.org/wikipedia/en/a/aa/AtariLandfill.jpg