Program Unix Terbesar

Penulis artikel tersebut, Douglas McIlroy, adalah seorang ahli matematika, insinyur, dan programmer Amerika. Dia terkenal karena mengembangkan pipa dalam sistem operasi Unix, prinsip-prinsip pemrograman berorientasi komponen, dan beberapa utilitas asli: spell, diff, sort, join, speak, tr.

Terkadang Anda menemukan program yang sangat bagus. Setelah mengobrak-abrik ingatan saya, saya menyusun daftar permata Unix asli selama bertahun-tahun. Pada dasarnya, ini adalah program yang cukup langka dan tidak begitu diperlukan. Tapi yang membuat mereka menonjol adalah orisinalitas mereka. Saya bahkan tidak dapat membayangkan bahwa saya sendiri yang mendapatkan ide tentang salah satu dari mereka.

Bagikan program apa yang juga membuat Anda terkesan?

PDP-7 Unix

Sebagai permulaan, sistem Unix PDP-7 itu sendiri. Kesederhanaan dan kekuatannya membuat saya berpindah dari mainframe yang kuat ke mesin kecil. Ini adalah sistem file hierarki klasik, shell terpisah, dan kontrol proses tingkat pengguna yang tidak dapat dicapai Multics pada mainframe setelah ratusan tahun pengembangan. Kekurangan Unix (seperti struktur rekaman sistem file) sama instruktif dan membebaskannya dengan inovasinya (seperti pengalihan I/O shell).

dc

Perpustakaan Matematika Presisi Variabel Desktop Kalkulator Robert Morris menggunakan analisis kesalahan terbalik untuk menentukan presisi yang diperlukan pada setiap langkah untuk mencapai presisi hasil yang ditentukan pengguna. Pada Konferensi Rekayasa Perangkat Lunak NATO tahun 1968, dalam laporan saya tentang komponen perangkat lunak, saya mengusulkan prosedur referensi yang dapat menghasilkan akurasi yang diinginkan, tetapi saya tidak tahu bagaimana mempraktikkannya. dc masih satu-satunya program yang saya tahu yang dapat melakukan ini.

kesalahan cetak

Typo mengatur kata-kata dalam teks sesuai dengan kemiripannya dengan teks lainnya. Salah eja seperti 'hte' cenderung berada di akhir daftar. Robert Morris dengan bangga mengatakan bahwa program tersebut akan bekerja dengan baik untuk bahasa apa pun. Meskipun kesalahan ketik tidak membantu Anda menemukan kesalahan fonetik, itu benar-benar keuntungan bagi semua penata huruf, dan itu banyak membantu sebelum pemeriksa ejaan kamus yang kurang menarik tetapi lebih akurat muncul.

Typo sama tidak terduganya di dalam maupun di luar. Algoritma pengukuran kemiripan didasarkan pada frekuensi kemunculan trigram, yang dihitung dalam larik berukuran 26x26x26. Memori kecil hampir tidak memiliki cukup ruang untuk penghitung satu byte, sehingga skema diterapkan untuk mengompresi jumlah besar menjadi penghitung kecil. Untuk menghindari luapan, penghitung diperbarui berdasarkan probabilistik, mempertahankan perkiraan logaritma dari nilai penghitung.

persamaan

Dengan munculnya phototypesetting, menjadi mungkin, tetapi sangat membosankan, untuk mencetak notasi matematika klasik. Lorinda Cherry memutuskan untuk mengembangkan bahasa deskripsi tingkat tinggi, dan tak lama kemudian Brian Kernigan bergabung dengannya. Langkah brilian mereka adalah memasukkan tradisi lisan ke dalam tulisan, jadi eqn sangat mudah dipelajari. Preprosesor bahasa ekspresi matematis pertama dari jenisnya, eqn belum banyak diperbaiki sejak saat itu.

struktur

Brenda Baker mulai mengembangkan konverter Fortan-to-Ratfor-nya bertentangan dengan saran bosnya, saya. Saya pikir ini mungkin mengarah pada penataan ulang khusus dari teks aslinya. Ini akan bebas dari nomor pernyataan, tetapi sebaliknya tidak lebih mudah dibaca daripada kode Fortran yang terstruktur dengan baik. Brenda membuktikan saya salah. Dia menemukan bahwa setiap program Fortran memiliki bentuk yang terstruktur secara kanonik. Para pemrogram lebih menyukai bentuk kanonik, daripada apa yang mereka tulis sendiri.

pascal

Diagnostik sintaks dalam kompiler yang dibuat oleh grup Sue Graham di Berkeley adalah yang paling membantu yang pernah saya lihatβ€”dan dilakukan secara otomatis. Pada kesalahan sintaksis, kompiler meminta Anda memasukkan token untuk melanjutkan penguraian. Tidak ada upaya untuk menjelaskan apa yang salah. Dengan kompiler ini, saya mempelajari Pascal dalam satu malam tanpa manual apa pun.

bagian

Tersembunyi di dalam modul WWB (Writer's Workbench). parts Lorinda Cherry menentukan bagian ucapan untuk kata-kata dalam teks bahasa Inggris hanya berdasarkan kamus kecil, aturan ejaan dan tata bahasa. Berdasarkan anotasi ini, program WWB menampilkan indikator stilometri teks, seperti prevalensi kata sifat, klausa bawahan, dan kalimat kompleks. Ketika Lorinda diwawancarai di NBC's Today dan berbicara tentang pemeriksaan tata bahasa inovatif dalam teks WWB, itu adalah penyebutan pertama Unix di televisi.

Egrep

Al Aho mengharapkan penyelesai ekspresi reguler deterministiknya untuk menyalip penyelesai non-deterministik klasik Ken. Sayangnya, yang terakhir sudah menyelesaikan melewati ekspresi reguler yang kompleks, sementara egrep membangun otomatisasi deterministiknya sendiri. Untuk tetap memenangkan perlombaan ini, Al Aho menyiasati kutukan pertumbuhan eksponensial tabel status otomat dengan menemukan cara untuk membangun dengan cepat hanya entri-entri dalam tabel yang benar-benar dikunjungi selama pengenalan.

kepiting

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

Beberapa pemikiran umum

Meskipun tidak terlihat dari luar, teori dan algoritme memainkan peran yang menentukan dalam pembuatan sebagian besar program ini: salah ketik, dc, struct, pascal, egrep. Nyatanya, penerapan teori yang tidak biasa itulah yang paling mengejutkan.

Hampir setengah dari daftar β€” pascal, struct, parts, eqn β€” awalnya ditulis oleh wanita, jauh melebihi jumlah demografi wanita dalam ilmu komputer.

Douglas McIlroy
Maret, 2020


Sumber: www.habr.com

Tambah komentar