пятница, 6 августа 2010 г.

Один на миллион - это в следующий вторник

Это перевод One in a million is next Tuesday. Автор: Ларри Остерман.

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

С того времени я избавился от этой иллюзии, и было это довольно мучительно.

Один из самых ярких моментов произошёл совсем рано, когда я работал над DOS 4. Нам встретилась одна проблема (я буду честным и поэтому скажу, что я не помню, что это была за проблема).

Я пытался решить этот баг вместе с Gordon Letwin - архитектором DOS 4. Я просматривал код и сказал: “Может быть тут происходит это? Но если бы это было так, то у этого бага был бы шанс случиться один на миллион”.

Ответ Gordon-а был прост: “В нашей работе один на миллион - это в следующий вторник”.

Затем он пояснил, что со скоростями, с которыми работают современные компьютеры (помните? 4.77 МГц), вещи случаются так быстро, что нечто, что имеет один на миллионный шанс на появление, вероятнее всего, произойдёт на следующий же день или чуть позже.

Я не думаю, что получал лучший совет в моей карьере.

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

И я видел множество невероятных примеров в своей практике – условия гонки на многопроцессорных машинах, где происходил не атомарный инкремент (один из вариантов бага Michael Grier-а “i = i + 1”). Порча данных из-за доступа к данным без защиты. Я не перестаю поражаться способности планировщика NT переключаться на моё приложение именно в нужный момент времени, чтобы выявить баг синхронизации данных. Или чтобы прояснить, как могли мои структуры данных оказаться взаимно заблокированными таким хитрым способом.

Поэтому, когда сегодня кто-либо спрашивает, насколько вероятно появление редкого события, обычно я отвечаю просто: “один на миллион - это в следующий вторник”.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.