понедельник, 27 июня 2011 г.

Новый скриптовый язык не решает всех проблем

Это перевод A new scripting language doesn't solve everything. Автор: Реймонд Чен.

Да, есть куча скриптовых языков, которые существенно лучше, чем старый скучный язык командных файлов. Командные файлы определённо были существенным улучшением над SUBMIT в 1981-м, но через некоторое время они стали устаревать. Продолжение жизни старого скучного языка командных файлов означает, что у вас есть миллионы командных файлов, которые вам лучше бы не сломать, если вы знаете, что для вас хорошо (конечно, в ретроспективе, вы можете назвать весь язык командных файлов "ошибкой проектирования" - но вспомните, что ему надо было работать на машине с 64 Кб памяти и 4.77 МГц процессором, и при этом оставаться совместимым с CP/M).

Поставка новой командной оболочки не решает всех проблем. Для начала, вам нужно решить, собираетесь ли вы поддерживать классические командные файлы или нет. Может быть, вы решите, что вам это не нужно и предпочтёте заставить людей переписать их командные файлы на новый язык. Удачи вам с этой попыткой.

С другой стороны, если вы решите поддерживать старые командные файлы, то, предположительно, ваша новая командная оболочка не будет сама выполнять старые командные файлы, а просто перенаправит их на CMD.EXE. И вот ваша первая проблема: видите ли, командные файлы могут модифицировать переменные окружения и эти изменения сохраняются, даже если командный файл закончил выполнение. Попробуйте:
C> copy con marco.cmd
@set MARCO=polo
^Z
        1 file(s) copied.

C> echo %MARCO%
%MARCO%

C> marco

C> echo %MARCO%
polo
Если ваша новая командная оболочка будет вызывать CMD.EXE, то эти изменения в переменных окружения не повлияют на ваш процесс, поскольку командный файл будет изменять переменные окружения CMD.EXE, а не ваши. Многие организации имеют системы командных файлов, которые взаимодействуют друг с другом, сохраняя параметры в переменных окружения. К примеру, эту технику используют SDK и DDK - чтобы установить и настроить окружение для сборки, передав через переменные окружения информацию для сборки, скажем, в build.exe. И почти наверняка вы писали командный файл, который меняет PROMPT или PATH или хотя бы текущий каталог.

Так что удачи вам с вашей новой командной оболочкой. Я надеюсь, вам удастся гладко выполнять старые командные файлы.

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

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

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

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

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

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

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