Прекрасный минимализм текстовых файлов
Одним из моих любимых развлечений в детстве была родительская печатная машинка. Когда она была свободна, я часами сидел и печатал: книги, брошюры, газеты. Каждое издание выходило тиражом в три экземпляра — под копирку. Иллюстрации и переплёт были выполнены вручную. У меня до сих пор сохранились некоторые забавные образцы моей тогдашней издательской деятельности.
Например, однажды я усердно перепечатал довольно объёмную книжку с тестом на IQ. Эта книга была чужая, её нужно было вернуть владельцу через несколько дней. Мне же она настолько понравилась, что захотелось сохранить себе копию. Сканеры и ксероксы, если тогда и существовали, были недоступны. Поэтому пришлось текст перепечатать, а картинки графических заданий аккуратно перерисовать карандашом. Кстати, черчение тоже было моим любимым занятием, поэтому я получил массу удовольствия.
Сначала у нас в семье была механическая машинка: приходилось со всей силы лупить по клавишам, чтобы как следует «пробить» три листа, проложенных копиркой. Потом у нас появилась новомодная электрическая модель. Она приятно жужжала внутренним мотором и позволяла печатать безо всяких усилий. Чтобы напечатать букву, достаточно было слегка нажать на клавишу, всё остальное делали внутренние механизмы. Это было уже чем-то похоже на современную компьютерную клавиатуру.
Видимо, с тех самых пор у меня сохранилась любовь к простому текстовому формату: безо всяких украшательств, цветов, шрифтов и прочих излишеств. Позже, когда у меня появился полноценный компьютер, мой небольшой винчестер стал постепенно заполняться текстовыми файлами — книгами, инструкциями, моими собственными записями и заметками…
Потом постепенно стали появляться файлы других форматов, но до сих пор я стремлюсь по возможности сохранять все тексты в том самом простом и надёжном «plain text». Я по-прежнему нажимаю клавишу F4 в своём FAR — точно так же, как раньше нажимал её в Norton Commander, а потом в Dos Navigator.
Текстовые файлы постепенно обросли форматированием: появились HTML, XML, FB2, MD, DocBook и другие форматы. Но я использую всю эту разметку только по работе или же в исключительных случаях. Простые текстовые файлы безо всякого форматирования много лет остаются на вершине моего личного хит-парада способов хранения информации.
Я обожаю свитки! Они на третьем месте моих любимых способов передачи информации, после каменных скрижалей и начертания надписей самолётом.
-- Шелдон Купер из сериала «Теория большого взрыва».
Почему же мне так нравятся эти допотопные текстовые файлы? Ведь есть столько современных форматов. Этому есть несколько причин:
Универсальность. Текстовый файл можно открыть почти на любом устройстве, в любой операционной системе. В разное время я пользовался множеством разных девайсов: компьютеры всех мастей, КПК, смартфоны, электронные книги, планшеты. И любой из них без проблем открывал простой текстовый файл.
Стандартизованность. В прежние времена существовал целый зоопарк кодировок. Я ещё помню стартовые страницы сайтов со ссылками для ручного выбора кодировки: WIN или КОИ-8. С появлением Юникода большинство серьёзных проблем с кодировками отпали.
Чистота. Идеальный текстовый файл содержит только знаки самого текста и набор управляющих символов, вроде табуляции и возврата каретки (привет печатным машинкам!) Это как чистый, прозрачный и незамутнённый горный ручей информации.
Размер. Текстовый файл не содержит никаких лишних и служебных данных. Никаких встроенных шрифтов, никаких технических метаданных, никакого оформления — только чистый текст. Это всегда радует моего внутреннего минималиста.
Устойчивость. Это свойство особо ценилось во времена дискет и медленных модемов. Хотя и сейчас оно не потеряло своей актуальности. Если в текстовом файле будут повреждены несколько байтов, то вы в худшем случае потеряете несколько слов. Весь остальной текст останется легко читаемым. А потерянные слова в большинстве случаев можно будет восстановить по контексту.
Версионируемость. Изменения в текстовых файлах очень легко отследить в системах контроля версий. Это касается не только текстов программ, но и обычных текстов, например, документации, статей или книг.
Отсутствие форматирования. Форматирование и оформление текста всегда связаны с индивидуальными предпочтениями. Но текстовый файл вообще не имеет своего собственного форматирования. Поэтому каждый может без проблем выбрать удобное и привычное оформление в программе просмотра. В других форматах для этого приходится сначала очистить то оформление, которое задал для текста его автор. Иногда это становится нетривиальной задачей, например, в PDF.
Справедливости ради, надо отметить, что у текстовых файлов есть и свои недостатки:
Избыточность. Формально текстовые файлы обладают избыточной информационной энтропией. Хотя, это скорее касается самого текста, написанного на нашем, человеческом языке. «Много букв», однако.
Неструктурированность. Все символы в текстовом файле равнозначны — текст он и есть текст. Тут нельзя атрибутировать блоки, когда это действительно необходимо. Приходится переходить к форматам с разметкой — HTML, MD и другим.
Отсутствие форматирования. Это пункт 7 из предыдущего списка — одновременно и сильная и слабая сторона текстовых файлов. С одной стороны, хорошо, что формат не позволяет автору навязывать читателю безумные цвета оформления текста. С другой стороны, отсутствие возможности настройки начертания символов — курсив, подчёркивание и другие — добавляет некоторые неудобства.
Линейность. Текстовый файл линеен по своей природе. В нём не подразумеваются сложные структуры и иерархические блоки: многоуровневые списки, таблицы. Их, конечно, можно имитировать, но это будет неполноценная замена.
Для меня многочисленные достоинства текстовых файлов с лихвой перевешивают их недостатки. За эти годы я выработал свой набор правил, которые помогают мне эффективно и без проблем использовать текстовые файлы на разных устройствах:
Одна строка — один абзац. Раньше любили использовать «красивое» форматирование с выравниванием текста в блоки заданной ширины. Так, например, оформлены тексты на lib.ru. Я никогда так не делаю. Пусть переносом слов внутри абзаца занимается текстовый редактор или программа просмотра.
Я никогда не использую табуляцию.
Я никогда не использую отступы от начала строки. Конечно, за исключением программного кода. Но тут речь идёт об обычных текстах.
Заголовок главы или раздела у меня всегда расположен между пустыми строками. Этого вполне достаточно для его выделения. Не требуется никакого подчёркивания, написания заглавными буквами и других ухищрений.
Если в тексте есть несколько уровней подразделов, я использую нумерацию заголовков в формате: X.Y. Z. Мне кажется, что цепочки арабских цифр вполне достаточно для обозначения номера и уровня раздела в иерархии.
Для многоуровневых списков я применяю такое же правило нумерации, как и для разделов.
Таблицы я превращаю в списки. Обычно это очень легко сделать.
Содержание сносок я размещаю прямо в тексте — в месте, где эта сноска нужна. Сам текст сноски я помещаю в квадратные скобки.
Юникод предоставляет нам богатые возможности по набору текста. Я стараюсь ими не пренебрегать: по необходимости использую в текстах специальные символы, которых не было в старых кодировках.
Я стараюсь расставлять неразрывные пробелы там, где это требуется.
За долгие годы работы с текстами эти правила уже стали для меня привычными. Благодаря им я могу работать со своей текстовой базой в любой программе, на любом устройстве, с любым размером экрана.
Для редактирования текстовых файлов я стараюсь выбирать простые и функциональные редакторы. Но в большинстве случаев хватает встроенного редактора FAR или слегка улучшенного «Блокнота».
Для облегчения работы с текстами я использую специальную раскладку клавиатуры, в которой есть нужные символы: кавычки », разные виды тире и другие часто используемые знаки. На телефоне и планшете помогает специальная расширенная клавиатура.
Меня окружают текстовые файлы: книги, статьи, записи, списки задач и ссылок. Для того, чтобы написать любой текст, я всегда сначала открываю простой текстовый редактор. Потом набранный и сохранённый текст можно будет скопировать в любую нужную систему: в Jira, на Wiki, на Хабр. Но первоначально каждый текст создаётся и хранится в текстовом файле.
Эрих Мария Ремарк писал: «Только самые простые вещи никогда не разочаровывают». Для меня одной из таких простых и универсальных вещей неизменно остаются текстовые файлы.