Почему часть регулярных выражений ISO C99 не

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

6
задан claws 16 July 2010 в 01:55
поделиться

5 ответов

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

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

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

14
ответ дан 8 December 2019 в 03:26
поделиться

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

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

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

7
ответ дан 8 December 2019 в 03:26
поделиться

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

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

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

4
ответ дан 8 December 2019 в 03:26
поделиться

Потому что регулярные выражения не обязательны для языка программирования . Удобно? Да, очень, когда они вам нужны. Существенный? Ни за что.

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

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

3
ответ дан 8 December 2019 в 03:26
поделиться

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

1
ответ дан 8 December 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: