Program Unix Pangageungna

Panulis artikel, Douglas McIlroy, nyaéta matematikawan Amérika, insinyur sareng programer. Anjeunna pangalusna dipikawanoh pikeun ngembangkeun pipa dina sistem operasi Unix, prinsip programming komponén-berorientasi sarta sababaraha utiliti aslina: mantra, diff, sortir, gabung, nyarita, TR.

Kadang anjeun mendakan sababaraha program anu saé pisan. Saatos ngagali mémori kuring, kuring parantos nyusun daptar sababaraha permata Unix anu leres salami mangtaun-taun. Dasarna, ieu mangrupikeun program anu jarang sareng henteu diperyogikeun. Tapi anu ngabédakeunana nyaéta orisinalitasna. Kuring malah teu bisa ngabayangkeun yén kuring datang nepi ka gagasan pikeun salah sahiji aranjeunna sorangan.

Bagikeun, program naon ogé impressed anjeun pisan?

PDP-7 Unix

Pikeun ngamimitian, sistem PDP-7 Unix sorangan. Kesederhanaan sareng kakuatanana ngajantenkeun kuring ngalih tina kerangka utama anu kuat ka mesin leutik. Éta sistem file hierarki klasik, cangkang anu misah, sareng kontrol prosés tingkat pangguna anu Multics dina mainframes henteu tiasa dilaksanakeun saatos ratusan taun pangwangunan. Kakurangan Unix (sapertos struktur rékaman sistem file) sami-sami instruktif sareng ngabébaskeun sapertos inovasina (sapertos shell I/O redirection).

dc

Variabel precision desktop kalkulator perpustakaan math Robert Morris urang dipaké analisis kasalahan tibalik pikeun nangtukeun precision diperlukeun dina unggal hambalan pikeun ngahontal hasil precision husus-pamaké. Dina Konférénsi Téknik Perangkat Lunak NATO 1968, dina makalah kuring ngeunaan komponén parangkat lunak, kuring ngusulkeun prosedur rujukan anu tiasa ngahasilkeun hasil tina akurasi anu dipikahoyong, tapi kuring henteu terang kumaha nerapkeunana dina prakna. dc masih hiji-hijina program anu kuring terang anu tiasa ngalakukeun ieu.

typo

Typo maréntahkeun kecap dina téks dumasar kana kasaruaan maranéhanana jeung sesa téks. Lepat ngeja sapertos 'hte' condong dugi ka tungtung daptar. Robert Morris bangga nyarios yén program éta bakal tiasa dianggo dina basa naon waé. Sanaos typo henteu ngabantosan anjeun mendakan kasalahan fonétik, éta mangrupikeun anugerah pikeun sadaya panyetel huruf sareng mangpaat pisan sateuacan cek mantra kamus anu kirang pikaresepeun tapi langkung akurat sumping.

Typo henteu kaduga di jero sareng di luar. Algoritma pangukuran kasaruaan dumasar kana frékuénsi kajadian trigram, anu diitung dina susunan 26x26x26. Aya bieu pisan spasi dina mémori leutik pikeun counters bait tunggal, jadi skéma ieu dilaksanakeun pikeun niiskeun angka nu gede ngarupakeun counters leutik. Pikeun ngahindarkeun overflow, counters diropéa dina dasar probabilistik, ngajaga perkiraan logaritma tina nilai counter.

eqn

Ku mecenghulna phototypesetting, éta janten mungkin, tapi sangar tedious, pikeun ngahasilkeun notasi matematik klasik. Lorinda Cherry mutuskeun pikeun ngembangkeun basa déskripsi tingkat luhur, sarta Brian Kernighan geura-giru ngagabung nya. Léngkahna anu saé nyaéta pikeun nganyatakeun tradisi lisan dina tulisan, naha éta éqn tétéla gampang pisan pikeun diajar. The preprocessor basa éksprési matematik mimiti jenis na, eqn geus katempo saeutik perbaikan saprak lajeng.

strukturna

Brenda Baker mimiti ngembangkeun konverter Fortan-to-Ratfor ngalawan naséhat bosna, kuring. Teu sangka ieu bisa ngahasilkeun susunan ulang husus tina téks aslina. Ieu bakal bébas tina nomer operator, tapi disebutkeun teu leuwih dibaca ti kode Fortran well-terstruktur. Brenda ngabuktikeun kuring salah. Anjeunna mendakan yén unggal program Fortran ngagaduhan bentuk anu terstruktur sacara kanonik. Programer langkung milih bentuk kanonik tibatan naon anu ditulis ku sorangan.

pascal

Diagnostik sintaksis dina kompiler anu diwangun ku grup Sue Graham di Berkeley mangrupikeun anu paling kapaké anu kuring kantos ningali-sareng éta otomatis. Upami aya kasalahan sintaksis, kompiler nyarankeun anjeun nyelapkeun token pikeun neraskeun parsing. Henteu aya usaha pikeun ngajelaskeun naon anu salah. Kalayan kompiler ieu, kuring diajar Pascal dina hiji wengi, tanpa aya manual.

bagian

Modul disumputkeun di jero bungkusan WWB (Writer's Workbench). parts Lorinda Cherry nangtukeun bagian ucapan pikeun kecap dina téks basa Inggris ngan dumasar kana kamus leutik, aturan ejaan jeung grammar. Dumasar kana anotasi ieu, program WWB mintonkeun indikator stylometric tina téks, saperti Prévalénsi kecap sipat, klausa subordinatif jeung kalimah kompléks. Nalika Lorinda diwawancara dina acara NBC's Today sareng nyarioskeun ngeunaan pamariksaan grammar inovatif WWB, éta mangrupikeun sebutan munggaran ngeunaan Unix dina televisi.

egrep

Al Aho miharep yén parser ekspresi reguler deterministik na bakal ngaleuwihan parser non-deterministik klasik Ken. Hanjakal, dimungkinkeun ieu geus completing a ngaliwatan éksprési biasa kompléks dugi egrep diwangun automation deterministik sorangan. Pikeun tetep meunang lomba ieu, Al Aho circumvented kutukan tumuwuhna éksponénsial tina tabel kaayaan automatisk ku inventing cara pikeun ngawangun on laleur ngan maranéhanana Éntri tabel nu sabenerna dilongok salila pangakuan.

keuyeup

Meta-program menawan Luca Cardelli pikeun sistem windowing Blit ngarilis keuyeup maya nu wandered sabudeureun spasi layar kosong, biting kaluar beuki loba edges of windows aktip.

Sababaraha pikiran umum

Sanajan teu katempo ti luar, téori jeung algoritma maénkeun peran decisive dina kreasi lolobana program ieu: typo, dc, struct, pascal, egrep. Nyatana, éta aplikasi anu teu biasa tina téori anu paling héran.

Panulis asli ampir satengah daptar-pascal, struct, bagian, eqn-éta awéwé, nu greatly ngaleuwihan pangsa demografi awéwé dina elmu komputer.

Douglas McIlroy
Maret, 2020


sumber: www.habr.com

Tambahkeun komentar