Комментарии 21
Расширение даёт подсказку операционной системе и программам, о том какой тип данных он содержит и как это всё структурировано.
Вот именно о том, что это утверждение может быть ложным, приходится регулярно напоминать...
Расширение даёт подсказку операционной системе и программам о том, какой тип данных файл, вероятно, содержит. Но при этом расширение не накладывает на содержимое файла никаких обязательств.
Ну и ещё можно отметить, что расширения бывают многоуровневыми (хотя более 3 уровней я лично не видел). tar.gz или fb2.zip, например. При этом расширение после последней точки подсказывает возможный конечный формат файла, предыдущее расширение - что мы, вероятно, получим, расшифровав последний формат, и т.д.
Расширение (как отдельное поле) было актуально во времена MS DOS. В 21 веке это просто несколько символов в конце имени.
Тем не менее оно ещё очень интенсивно используется. Достаточно того, что интерфейсы ОС умеют его скрывать, а также передавать файл связанной с расширением программе на обработку. А так - да, Вы правы. Я даже специально использую термины "имя файла" и "полное имя файла" для случаев, когда расширение вырезано и когда оно присутствует, соответственно.
...отделенное последней точкой в имени, это важно, потому что точек может быть много.
Неистово плюсую. Из-за вот таких объяснений бухгалтера потом и открывают отчёт.doc который внезапно оказывается скриптом.sh, благо современные ОС зачастую ругаются если файл является не тем что написано у него в имени.
ещё доставило это:
Потому что, по умолчанию, современные ОС их скрывают, но можно поставить галочку в настройках.
Автор, это например какие? я на вскидку вспомнил такое поведение только в windows, linux (по крайней мере те DE и файловые менеджеры которые я знаю), freebsd (с теми же DE и фм) и macos ничего не скрывают по умолчанию..
честности ради, автор и написал - "подсказку", что и означает "вероятно".
В цитате совершенно безальтернативно утверждается, что тип данных и структурирование соответствуют расширению. Именно это и есть обязательство. Я лично не готов воспринимать эту фразу как "Расширение даёт подсказку операционной системе и программам, о том какой тип данных он содержит и как это всё структурировано (но может и соврать)".
Считаете иначе? Ваше право.
Если речь зашла про Notepad, то он как раз может хранить некие бинарные данные в формате TXT для определения Unicode.
Например, есть вариант "UTF-8 используя BOM". В начало файло добавляется информация в бинарном виде, которая помогает тому же Notepad определить формат.
Так же там есть вариант UTF-16. Там каждый символ будет уже не 8 бит.
Это всё делает формат TXT уже не таким простым как кажется.
Насколько я слышал, первоначально применялось 7 бит, 8-й был для контроля чётности. Поскольку тогда с электронными лампами да дискретными транзисторами каждый лишний бит стоил немало, использовали 7, поскольку 6 всяко мало, а 6,5 сделать сложно. Ну а когда ошибки копирования между регистрами и ячейками оперативной памяти стали редкими, 8-й бит тоже под данные приспособили, благо уже с интегральными микросхемами так экономить память надобность исчезла.
У Вас написано:
"К таблицам с латинскими символами добавились кириллические, которые занимали уже не по 8 бит, а по 16 бит каждый."
На самом деле, это - некоторая неточность. В действительности, ASCII со всеми латинскими буквами определяет только первые 128 символов, а втоорые использовались для разных алфавитов, включая и кириллицу, поэтому обычный текст с кириллицей занимал столько же места, сколько и с латиницей. Другое дело, что стандартов кодировки кириллицы было несколько: KOI-8, популярный под юниксом, кодировка ДОС (DOS-866), кодовая страница 1251 в Windows. Ну и кроме того, иметь в одном тексте и кириллицу и латиницу было можно, а вот, к примеру, грузинский алфавит к ним засунуть было уже некуда.
И вот чтобы разместить сколько угодно языков в одном тексте, а заодно избавиться от этого зоопарка кодировок, и придумали Юникод.
С зоопарком, правда, получилось... как всегда. Вместо зоопарка кодовых страниц теперь зоопарк юникодов, но лингвистам жить стало легче - можно иметь сколько угодно алфавитов в одном файле.
Спасибо за труд. Но это только вступление или все...?
На эту тему можно написать книгу и не одну, потому что в наше время расширение файла практически НИЧЕГО не говорит о содержимом. Например, ".img".
Кодировка UTF-8 имеет гораздо более сложную структуру, и она не "двухбайтовая", как могло бы показаться. Просто для подавляющего числа используемых символов его код будет состоять из одного или двух байтов. Но сама кодировка предполагает и большее количество байт на символ/знак.
Вообще, принято условно разделять все файлы на две важные группы: plain text и binary. Первый - условно текстовый формат, на однобайтовой (старой) или многобайтовой (UTF-8 новой) кодировке, может иметь структуры высшего порядка внутри, но базирующиеся на тексте. Любой текст программы, xml, ini и куча других форматов - это plain text. Это важно, потому что позволяет применять общие системы контроля версий к ним и некоторые другие вещи.
Binary - имеет какую-то собственную структуру, как правило, состоящую из некоторого "заголовка" и "тела" с данными. Заголовок, зачастую, имеет часто признак типа файла - сигнатуру, которая также может быть использована при попытке определить его тип. Вот jpg, wav, mp3, exe - это именно binary.
"Это простой аудиоформат, который содержит несжатый. Всё CD диски записаны в формате WAV."
Как устроены файлы? Разбор