28 нояб. 2012 г.

Почему есть две программы, FIND и FINDSTR, с разными возможностями?


Автор: Рэймонд Чен.
Оригинал статьи: Why are there both FIND and FINDSTR programs, with unrelated feature sets?

Джонатан интересуется, почему у нас есть две программы, find и findstr, с такими разными возможностями. Программа find поддерживает UTF-16, findstr – нет; программа findstr работает с регулярными выражениями, а программа find – нет.
Возможности этих программ разные, потому что эти программы не связаны между собой.
Сначала появилась программа find. Как я писал ранее, программа find была написана в 1982 г. При переносе на Windows NT в ней была добавлена поддержка Unicode, но никто не позаботился о добавлении новых возможностей. Она была точной копией старой программы для MS-DOS.
В то время одному из моих коллег в команде MS-DOS не хватало программы grep, поэтому он написал свою собственную программу. Разработчики часто пишут маленькие программы для облегчения своей жизни. Это был самостоятельный проект, не принадлежавший какой-либо версии MS-DOS или Windows. Когда он перешёл в команду Windows 95, то захватил с собой набор своих программ. В свободное время он портировал некоторые из них под Win32, потому что именно этим и занимаются программисты. (Это было в те дни, когда программисты любили в свободное время что-нибудь программировать.)
Так продолжалось довольно долго. Официальная программа find просто искала строки, но зато поддерживала Unicode. В то же время маленький сторонний проект моего коллеги умел работать с регулярными выражениями, но не поддерживал Unicode.
Однажды команда Windows 2000 Resource Kit сказала: "У вас есть прикольная программа. Не возражаете, если мы включим её в Resource Kit?"
"Конечно, нет", – ответил мой коллега. –"Она полезна для меня, может, пригодится кому-то ещё."
Программа была включена под именем qgrep.
Потом парни из команды Windows Resource Kit сказали: "Нас раздражает, что надо устанавливать Resource Kit только для того, чтобы получить несколько полезных программ. Было бы здорово включить самые полезные программы в состав Windows." Я не знаю, какой сорт лести понадобился для этого, но они убедили команду Windows добавить часть программ из Resource Kit в состав Windows. Попутно название программы qgrep поменялось на findstr. (Другие программы из Resource Kit, например, where и diskraid, сохранили свои названия.)
Вот так это было. Можете рассматривать find и findstr как пример параллельного развития программ.

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

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