Неделю назад Дуглас Макилрой (Douglas McIlroy), разработчик конвейера UNIX и автор понятия «компонентно-ориентированное программирование», បានប្រាប់ об интересных и необычных UNIX-программах, не нашедших широкого применения. Публикация запустила активное обсуждение на Hacker News. Мы собрали самое интересное и будем рады, если вы присоединитесь к дискуссии.
В UNIX-подобных операционных системах есть стандартный набор инструментов для форматирования текста. Утилита កំហុសនៃការសរសេរ позволяла просматривать документ на наличие опечаток и гапаксов — слов, встречающихся в материале только один раз. Что интересно, для поиска опечаток программа មិនប្រើ словари. Она опирается только на информацию в файле и проводит частотный анализ по триграммам (последовательность из трех символов). При этом все необходимые счетчики ត្រូវបានរក្សាទុក в массиве 26x26x26. По словам Дугласа Макилроя, такого объема памяти едва хватало для нескольких однобайтных счётчиков. Поэтому в целях экономии их писали в логарифмическом виде.
Сегодня typo заменили более современные и точные программы проверки правописания на основе словарей. Однако про инструмент все еще помнят — несколько лет назад энтузиаст ណែនាំ реализацию typo на Go. Репозиторий обновляется до сих пор.
Еще один инструмент для работы с документами из 80-х — пакет Writer’s Workbench от Лоринды Черри (Lorinda Cherry) и Нины Макдональд (Nina McDonald) из Bell Labs. В его состав входили инструменты для определения частей речи и стиля документа, поиска тавтологий и излишне сложных предложений. Утилиты разрабатывали в качестве подспорья для студентов, и одно время их បានប្រើ учащиеся Государственного университета Колорадо в США. Но к началу девяностых о Writer’s Workbench позабыли, потому что его не включили в Version 7 Unix. Однако этот инструмент продолжил дорогу подражателям — например, វេយ្យាករណ៍ для IBM PC.
В UNIX также имеются стандартные средства, упрощающие работу с формулами. Есть препроцессор языка для оформления математических выражений eqn. Он примечателен тем, что для отображения формулы разработчику достаточно описать её простыми словами и символами. Ключевые слова позволяют смещать математические знаки по вертикали и горизонтали, менять их размеры и другие параметры. Если передать утилите строку:
sum from { k = 1 } to N { k sup 2 }
На выходе будет сгенерирована следующая формула:
В 1980–1990-х eqn помогал ИТ-специалистам писать мануалы к программному обеспечению. Но позже его заменила система LaTeX, которую ការប្រើប្រាស់ даже Habr. Но eqn — это первый инструмент подобного класса, остающийся частью UNIX-подобных ОС.
ធ្វើការជាមួយឯកសារ
В тематическом треде резиденты Hacker News отметили несколько редко используемых утилит для работы с файлами. Одной из них គឺទំនាក់ទំនង для их сравнения. Это — упрощенный аналог ខុស, заточенный под работу в скриптах. Его បានសរសេរ сам Ричард Столлман (Richard Stallman) вместе с Дэвидом Маккензи (David MacKenzie).
Вывод программы состоит из трех столбцов. В первую колонку попадают значения, уникальные для первого файла, во второй — уникальные для второго файла. Третий столбец включает общие значения. Для корректной работы comm сравниваемые документы должны быть лексически отсортированы. Поэтому один из резидентов площадки បានស្នើ работать с утилитой в следующем виде:
comm <(sort fileA.txt) <(sort fileB.txt)
Comm удобно использовать для проверки написания слов. Достаточно сравнивать их с эталонным документом-словарем. Учитывая тонкости, связанные с необходимостью сортировки файлов, есть មតិ, что Столлман и Маккензи написали свою утилиту исключительно для этого юзкейса.
Также участник обсуждения на HN បានកត់សម្គាល់ возможности оператора ឆ្អឹង, которые были для него неочевидны. Он позволяет чередовать потоки данных или разделить один поток на две колонки при выводе:
អ្នកប្រើប្រាស់ម្នាក់ បានកត់សម្គាល់ឃើញ, что часто для выполнения этих простых операций применяют не самые оптимальные решения: начиная с fmt, ex и заканчивая mlr с ច и rs.
Какие стандартные возможности UNIX-подобных операционных систем стали открытием для вас?