👉 Если у вас есть компьютер с Windows, вы можете сразу проверить всё, о чём говорится в статье. Если у вас Мак, то почитайте о том, что бывает в другой операционной системе.
Эксперимент
Чтобы сразу прояснить, о чём пойдёт речь, попробуйте вот что:
- Запустите компьютер с Windows.
- В любом месте создайте новую папку и назовите её Con английскими буквами.
Получится что-то вроде этого:
Файлы виртуальных устройств
Чтобы понять, почему так происходит, нужно сначала познакомиться с файлами виртуальных устройств.
Когда первая версия Windows только появилась, она была не самостоятельной операционной системой, а оболочкой для системы MS DOS. А первая версия MS DOS появилась в 1981 году, и уже тогда предполагалось, что к компьютерам с MS DOS можно будет подключать разные устройства — принтеры, мыши, сканеры и так далее.
Чтобы устройства могли работать с операционной системой, нужны драйверы — специальные программы, которые объясняют системе, как работать с разными устройствами. Но во времена MS DOS драйверы работали с устройствами не напрямую, а через виртуальные файлы, и выглядело это примерно так:
- Система записывает в этот файл какие-то данные.
- Драйвер видит, что, например, в файл принтера поступили какие-то данные, и начинает их распечатывать.
Общее правило такое: файлы виртуальных устройств нужны для того, чтобы драйверам этих устройств было проще работать.
Эти файлы назывались так:
- CON
- AUX
- PRN
- LST
- COM0 и до COM9
- LPT0 и до LPT9
- NUL
При этом неважно, большими буквами будет это написано или маленькими — в MS DOS регистр букв был некритичен.
Эти названия зарезервированы системой, поэтому пользователь их не может использовать для своих нужд. А как только в MS DOS кто-то попытается создать папку или файл с таким именем, то система сразу выдаст ошибку.
Теперь поговорим о том, почему эта особенность MS DOS мешает нам создавать папки и файлы в Windows. Как это часто бывает в ИТ, всё дело в обратной совместимости.
Обратная совместимость
Первые версии Windows были графической оболочкой. Версия 3.1, на основе которой потом будет сделана Windows 95, стала полноценной и самостоятельной операционной системой, но всё равно она была основана на MS DOS. Оттуда же перешли и файлы виртуальных устройств, чтобы приложения для MS DOS могли запускаться на Windows 3.1.
Дальше были Windows 95, Windows NT, Windows 98, Vista и XP — все они базировались на одной и той же внутренней логике, которая включала себя ту самую изначальную логику MS DOS. Всё ради того, чтобы на этих системах можно было запускать старые программы.
Когда Microsoft разрабатывали новое семейство операционных систем, начиная с Windows 7 и заканчивая Windows 11, им пришлось добавить поддержку старых программ, чтобы сохранить совместимость с теми миллионами программ, которые уже вышли для Windows. А для этого они взяли код из старых версий, который был написан ещё для поддержки программ MS DOS.
👉 Именно по этой причине в Windows 11 до сих пор нельзя создать папку «Con» — это сделано для того, чтобы сегодня можно было запускать софт тридцатилетней давности.
Чтобы было понятен масштаб связи современной Windows 10 с её старым прародителем Windows 3.1, посмотрите на этот скриншот: при выборе настроек базы данных открывается диалоговое окно, которое спроектировано для первой версии Windows:
А вот что было 30 лет назад (почти тот же интерфейс):
Зачем поддерживать старый софт?
В мире очень много оборудования и систем, которые работают на старом софте. Софт старый потому, что его компании-разработчики могли закрыться, обанкротиться, прекратить поддержку старого софта; или разработчик просто состарился и умер; или женился, завёл детей и уехал в загородное поместье. А железо осталось: на электростанциях, промышленных предприятиях, в госучреждениях и страшно представить где ещё.
Если Microsoft решит в одночасье отключить поддержку всего этого старого софта и железа, то все эти старые системы могут начать сыпаться. А так как они подпирают важные инфраструктурные вещи (особенно в США), никто этого не хочет.
Поэтому до сих пор в недрах самой современной Windows теплится код, который обрабатывал файлы устройств тридцать лет назад.