Program Unix Hebat

Penulis artikel, Douglas McIlroy, adalah ahli matematika, insinyur, dan programmer Amerika. Dia terkenal karena mengembangkan saluran pipa di sistem operasi Unix, prinsip pemrograman berorientasi komponen, dan beberapa utilitas asli: mantra, diff, urutkan, gabung, bicara, tr.

Terkadang Anda menemukan program yang sangat bagus. Mengaduk-aduk ingatan saya, saya telah menyusun daftar mutiara asli Unix selama bertahun-tahun. Pada dasarnya, ini adalah program yang sangat jarang dan tidak begitu diperlukan. Tetapi yang membedakan mereka adalah orisinalitas. Saya bahkan tidak bisa membayangkan bahwa saya sendiri yang memiliki ide tentang mereka.

Bagikan, program mana yang juga sangat memukul Anda?

PDP-7 Unix


Sebagai permulaan, sistem PDP-7 Unix itu sendiri. Kesederhanaan dan kekuatannya membuat saya beralih dari mainframe yang kuat ke mesin kecil. Berikut adalah intisari dari sistem file hirarkis, shell yang terpisah dan manajemen proses di tingkat pengguna, yang tidak dapat diimplementasikan oleh Multics pada mainframe setelah ratusan tahun pengembangan. Kerugian Unix (misalnya, struktur catatan dalam sistem file) sama instruktif dan membebaskan seperti inovasinya (misalnya, pengalihan input-output dalam shell).

dc


Pustaka matematika Robert Morris untuk kalkulator desktop presisi variabel menggunakan analisis kesalahan terbalik untuk menentukan akurasi yang diperlukan pada setiap langkah untuk mencapai akurasi yang ditentukan pengguna. Pada konferensi rekayasa perangkat lunak NATO 1968, dalam laporan saya tentang komponen perangkat lunak, saya mengusulkan prosedur referensi yang dapat menghasilkan hasil dari akurasi yang diinginkan, tetapi saya tidak tahu bagaimana mempraktikkannya. dc masih satu-satunya program yang diketahui oleh saya yang dapat melakukan ini.

salah ketik


Typo mengatur kata-kata dalam teks sesuai dengan kemiripannya dengan teks yang lain. Kacamata seperti 'hte' cenderung berada di akhir daftar. Robert Morris dengan bangga mengatakan bahwa program ini akan bekerja dengan baik untuk bahasa apa pun. Meskipun kesalahan ketik tidak membantu menemukan kesalahan fonetik, itu menjadi penemuan nyata bagi siapa pun yang mengetik, dan melakukan banyak hal baik sebelum hal yang kurang menarik, tetapi pemeriksaan ejaan yang lebih akurat pada kamus muncul.

Typo secara tak terduga diatur di dalam maupun di luar. Algoritma pengukuran kesamaan didasarkan pada frekuensi kemunculan trigram, yang dihitung dalam array 26 × 26 × 26. Dalam memori kecil, hampir tidak ada ruang yang cukup untuk penghitung bita tunggal, sehingga skema untuk mengompresi bilangan besar ke penghitung kecil diimplementasikan. Untuk menghindari overflow, penghitung diperbarui berdasarkan probabilitas, mendukung estimasi logaritma nilai penghitung.

Persamaan


Dengan munculnya photocomposition, menjadi mungkin, tetapi sangat melelahkan, untuk mendapatkan notasi matematika klasik. Lorinda Cherry memutuskan untuk mengembangkan bahasa deskripsi tingkat tinggi, dan segera Brian Kernigan bergabung dengannya. Langkah cemerlang mereka adalah mengekspresikan tradisi lisan dalam tulisan, jadi eqn ternyata mudah dipelajari. Yang pertama dari jenis preprocessor bahasa untuk menggambarkan ekspresi matematika, eqn hampir tidak membaik sejak saat itu.

struct


Brenda Baker memulai pengembangan konverter Fortan-to-Ratfor miliknya, bertentangan dengan saran atasannya - saya. Saya pikir ini bisa mengarah pada penataan ulang teks sumber secara khusus. Ini akan bebas dari angka operator, tetapi sebaliknya tidak lebih mudah dibaca daripada kode Fortran yang terstruktur dengan baik. Brenda membuktikan bahwa aku salah. Dia menemukan bahwa setiap program Fortran memiliki bentuk terstruktur secara kanonik. Programmer lebih suka bentuk kanonik daripada apa yang mereka tulis sendiri.

pascal


Diagnostik sintaksis dalam kompiler yang dibuat oleh kelompok Sue Graham di Berkeley adalah yang paling berguna dari semua yang pernah saya lihat - dan itu dilakukan secara otomatis. Dengan kesalahan sintaksis, kompiler menyarankan memasukkan token untuk melanjutkan parsing. Tidak ada upaya untuk menjelaskan apa yang salah. Dengan kompiler ini, saya belajar Pascal dalam satu malam, tanpa bimbingan.

bagian


Tersembunyi di dalam paket WWB (Writer's Workbench) parts, modul Lorinda Cherry menentukan bagian pidato untuk kata-kata dalam teks bahasa Inggris berdasarkan hanya pada kamus kecil, aturan pengejaan dan tata bahasa. Menurut anotasi ini, program WWB menampilkan indikator stylometrik teks, seperti dominasi kata sifat, klausa bawahan dan kalimat kompleks. Ketika Lorinda diwawancarai di acara TV Today NBC dan berbicara tentang pemeriksaan tata bahasa yang inovatif dalam teks WWB, ini adalah penyebutan pertama tentang Unix di televisi.

egrep


Al Aho berharap penyelesai ekspresi reguler deterministiknya akan menyusul penyelesai klasik non-deterministik Ken. Sayangnya, yang terakhir sudah menyelesaikan lulus pada ekspresi reguler yang kompleks sambil egrepmembangun otomatisasi deterministiknya. Untuk memenangkan perlombaan ini, Al Aho menghindari kutukan dari pertumbuhan eksponensial dari tabel keadaan otomat, menciptakan cara untuk membangun dengan cepat hanya catatan-catatan dari tabel yang benar-benar dikunjungi selama pengenalan.

kepiting


Meta-program Luca Cardelli yang menawan untuk sistem Blit window menghasilkan kepiting virtual yang menjelajahi ruang kosong layar, semakin lama semakin menggigit tepi jendela aktif.

Beberapa pemikiran umum


Meskipun ini tidak terlihat dari luar, teori dan algoritma memainkan peran yang menentukan dalam pembuatan sebagian besar program ini: kesalahan ketik, dc, struct, pascal, egrep. Faktanya, hal yang paling mengejutkan adalah penerapan teori yang tidak biasa.

Penulis asli hampir setengah dari daftar - pascal, struct, parts, eqn - adalah wanita, yang secara signifikan melebihi pangsa demografis wanita di bidang ilmu komputer.

Douglas McIlroy
Maret, 2020

All Articles