Существует проблема конфликта имен. По мере развития языковых стандартов они предоставляют все больше и больше функций, давая им больше имен. И вероятность того, что имя системы и имя, определенное в пользовательской программе, повышается. Чтобы избежать этого, в модулях определены новые функции, которые не будут включены, если программа не использует их. Поскольку системные библиотеки используют много общих слов в качестве символов (например, open
, restricted
), проблема серьезна.
Но явное включение модуля - это не только метод предотвращения столкновений. К ним также относятся: использование «стандартного» пространства имен для системных имен (например, C ++, namespace std
), резервирование имен и шаблонов имен (например, C, двойные подчеркивания), допустимое переопределение (например, Forth).