Почему регулярные выражения не являются частью ISO C99 - PullRequest
6 голосов
/ 16 июля 2010

Все знают, какой классный язык Си и сколько он затягивает в задачах обработки текста.Учитывая эти факты.Regex определенно должен быть частью ISO C. Но это не так.Я не понимаю почему?Есть люди, которые думают, что это не важно?

Ответы [ 5 ]

14 голосов
/ 16 июля 2010

Регулярные выражения не принадлежат собственно языку C, как звуковая библиотека, графическая библиотека или библиотека шифрования.Это снизило бы общий характер языка и значительно ограничило бы его использование в качестве небольшого и эффективного встроенного языка.

Философия языка C заключалась в том, чтобы иметь очень маленькое и эффективное ключевое слово языка со стандартизованными библиотеками дляследующий уровень функциональности.Поскольку такие вещи, как regex, графика, звук, шифрование и т. Д., Не имеют единой платформы или стандарта, они не соответствуют стандартной библиотеке C.

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

7 голосов
/ 16 июля 2010

Regex определено как часть IEEE Std 1003.1: 2001 (POSIX)

Вот удобный список заголовков и стандартов:

http://www.schweikhardt.net/identifiers.html

4 голосов
/ 16 июля 2010

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

Этот документ объясняет рационализацию стандарта: http://www.open -std.org / jtc1 / sc22 / wg14 / www / docs / C99RationaleV5.10.pdf , который может прояснить, почему. Другая причина объяснена в док. чтобы язык был простым.

Существует довольно много доступных загрузок, просто используйте одну.

3 голосов
/ 16 июля 2010

Поскольку регулярные выражения не являются необходимыми для языка программирования . Handy? Да, очень, когда они вам нужны. Essential? Ни за что.

Веб-разработчики, естественно, будут рассматривать регулярные выражения как существенную особенность языка, поскольку они должны проверять все эти данные формы HTML. Разработчики, чей опыт работы всегда с одним из немногих известных серверов реляционных баз данных, сочтут поддержку SQL необходимой. Тем, кто работает в научной области, потребуется поддержка «больших чисел» или тензоров. Разработчики GUI считают, что встроенный инструментарий GUI необходим. Некоторые люди занимаются XML весь день и считают, что поддержка XML необходима ... и т.д., вы поняли идею. Этот список «предметов первой необходимости» может стать довольно большим, и такие языки, как Java, безусловно, используют подход «кухонной раковины» в своих огромных стандартных библиотеках. Я ценю, что C не является языком кухонной мойки в этом смысле.

Будьте осторожны, чтобы не допустить, что ваш любимый язык является важной функцией для всех остальных.

1 голос
/ 16 июля 2010

Смысл в том, чтобы быть маленьким, но мощным. Поскольку регулярные выражения обычно представляют собой большую и сложную тему, они принадлежат библиотеке. Очень жаль, что комитет C не "спонсирует" некоторые хорошо написанные стандартные библиотеки C, алгоритмы / структуры данных. Там их множество. Я склонен придерживаться «спонсируемых» GNU библиотек всякий раз, когда могу, поскольку они доступны для большинства платформ, даже если они не обязательно самые простые или эффективные в использовании. Они достигают хорошего баланса.

...