Program Unix Terhebat

Pengarang artikel, Douglas McIlroy, ialah seorang ahli matematik, jurutera dan pengaturcara Amerika. Beliau terkenal kerana membangunkan saluran paip dalam sistem pengendalian Unix, prinsip pengaturcaraan berorientasikan komponen, dan beberapa utiliti asal: mengeja, membezakan, menyusun, bergabung, bercakap, tr.

Kadang-kadang anda menjumpai program yang sangat menarik. Selepas menyelongkar ingatan saya, saya menyusun senarai permata Unix sebenar selama ini. Pada asasnya, ini adalah program yang jarang berlaku dan tidak begitu diperlukan. Tetapi yang membuat mereka menonjol adalah keaslian mereka. Saya tidak dapat membayangkan bahawa saya sendiri datang dengan idea mana-mana daripada mereka.

Kongsi program apa yang anda juga begitu kagum?

PDP-7 Unix

Sebagai permulaan, sistem PDP-7 Unix itu sendiri. Kesederhanaan dan kuasanya membuatkan saya beralih daripada kerangka utama yang berkuasa kepada mesin kecil. Ia adalah sistem fail hierarki yang sangat penting, cangkerang berasingan, dan kawalan proses peringkat pengguna yang tidak dapat dicapai oleh Multics pada kerangka utama selepas pembangunan beratus-ratus tahun manusia. Kekurangan Unix (seperti struktur rekod sistem fail) adalah sama mengajar dan membebaskan seperti inovasinya (seperti pengalihan semula shell I/O).

dc

Perpustakaan Matematik Desktop Kalkulator Ketepatan Boleh Ubah Robert Morris menggunakan analisis ralat songsang untuk menentukan ketepatan yang diperlukan pada setiap langkah untuk mencapai ketepatan hasil yang ditentukan pengguna. Pada Persidangan Kejuruteraan Perisian NATO 1968, dalam laporan saya tentang komponen perisian, saya mencadangkan prosedur rujukan yang boleh menghasilkan sebarang ketepatan yang diingini, tetapi saya tidak tahu bagaimana untuk mempraktikkannya. dc masih satu-satunya program yang saya tahu yang boleh melakukan ini.

typo

Typo menyusun perkataan dalam teks mengikut persamaannya dengan teks yang lain. Kesalahan ejaan seperti 'hte' cenderung berada di penghujung senarai. Robert Morris dengan bangganya berkata bahawa program itu akan berfungsi dengan baik untuk mana-mana bahasa. Walaupun kesilapan menaip tidak membantu anda mencari ralat fonetik, ia merupakan satu faedah yang nyata untuk semua pembuat taip, dan ia memberi banyak manfaat sebelum penyemak ejaan kamus yang kurang menarik tetapi lebih tepat datang bersama-sama.

Typo adalah tidak dijangka di dalam seperti di luar. Algoritma ukuran persamaan adalah berdasarkan kekerapan kejadian trigram, yang dikira dalam tatasusunan 26Γ—26Γ—26. Memori kecil itu hampir tidak mempunyai ruang yang mencukupi untuk pembilang satu bait, jadi satu skema telah dilaksanakan untuk memampatkan nombor besar kepada pembilang kecil. Untuk mengelakkan limpahan, pembilang telah dikemas kini secara probabilistik, mengekalkan anggaran logaritma nilai pembilang.

eqn

Dengan kemunculan phototypesetting, ia menjadi mungkin, tetapi sangat membosankan, untuk mencetak tatatanda matematik klasik. Lorinda Cherry memutuskan untuk membangunkan bahasa penerangan peringkat lebih tinggi, dan tidak lama kemudian Brian Kernigan menyertainya. Langkah cemerlang mereka ialah meletakkan tradisi lisan ke dalam penulisan, jadi eqn amat mudah dipelajari. Prapemproses bahasa ungkapan matematik pertama seumpamanya, eqn tidak banyak dipertingkatkan sejak itu.

struktur

Brenda Baker mula membangunkan penukar Fortan-to-Ratfornya terhadap nasihat bosnya, saya. Saya fikir ini mungkin membawa kepada penyusunan semula khas teks asal. Ia akan bebas daripada nombor pernyataan, tetapi sebaliknya tidak lebih boleh dibaca daripada kod Fortran yang tersusun dengan baik. Brenda membuktikan saya salah. Dia mendapati bahawa setiap program Fortran mempunyai bentuk berstruktur secara kanonik. Pengaturcara lebih suka bentuk kanonik, daripada apa yang mereka tulis pada asalnya.

paschal

Diagnostik sintaks dalam pengkompil yang dicipta oleh kumpulan Sue Graham di Berkeley adalah yang paling membantu yang pernah saya lihatβ€”dan ia dilakukan secara automatik. Pada ralat sintaks, pengkompil menggesa anda untuk memasukkan token untuk meneruskan penghuraian. Tiada percubaan untuk menjelaskan apa yang salah. Dengan pengkompil ini, saya belajar Pascal dalam satu petang tanpa sebarang manual di tangan.

bahagian

Tersembunyi di dalam modul WWB (Writer's Workbench). parts Lorinda Cherry menentukan bahagian pertuturan untuk perkataan dalam teks bahasa Inggeris berdasarkan hanya kamus kecil, ejaan dan peraturan tatabahasa. Berdasarkan anotasi ini, program WWB memaparkan penunjuk stilometrik teks, seperti kelaziman kata adjektif, klausa bawahan dan ayat kompleks. Apabila Lorinda ditemu bual di NBC's Today dan bercakap tentang pemeriksaan tatabahasa yang inovatif dalam teks WWB, ia merupakan sebutan pertama Unix di televisyen.

egrep

Al Aho menjangkakan penyelesai ekspresi tetap deterministiknya mengatasi penyelesai bukan deterministik klasik Ken. Malangnya, yang terakhir itu sudah melengkapkan laluan melalui ungkapan biasa yang kompleks, manakala egrep membina automasi deterministiknya sendiri. Untuk tetap memenangi perlumbaan ini, Al Aho mengatasi kutukan pertumbuhan eksponen jadual negeri automasi dengan mencipta cara untuk membina dengan cepat hanya entri dalam jadual yang sebenarnya dilawati semasa pengiktirafan.

ketam

Program meta Luca Cardelli yang menawan untuk sistem tetingkap Blit mengeluarkan ketam maya yang berkeliaran di ruang skrin kosong, semakin banyak menggigit tepi tingkap aktif.

Beberapa pemikiran umum

Walaupun ia tidak kelihatan dari luar, teori dan algoritma memainkan peranan penting dalam penciptaan kebanyakan program ini: typo, dc, struct, pascal, egrep. Malah, aplikasi luar biasa teori itu yang paling mengejutkan.

Hampir separuh daripada senarai β€” pascal, struct, parts, eqn β€” pada asalnya ditulis oleh wanita, jauh melebihi jumlah demografi wanita dalam sains komputer.

Douglas McIlroy
Mac, 2020


Sumber: www.habr.com

Tambah komen