ការពិភាក្សា៖ ឧបករណ៍ប្រើប្រាស់យូនីកស្ដង់ដារដែលមនុស្សតិចតួចបានប្រើ និងនៅតែប្រើ

Неделю назад Дуглас Макилрой (Douglas McIlroy), разработчик конвейера UNIX и автор понятия «компонентно-ориентированное программирование», បានប្រាប់ об интересных и необычных UNIX-программах, не нашедших широкого применения. Публикация запустила активное обсуждение на Hacker News. Мы собрали самое интересное и будем рады, если вы присоединитесь к дискуссии.

ការពិភាក្សា៖ ឧបករណ៍ប្រើប្រាស់យូនីកស្ដង់ដារដែលមនុស្សតិចតួចបានប្រើ និងនៅតែប្រើ
тоото - Virginia Johnson - Unsplash

Работа с текстом

В 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 удобно использовать для проверки написания слов. Достаточно сравнивать их с эталонным документом-словарем. Учитывая тонкости, связанные с необходимостью сортировки файлов, есть មតិ, что Столлман и Маккензи написали свою утилиту исключительно для этого юзкейса.

ការពិភាក្សា៖ ឧបករណ៍ប្រើប្រាស់យូនីកស្ដង់ដារដែលមនុស្សតិចតួចបានប្រើ និងនៅតែប្រើ
тоото - Marnix Hogendoorn - Unsplash

Также участник обсуждения на HN បានកត់សម្គាល់ возможности оператора ឆ្អឹង, которые были для него неочевидны. Он позволяет чередовать потоки данных или разделить один поток на две колонки при выводе:

$ paste <( echo -e 'foonbar' ) <( echo -e 'baznqux' )
foo     baz
bar     qux
$ echo -e 'foonbarnbaznqux' | paste - -
foo     bar
baz     qux

អ្នកប្រើប្រាស់ម្នាក់ បានកត់សម្គាល់ឃើញ, что часто для выполнения этих простых операций применяют не самые оптимальные решения: начиная с fmt, ex и заканчивая mlr с и rs.

Какие стандартные возможности UNIX-подобных операционных систем стали открытием для вас?

អ្វី​ដែល​យើង​សរសេរ​អំពី​ក្នុង​ប្លុក​សាជីវកម្ម​របស់​យើង៖

ការពិភាក្សា៖ ឧបករណ៍ប្រើប្រាស់យូនីកស្ដង់ដារដែលមនុស្សតិចតួចបានប្រើ និងនៅតែប្រើ របៀបដែលប្រព័ន្ធឈ្មោះដែនមានការវិវត្ត៖ យុគសម័យ ARPANET
ការពិភាក្សា៖ ឧបករណ៍ប្រើប្រាស់យូនីកស្ដង់ដារដែលមនុស្សតិចតួចបានប្រើ និងនៅតែប្រើ ប្រវត្តិនៃប្រព័ន្ធឈ្មោះដែន៖ ម៉ាស៊ីនមេ DNS ដំបូង
ការពិភាក្សា៖ ឧបករណ៍ប្រើប្រាស់យូនីកស្ដង់ដារដែលមនុស្សតិចតួចបានប្រើ និងនៅតែប្រើ История DNS: когда доменные имена стали платными
ការពិភាក្សា៖ ឧបករណ៍ប្រើប្រាស់យូនីកស្ដង់ដារដែលមនុស្សតិចតួចបានប្រើ និងនៅតែប្រើ История системы доменных имен: «войны» протоколов

ប្រភព: www.habr.com

បន្ថែមមតិយោបល់