Ең үлкен Unix бағдарламалары

Мақала авторы Дуглас Макилрой – американдық математик, инженер және бағдарламашы. Ол Unix операциялық жүйесінде конвейерді, құрамдасқа бағытталған бағдарламалау принциптерін және бірнеше түпнұсқа утилиталарды әзірлеумен танымал: spell, diff, sort, join, speak, tr.

Кейде сіз шынымен керемет бағдарламаларды кездестіресіз. Жадымды ақтарғаннан кейін мен жылдар бойы Unix-тің нағыз асыл тастарының тізімін жасадым. Негізінде бұл өте сирек және қажет емес бағдарламалар. Бірақ оларды ерекшелендіретін - олардың өзіндік ерекшелігі. Мен олардың кез келгенінің идеясын өзім ойлап таптым деп елестете алмаймын.

Қандай бағдарламалар сізге қатты әсер етті?

PDP-7 Unix

Жаңадан бастағандар үшін PDP-7 Unix жүйесінің өзі. Оның қарапайымдылығы мен күші мені қуатты негізгі компьютерден кішкентай машинаға көшуге мәжбүр етті. Бұл негізгі фреймдегі Multics жүздеген адам-жылдық дамудан кейін қол жеткізе алмаған квинтессенциалды иерархиялық файлдық жүйе, бөлек қабық және пайдаланушы деңгейіндегі процесті басқару. Unix-тің кемшіліктері (мысалы, файлдық жүйенің жазба құрылымы) оның инновациялары (мысалы, қабықша енгізу/шығару бағытын өзгерту) сияқты нұсқаулық және босату болды.

dc

Роберт Морристің айнымалы дәлдіктегі жұмыс үстелі калькуляторы математикалық кітапханасы пайдаланушы көрсеткен нәтиже дәлдігіне жету үшін әрбір қадамда талап етілетін дәлдікті анықтау үшін кері қателік талдауын қолданды. 1968 жылы НАТО-ның бағдарламалық жасақтама инженериясы конференциясында бағдарламалық жасақтаманың құрамдас бөліктері туралы баяндамамда мен кез келген қажетті дәлдікті бере алатын анықтамалық процедураларды ұсындым, бірақ мен оларды іс жүзінде қалай қолдану керектігін білмедім. dc әлі күнге дейін мұны істей алатын жалғыз бағдарлама.

теру

Типография мәтіндегі сөздерді мәтіннің қалған бөлігіне ұқсастығына қарай орналастырады. «Hte» сияқты емле қателері тізімнің соңында болады. Роберт Моррис бұл бағдарлама кез келген тіл үшін бірдей жақсы жұмыс істейтінін мақтанышпен айтты. Теру қатесі фонетикалық қателерді табуға көмектеспесе де, бұл барлық терушілер үшін нағыз жақсылық болды және әлдеқайда қызықтырақ, бірақ дәлірек сөздік емлені тексеру құралы пайда болғанға дейін ол көп жақсылық жасады.

Теру қатесі сыртында қандай болса, ішкі жағынан да күтпеген. Ұқсастықты өлшеу алгоритмі 26×26×26 массивінде есептелетін триграммалардың пайда болу жиілігіне негізделген. Кішкентай жадта бір байт есептегіштер үшін жеткілікті орын болмады, сондықтан үлкен сандарды шағын есептегіштерге сығу схемасы жүзеге асырылды. Толып кетпеу үшін есептегіштер санауыш мәнінің логарифмінің бағасын сақтай отырып, ықтималдық негізінде жаңартылды.

экн

Фототиптеудің пайда болуымен классикалық математикалық белгілерді басып шығару мүмкін болды, бірақ өте жалықтырады. Лоринда Черри жоғары деңгейлі сипаттама тілін әзірлеуге шешім қабылдады және көп ұзамай оған Брайан Керниган қосылды. Олардың тамаша әрекеті ауызша дәстүрді жазу болды, сондықтан eqn үйрену өте оңай болды. Алғашқы математикалық өрнек тілінің препроцессоры, eqn содан бері онша жетілдірілмеген.

құрылымы

Бренда Бейкер өзінің Fortan-to-Ratfor түрлендіргішін менің бастығымның кеңесіне қарсы жасай бастады. Мен бұл түпнұсқа мәтіннің ерекше ретін өзгертуге әкелуі мүмкін деп ойладым. Ол мәлімдеме нөмірлерінен бос болады, бірақ жақсы құрылымдалған Fortran кодынан гөрі оқылатын болмайды. Бренда мені қателесті. Ол әрбір Fortran бағдарламасының канондық құрылымдық формасы бар екенін анықтады. Бағдарламашылар өздерінің бастапқы жазғандарынан гөрі канондық пішінді таңдады.

Паскаль

Берклидегі Сью Грэм тобы жасаған компилятордағы синтаксистік диагностика мен бұрын-соңды көрген ең пайдалы болды және ол автоматты түрде орындалды. Синтаксистік қатеде компилятор талдауды жалғастыру үшін таңбалауышты енгізуді ұсынады. Ненің дұрыс емес екенін түсіндіруге әрекет жоқ. Осы компилятор арқылы мен Паскаль тілін бір кеште қолымда ешқандай нұсқаулықсыз үйрендім.

бөлшектер

WWB (Writer's Workbench) модулінің ішінде жасырылған parts Лоринда Черри тек шағын сөздік, емле және грамматикалық ережелер негізінде ағылшын мәтініндегі сөздердің сөйлеу бөліктерін анықтайды. Осы аннотация негізінде WWB бағдарламасы мәтіннің стилометриялық көрсеткіштерін көрсетеді, мысалы, сын есімдердің, бағыныңқы сөйлемдердің және күрделі сөйлемдердің таралуы. Лоринда NBC-тің Today арнасына сұхбат беріп, WWB мәтіндеріндегі инновациялық грамматиканы тексеру туралы айтқан кезде, бұл теледидардағы Unix туралы алғашқы ескерту болды.

egrep

Аль Ахо өзінің детерминистік тұрақты өрнек шешушісі Кеннің классикалық детерминистік емес шешушісін басып озады деп күтті. Өкінішке орай, соңғысы күрделі тұрақты тіркестер арқылы өтуді аяқтады, ал egrep өзінің детерминирленген автоматикасын құрастырды. Әл Ахо осы жарыста жеңіске жету үшін автоматтың күй кестесінің экспоненциалды өсуінің қарғысын айналып өтті, тану кезінде тек кестедегі жазбаларды ғана құрастыру әдісін ойлап тапты.

крабдар

Лука Карделлидің Blit терезе жүйесіне арналған сүйкімді мета-бағдарламасы белсенді терезелердің шеттерін шағып, бос экран кеңістігін шарлаған виртуалды крабтарды шығарды.

Кейбір жалпы ойлар

Сырттан көрінбесе де, бұл бағдарламалардың көпшілігін құруда теория мен алгоритмдер шешуші рөл атқарды: typo, DC, struct, pascal, egrep. Шын мәнінде, бұл теорияның ерекше қолданылуы ең таң қалдырады.

Тізімнің жартысына жуығы — pascal, struct, parts, eqn — бастапқыда әйелдер жазған, бұл информатикадағы әйелдердің демографиялық көрсеткішінен әлдеқайда көп.

Дуглас Макилрой
Наурыз, 2020


Ақпарат көзі: www.habr.com

пікір қалдыру