Elias Gavriluyk
ноябрь 2016.
1397

Зачем_файлы_подписывают_через_нижнее_подчеркивание_?

Ответить
Ответить
Комментировать
3
Подписаться
1
3 ответа
Поделиться

Во многих старых операционных системах, например, в предшественнице графического MS Windows -- MS DOS были недопустимы пробелы в именах файлов. Сейчас тоже не все программы понимают пробелы правильно. Некоторые обработчики 

abc abc abc.txt

прочитают как 

abc.txt 

или как 

abcabcabc.txt 

или как 

abc

или как три имени файла

abc  и  abc  и  abc.txt

Для того чтобы исключить такие ситуации пробелы принято заменять подчеркиванием _

Оно указывает на то, что это именно одно имя файла.

например, команда MS DOS  создать каталог -- MD

допустим вы решили создать каталог с именем "1 2"

вы должны были бы набрать 

md 1 2

и система бы создала вам два каталога с именами "1" и "2"

сейчас эта проблема решена тем, что в команде можно применить кавычки

md "1 2"

а тогда, в далекие лихие 90-ые, делали

md 1_2

К ответу Андрея Ларионова добавлю:

В основном такие файлы вы скачиваете из интернета. Чаще всего это песни, фильмы и документы. И причин замены пробела на подчеркивание несколько:

  1. Разные языки программирования пишутся разными людьми, работают по разному. Не все из них согласуются. Плюс, в основном, когда вы открываете файл, или еще что с ним делаете - программа помещает его имя в переменную и передает эту переменную в функцию/метод, открывающий файл. Язык программирования - это очень строгая вещь. Там все регламентировано. В частности, каждое слово, отделенное пробелами или некоторыми другими символами, воспринимается, как команда. После некоторых команд определенное количество слов может считаться за аргументы (то, что обрабатывает команда). В большинстве языков после команды обязательно должна быть точка с запятой. И теперь представьте себе такой случай: имя файла "очередной суперинтересный фильм.avi", команда "открыть", которая требует один аргумент "путь". Без всяких дополнительных параметров, без надлежащего синтаксиса (не бейте меня, программисты) это выглядело бы так: "открыть очередной суперинтересный фильм.avi;" и тут мы начинаем ловить ошибки: файла "очередной" не существует, неизвестная команда "суперинтересный", несуществующее свойство "avi" несуществующего объекта "фильм" и 3 отсутствующих точки с запятой.
  2. Пробелы - это тоже символы. Существует огромная куча кодировок, несколько разных пробелов и т.д. (кто знает, какая кодировка у загрузившего файл?). Попробуйте ввести в адресной строке "example.com/page?query=one two". Не знаю, что выдаст запрос, вероятнее всего ошибку 404, но нас интересует адресная строка. ТА-ДАМ! Пробел исчез, а вместо него - "%20". А теперь представьте, что разные языки по разному обрабатывают пробелы.
Да, сейчас во многих языках, если не во всех, можно нормально работать с пробелом в имени, если взять его (имя) в кавычки (кавычки в программировании сообщают компьютеру, что весь последующий текст до следующих таких же кавычек является "строкой" и не должен обрабатываться), но я еще раз напомню о куче языков, о существовании непопулярных и самодельных языков, которые нестандартизированы. А им все равно надо работать вместе (как минимум, операционная система + программа + драйвера). Подчеркивание же не является пробельным символом. А потому, что оно ниже других небуквенных символов и очень похоже на пробел визуально - оно и используется. Просто такой старый негласный общественный стандарт.

К вышесказанному добавлю и от себя.
Зрительно очень трудно отличить символ "пробел" от некоторых неотображаемых символов вроде символа с кодом ноль, символа табуляции и даже просто от двух пробелов подряд. Также символ пробела в ссылках на веб-сайтах заменяется кодированием, чаще всего это %20, хотя есть и другие способы. Это не очень понятно человеку и не очень читабельно.
При этом символ подчеркивания входит в базовую таблицу символов ASCII, он в этом смысле абсолютно аналогичен символу английского алфавита, скажем буквам "b, t, z", и никогда не будет без особой нужды заменен на код. А для человека он выглядит как промежуток между словами, любой сразу поймет, что "синее_небо" -- это два слова "синее" и "небо". При этом знак подчеркивания обычно не считается разделителем между словами никакими программами, поэтому у программ нет проблем получить аргументом имя файла "blue_sky_file.txt", программы считают это одним словом, а не тремя разными.

Ответить