понедельник, 19 июля 2010 г.

Почему функция CreateProcess делает автоисправление командной строки?

Это перевод Why does the CreateProcess function do autocorrection? Автор: Реймонд Чен.

Программы, которые не были созданы для обработки длинных имён файлов, могли делать ошибки в их обработке, типа взятия пути к исполняемому файлу и записи его в реестр, не думая что в нём могут быть пробелы, и что он нуждается в кавычках (пробелы, хотя технически совершенно легальны, были очень редки в коротких именах файлов). Функции CreateProcess нужно было решить, либо она делает автоисправление для этих кривых программ, либо эти программы перестают работать.

Это битва между прагматизмом и идеальностью (чистотой).

Идеальность говорит: "пусть они страдают за свои баги. Мы не собираемся очернять нашу прекрасную архитектуру, чтобы вместить такую глупость". Конечно же, такое отношение имеет свою цену: люди не будут использовать вашу "чистую" систему, потому что на ней не работают программы, которые им нужны (если, конечно, у вас нет поля искажения реальности Стива Джобса - прим. пер.).

Посмотрите на это с другой стороны: не важно, насколько прекрасна будет ваша версия 1.0, если вы не доживёте до выпуска версии 2.0.

Ваш выбор - между "быть чистым и не популярным" и "быть прагматичным и популярным". Посмотрите на все эти прекрасные технологии, которые вымерли из-за недостатка популярности, несмотря на их технологическое превосходство: Sony Betamax, Mattel Intellivision (и, в Соединённых Штатах: метрическая система).

Другим примером являются электро-автомобили. Как бы не были они технически совершенны, они никогда не достигали заметного коммерческого успеха. Только после уступания популярности и "очернении" их "чистоты" добавлением бензинового двигателя (гибридные автомобили) - они наконец начали зарабатывать признание.

Я вижу, как это случается снова и снова. Команда продукта, которая, гипотетически, делает программы по рисованию диаграмм, говорит: "Я не могу поверить, что мы проигрываем Z. Конечно, диаграммы Z быстрее и броские, но наши показывают <тонкие детали> верно, а когда вы смотрите <экстремальный случай>, то их диаграммы искажаются, и они быстры потому, что не пытаются предотвратить X и Y от пересечения в <сценарии Q>. Мы делаем все эти вещи - вот почему мы медленнее, но также почему мы лучше. Эти люди в Z просто не понимают этого".

И знаете что? Люди голосуют своими кошельками, и прямо сейчас их кошельки говорят, что Z лучше, несмотря на все эти "ужасные недостатки". Какую бы часть "этого" они ни не понимали - это точно не часть "сделайте счастливыми много людей, так что они отправят вам свои деньги".

[Добавлено 05.0.3.2014]: больше материала по CreateProcess.

2 комментария:

  1. Добрый день.
    Ваша статья имеет ссылку на статью в Википедии - "https://ru.wikipedia.org/wiki/Поле_искажения_реальности"
    Но в Википедии нету такой статьи.
    Возможно было бы лучше стереть несуществующую ссылку (или исправить её).

    ОтветитьУдалить
    Ответы
    1. Исправил, спасибо. Совсем недавно статью из Wiki выпилили.

      Удалить

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

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

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

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

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