Найвидатніші програми Unix

Автор статті Дуглас Макілрой - американський математик, інженер та програміст. Найбільш відомий розробкою конвеєра в операційній системі Unix, принципів компонентно-орієнтованого програмування та кількох оригінальних утиліт: spell, diff, sort, join, speak, tr.

Іноді вам трапляються справді чудові програми. Покопавшись у пам'яті, я склав список справжніх перлин Unix за всі роки. В основному, це досить рідкісні і не такі необхідні програми. Але що їх виділяє, то це оригінальність. Навіть уявити не можу, щоб мені самому прийшла ідея якоїсь із них.

Поділіться, які програми вас також настільки вразили?

PDP-7 Unix

Для початку сама система PDP-7 Unix. Її простота та міць змусили мене перейти з потужного мейнфрейму на крихітну машину. Тут квінтесенція ієрархічної файлової системи, окрема оболонка та управління процесами на рівні користувача, що Multics на мейнфреймах не змогла реалізувати після сотень людино-років розробки. Недоліки Unix (наприклад, структура записів у файловій системі) були настільки ж повчальними та звільняючими, як і її нововведення (наприклад, перенаправлення введення-виведення в оболонці).

dc

Математична бібліотека для настільного калькулятора зі змінною точністю Роберта Морріса використовувала зворотний аналіз помилок для визначення точності, необхідної на кожному кроці для досягнення заданої користувачем точності результату. На конференції НАТО з програмної інженерії 1968 року у своїй доповіді про програмні компоненти я запропонував еталонні процедури, які можуть дати результат будь-якої бажаної точності, але я не знав, як їх реалізувати на практиці. dc досі залишається єдиною відомою мені програмою, яка здатна на таке.

опечатка

Typo впорядковує слова у тексті з їхньої схожості з іншим текстом. Очеп'ятки на кшталт 'hte' мають тенденцію розташовуватися наприкінці списку. Роберт Морріс з гордістю говорив, що програма однаково добре працюватиме для будь-якої мови. Хоча typo не допомагає знайти фонетичні помилки, вона стала справжньою знахідкою для всіх, хто набирає текст, і принесла багато користі перед тим, як з'явилася набагато менш цікава, але точніша перевірка орфографії за словником.

Typo так само несподівано влаштована всередині, як і зовні. Алгоритм вимірювання подібності заснований на частоті появи триграм, які вважаються масивом 26×26×26. У крихітній пам'яті ледь вистачало місця для однобайтових лічильників, тому було реалізовано схему стиснення великих чисел у маленькі лічильники. Щоб уникнути переповнення, лічильники оновлювалися на ймовірності, підтримуючи оцінку логарифму значення лічильника.

екв

З появою фотонабору стало можливим, але дуже виснажливо виводити класичну математичну нотацію. Лорінда Черрі вирішила розробити мову опису вищого рівня, і незабаром до неї приєднався Брайан Керніган. Їх блискучий хід полягав у тому, щоб висловити усну традицію письмово, тому eqn виявився напрочуд простим у вивченні. Перший у своєму роді препроцесор мови опис математичних виразів, eqn з тих пір майже не покращувався.

структура

Бренда Бейкер почала розробку свого конвертера Fortan-to-Ratfor всупереч раді свого начальника - мене. Я подумав, що це може призвести до спеціального перевпорядкування вихідного тексту. Він буде вільний від номерів операторів, але в іншому не більше, ніж грамотно структурований код Fortran. Бренда довела, що я помиляюсь. Вона виявила, що кожна програма Fortran має канонічно структуровану форму. Програмісти надавали перевагу канонічну форму, а не те, що самі спочатку написали.

Паскаль

Діагностика синтаксису в компіляторі, створеному групою Сью Грехем в Берклі, була найкориснішою з усіх, що я коли-небудь бачив, і вона проводилася автоматично. При синтаксичній помилці компілятор пропонує вставити лексему, щоб продовжити аналіз синтаксії. Жодних спроб пояснити, що не так. З цим компілятором я вивчив Паскаль за один вечір, не маючи жодного керівництва під рукою.

частини

Захований усередині пакету WWB (Writer's Workbench) модуль parts Лорінди Черрі визначає частини мови для слів у тексті англійською на базі лише маленького словника, правил орфографії та граматики. За цією інструкцією програма WWB виводить стилометричні показники тексту, такі як переважання прикметників, придаткових речень та складних речень. Коли Лорінда дала інтерв'ю в телепередачі Today на каналі NBC і розповіла про інноваційну перевірку граматики у текстах WWB, це була перша згадка Unix на телебаченні.

егреп

Аль Ахо розраховував, що його детермінований розпізнавач регулярних виразів обжене класичний недетермінований розпізнавач Кена. На жаль, останній вже завершував прохід по складним регулярним виразам, поки egrep будував свою детерміновану автоматику. Щоб таки перемогти у цій гонці, Аль Ахо обійшов прокляття експоненційного зростання таблиці станів автомата, винайшовши спосіб побудови на льоту лише тих записів таблиці, які справді відвідуються під час розпізнавання.

краби

Чарівна мета-програма Луки Карделлі для віконної системи Blit випускала віртуальних крабів, які бродили по порожньому просторі екрану, все більше і більше відкушуючи краї активних вікон.

Деякі спільні думки

Хоча це не видно ззовні, але теорія та алгоритми відіграли вирішальну роль у створенні більшості цих програм: typo, dc, struct, pascal, egrep. Насправді найбільше вражає саме незвичайне застосування теорії.

Оригінальними авторами майже половини списку – pascal, struct, parts, eqn – були жінки, що значно перевищує демографічну частку жінок у галузі комп'ютерних наук.

Дуглас Макілрой
Березень, 2020


Джерело: habr.com

Додати коментар або відгук