Eng buyuk Unix dasturlari

Maqola muallifi Duglas Makilroy amerikalik matematik, muhandis va dasturchidir. U Unix operatsion tizimida quvur liniyasini ishlab chiqish, komponentlarga yo'naltirilgan dasturlash tamoyillari va bir nechta original yordamchi dasturlar bilan mashhur: spell, diff, sort, join, speak, tr.

Ba'zida siz haqiqatan ham ajoyib dasturlarga duch kelasiz. Xotiramni vayron qilgandan so'ng, men yillar davomida haqiqiy Unix toshlari ro'yxatini tuzdim. Asosan, bu juda kam uchraydigan va unchalik zarur bo'lmagan dasturlar. Ammo ularni ajratib turadigan narsa ularning o'ziga xosligidir. Men o'zim ulardan biron birining g'oyasini o'ylab topganimni tasavvur ham qila olmayman.

Siz ham qanday dasturlardan juda qoyil qolgansiz?

PDP-7 Unix

Yangi boshlanuvchilar uchun PDP-7 Unix tizimining o'zi. Uning soddaligi va kuchi meni kuchli asosiy kompyuterdan kichik mashinaga o'tishga majbur qildi. Bu asosiy ierarxik fayl tizimi, alohida qobiq va foydalanuvchi darajasidagi jarayon boshqaruvi bo'lib, asosiy kadrdagi Multics yuzlab inson yillik rivojlanishdan so'ng erisha olmagan. Unix-ning kamchiliklari (masalan, fayl tizimining yozuvlar tuzilishi) uning yangiliklari (masalan, qobiq kiritish-chiqarishni qayta yo'naltirish) kabi ibratli va ozod qiluvchi edi.

dc

Robert Morrisning o'zgaruvchan nozik ish stoli kalkulyatori matematik kutubxonasi foydalanuvchi tomonidan belgilangan natija aniqligiga erishish uchun har bir qadamda talab qilinadigan aniqlikni aniqlash uchun teskari xatolar tahlilidan foydalangan. 1968 yilgi NATO dasturiy ta'minot muhandisligi konferentsiyasida dasturiy ta'minot komponentlari haqidagi ma'ruzamda men istalgan aniqlikni ta'minlaydigan mos yozuvlar protseduralarini taklif qildim, lekin ularni qanday qilib amalda qo'llashni bilmasdim. dc hali ham buni qila oladigan men bilgan yagona dastur.

yozuv

Typo matndagi so'zlarni matnning qolgan qismiga o'xshashligiga qarab tartibga soladi. "Hte" kabi noto'g'ri imlolar ro'yxatning oxirida bo'ladi. Robert Morris g'urur bilan dastur har qanday til uchun birdek yaxshi ishlashini aytdi. Garchi matn terish xatosi fonetik xatolarni topishga yordam bermasa-da, bu barcha matn terishchilar uchun haqiqiy ne'mat bo'ldi va unchalik qiziq bo'lmagan, ammo aniqroq lug'at imlo tekshirgichi paydo bo'lgunga qadar bu juda ko'p foyda keltirdi.

Yozuv xatosi tashqi tomondan bo'lgani kabi, ichkarida ham kutilmagan. O'xshashlikni o'lchash algoritmi trigrammalarning paydo bo'lish chastotasiga asoslanadi, ular 26 Γ— 26 Γ— 26 massivda hisoblanadi. Kichkina xotirada bir baytli hisoblagichlar uchun etarli joy bor edi, shuning uchun katta raqamlarni kichik hisoblagichlarga siqish sxemasi amalga oshirildi. To'lib ketishining oldini olish uchun hisoblagichlar hisoblagich qiymatining logarifmini baholashni saqlab, ehtimollik asosida yangilandi.

ekn

Fototiplashning paydo bo'lishi bilan klassik matematik yozuvlarni chop etish mumkin bo'ldi, lekin juda zerikarli. Lorinda Cherri yuqori darajadagi tavsif tilini ishlab chiqishga qaror qildi va tez orada Brayan Kernigan unga qo'shildi. Ularning ajoyib harakati og'zaki an'anani yozma shaklga keltirish edi, shuning uchun eqnni o'rganish juda oson edi. Matematik ifodalar tilining birinchi protsessori bo'lgan eqn o'shandan beri unchalik yaxshilanmadi.

tuzilmaviy

Brenda Beyker o'zining xo'jayini, mening maslahatimga qarshi Fortan-to-Ratfor konvertorini ishlab chiqishni boshladi. Bu asl matnning maxsus qayta tartiblanishiga olib kelishi mumkin deb o'yladim. U bayonot raqamlaridan ozod bo'ladi, lekin aks holda yaxshi tuzilgan Fortran kodidan ko'ra ko'proq o'qilishi mumkin emas. Brenda meni noto'g'ri qildi. U har bir Fortran dasturi kanonik tuzilgan shaklga ega ekanligini aniqladi. Dasturchilar dastlab o'zlari yozgan narsadan ko'ra, kanonik shaklni afzal ko'rdilar.

Paskal

Berklidagi Sue Graham guruhi tomonidan yaratilgan kompilyatordagi sintaksis diagnostikasi men ko'rgan eng foydali diagnostika bo'ldi va u avtomatik tarzda amalga oshirildi. Sintaksis xatosi bo'lsa, kompilyator tahlil qilishni davom ettirish uchun tokenni kiritishingizni taklif qiladi. Nima noto'g'ri ekanligini tushuntirishga urinish yo'q. Ushbu kompilyator yordamida men Paskal tilini bir oqshomda qo'limda qo'llanmasiz o'rgandim.

ehtiyot qismlar

WWB (Writer's Workbench) modulida yashiringan parts Lorinda Cherry inglizcha matndagi so'zlar uchun nutq qismlarini faqat kichik lug'at, imlo va grammatika qoidalariga asoslanib belgilaydi. Ushbu izohga asoslanib, WWB dasturi matnning stilometrik ko'rsatkichlarini ko'rsatadi, masalan, sifatlar, bo'ysunuvchi bo'laklar va murakkab jumlalarning tarqalishi. Lorinda NBC telekanaliga intervyu berganida va WWB matnlarida innovatsion grammatika tekshiruvi haqida gapirganida, bu televizorda Unix haqida birinchi eslatma bo'ldi.

egrep

Al Aho o'zining deterministik muntazam ifoda hal qiluvchisi Kenning klassik deterministik bo'lmagan hal qiluvchisidan o'zib ketishini kutgan. Afsuski, ikkinchisi allaqachon murakkab muntazam iboralar orqali o'tishni yakunlayotgan edi egrep o'zining deterministik avtomatizatsiyasini yaratdi. Ushbu poygada g'alaba qozonish uchun Al Aho faqat tanib olish paytida tashrif buyurilgan jadvaldagi yozuvlarni tezda qurish usulini ixtiro qilish orqali avtomatning holat jadvalining eksponentsial o'sishi la'natini yengib chiqdi.

Qisqichbaqa

Luka Kardellining Blit oyna tizimi uchun jozibali meta-dasturi faol oynalarning chekkalarini tobora ko'proq tishlab, bo'sh ekran maydonida aylanib yurgan virtual qisqichbaqalarni chiqardi.

Ba'zi umumiy fikrlar

Tashqaridan ko'rinmasa ham, nazariya va algoritmlar ushbu dasturlarning ko'pchiligini yaratishda hal qiluvchi rol o'ynadi: typo, DC, struct, pascal, egrep. Aslida, bu nazariyaning g'ayrioddiy qo'llanilishi eng hayratlanarli.

Ro'yxatning deyarli yarmi - pascal, struct, parts, eqn - dastlab ayollar tomonidan yozilgan bo'lib, kompyuter fanlaridagi ayollar demografiyasidan ancha ko'p.

Duglas MakIlroy
Mart, 2020


Manba: www.habr.com

a Izoh qo'shish