Müəllif Douglas McIlroy — amerikalı riyaziyyatçı, mühəndis və proqramçı. Unix əməliyyat sistemində kəmər pisliklərinin yaradılması, komponent əsaslı proqramlaşdırma prinsipləri və spell, diff, sort, join, speak, tr kimi bir neçə orijinal utility ilə tanınır.
Bəzən həqiqətən gözəl proqramlarla rastlaşırıq. Yadımda saxladığım bir neçə il ərzində Unix-dəki həqiqi inci proqramların siyahısını yaratdım. Əsasən, bunlar olduqca nadir və bu qədər zəruri olmayan proqramlardır. Lakin onları fərqləndirən şey, orijinallığıdır. Özümə belə, onlardan birinin ideyasını düşünə bilmirəm.
Bəs siz hansı proqramlarla belə heyran oldunuz?
PDP-7 Unix
İlk öncə, PDP-7 Unix sistemi. Onun sadəliyi və gücü məni güclü mainframe-dən bu kiçik maşına keçməyə vadar etdi. Burada iyerarxik fayl sisteminin qisası, ayrıca shell və istifadəçi səviyyəsində proseslərin idarə olunması var ki, Multics mainframe-lərdə onun bəzilərini yüzlərlə il antlaşma apardığı zaman həyata keçirə bilməmişdi. Unix-in çatışmazlıqları (məsələn, fayl sistemindəki yazılı strukturlar) həmçinin onun ixtiraları kimi maarifləndirici və azad edici olmuşdur.
dc
Robert Morris tərəfindən tərtib olunan dəyişkən dəqiqliklə masaüstü kalkulyator üçün riyaziyyat kitabxanası, istifadəçi tərəfindən təyin edilmiş nəticənin dəqiqliyinə çatmaq üçün hər addımda tələb olunan dəqiqliyi təyin etmək üçün geriyə analiz səhvlərindən istifadə etdi. 1968-ci ildə NATO proqram mühəndisliyi konfransında proqram ərizələri ilə bağlı çıxışımda ideal prosedurların standartlarını təklif etdim ki, istənilən dəqiqlik də əldə olunsun, lakin bunun praktikada necə həyata keçiriləcəyini bilmirəm. dc hələ də bunun üçün bilinən yeganə proqramdır.
typo
Typo mətndəki sözləri qalan mətndəki oxşarlığına görə sıralayır. ‘hte’ kimi səhvlər adətən siyahının sonunda olur. Robert Morris qürurla qeyd edirdi ki, proqram hər hansı bir dil üçün eyni dərəcədə yaxşı işləyəcək. Hətta typo fonetik səhvlərin tapılmasına kömək etməsə də, yazı yazan hər kəs üçün əsl tapıntı olmuşdur və lüğət əsasında daha az maraqlı, amma daha dəqiq olan səhv yoxlaması çıxmamışdan əvvəl çox fayda gətirmişdir.
Typo içəridən də, xaricdən də gözlənilməz bir şəkildə təşkil olunmuşdur. Oxşarlığın ölçülməsi alqoritmi 26×26×26 ölçüsündə bir massivdə tigrammların yaranma tezliyinə əsaslanır. Birbaytlıq saymaçılar üçün kifayət qədər yer olmadıqda, kiçik saymaçılar üçün böyük ədədlərin sıxılmasını həyata keçirmək yolları tapıldı. Dağıntıları qarşısını almaq üçün, saymaçılar ehtimal ilə yeniləndi, saymaçının dəyərinin logaritmi qiymətləndirmək üçün qorunması üçün.
eqn
Fotohassı ilə birlikdə klassik riyazi notasiya çıxarmaq mümkün oldu, lakin olduqca yorucu idi. Lorinda Çerri daha yüksək səviyyəli təsvir dili yaratmağa qərar verdi və tezliklə Brian Kernighan ona qoşuldu. Onların parlaq addımı, şifahi ənənəni yazılı formada ifadə etmək oldu, buna görə də eqn öyrənmək üçün gözlənilmədən sadə oldu. Riyazi ifadələrin təsvir dili üçün ilk belə öncədən yaradılmış proqram olan eqn o vaxtdan bəri demək olar ki, heç bir təkmilləşmə görməmişdir.
struct
Brenda Beyker Fortan-dan Ratfor-a konvertorunun inkişafını məni xəbərdar etməsinə baxmayaraq başlatmışdı — mən. Mən düşündüm ki, bu, mənbə mətninin xüsusi şəkildə yenidən sıralanmasına səbəb ola bilər. Bu, operator nömrələrindən azad olacaq, lakin qalanlarda mükəmməl strukturlaşdırılmış Fortran kodundan o qədər də oxunaqlı olmayacaq. Brenda mənim yanıldığımı sübut etdi. O, hər bir Fortran proqramının kanonik olaraq strukturlaşdırılmış bir formaya sahib olduğunu aşkar etdi. Proqramçılar kanonik formaya, özlərinin əvvəl yazdıqları şeylərdən daha çox üstünlük verirdilər.
pascal
Berkeley-də Sue Graham qrupunun yaratdığı kompilatorda sintaksis diaqnostikası gördüyüm ən faydalı idi — və bu, avtomatik olaraq həyata keçirilirdi. Sintaktik səhv baş verəndə kompilator, sintaksis analizini davam etdirmək üçün leksimi əlavə etməyi təklif edir. Nə yanlış olduğunu izah etməyə cəhd edilmir. Bu kompilatorla bir axşamda Pascal öyrəndim, heç bir bələdçi olmadan.
parts
WWB (Yazıçıların İş Masası) paketində gizli modul parts Lorinda Çerri İngilis dilindəki mətnlərdəki sözlər üçün yalnız kiçik bir lüğət, tələflər və qrammatika qaydaları əsasında nitq hissələrini müəyyən edir. Bu annotasiyaya əsasən, WWB proqramı mətnin stilometrik göstəricilərini, məsələn, sifətlərin, əlavə cümlələrin və mürəkkəb cümlələrin üstünlüyünü çıxarır. Lorinda NBC-dəki Today proqramında müsahibə verərək WWB-dəki innovativ qrammatika yoxlamasından bəhs etdikdə, bu, televiziyada Unix-in birinci dəfə adının çəkilməsi oldu.
egrep
Al Aho, deterministik tənzimləyici ilə Kenin klassik qeyri-deterministik tənzimləyicisini keçəcəyini düşündü. Təəssüf ki, sonuncu artıq mürəkkəb müntəzəm ifadələrdə keçidi tamamlayırdı, egrep deterministik avtomatını qurarkən. Hətta bu yarışda qalib gəlmək üçün Al Aho, tanıma zamanı faktiki ziyarət edilən yalnız o qeydləri təşkil etməyi kəşf edərək, avtomatın vəziyyət cədvəlini eksponensial artım lənətini aşdı.
crabs
Luki Kardelli'nin Blit pencere sistemi için büyüleyici meta programı, ekranda boş bir alanda dolaşan sanal yengeçler üretti ve aktif pencerelerin kenarlarını giderek daha fazla ısırdı.
Bazı genel düşünceler
Dışarıdan görünmese de, kuram ve algoritmalar bu programların çoğunun yaratılmasında belirleyici bir rol oynadı: typo, dc, struct, pascal, egrep. Gerçekten de en çok dikkat çeken, teorinin alışılmadık uygulamaları.
Listede yer alan birçok orijinal yazar - pascal, struct, parts, eqn - kadınlardı ve bu, bilgisayar bilimleri alanındaki kadınların demografik oranını önemli ölçüde aşmaktadır.
Douglas MacIlroy
Mart, 2020
Mənbə: habr.com
