Jadi saya mencoba melakukan sedikit riset tentang hal ini dengan mencari manual PDP-10 / TOPS-10 untuk mengetahui bagaimana keadaan seni sebelum pipa. Saya menemukan ini , tetapi TOPS-10 sangat sulit untuk google. Ada beberapa referensi bagus tentang penemuan pipa: sebuah wawancara dengan McIlroy , tentang sejarah dan dampak UNIX .
Anda harus memasukkan ini ke dalam konteks historis. Tidak banyak alat dan kenyamanan modern yang kita anggap remeh.
"Pada awalnya, Thompson bahkan tidak memprogram pada PDP itu sendiri, melainkan menggunakan set makro untuk assembler GEMAP pada mesin GE-635." (29) Sebuah pita kertas dihasilkan pada GE 635 dan kemudian diuji pada PDP-7 hingga, menurut Ritchie, "kernel Unix primitif, editor, assembler, shell sederhana (command interpreter), dan beberapa utilitas (seperti perintah Unix rm, cat, cp) selesai. titik, sistem operasi mandiri, program dapat ditulis dan diuji tanpa menggunakan pita kertas, dan pengembangan berlanjut pada PDP-7 itu sendiri. "
A PDP-7 terlihat seperti ini . Perhatikan kurangnya tampilan interaktif atau hard disk. "Sistem file" akan disimpan pada pita magnetik. Ada memori hingga 64kB untuk program dan data.
Dalam lingkungan itu, programmer cenderung menangani perangkat keras secara langsung, seperti dengan mengeluarkan perintah untuk memutar rekaman dan memproses karakter satu per satu yang dibaca langsung dari antarmuka pita. UNIX memberikan abstraksi atas hal ini, sehingga alih-alih "membaca dari teletype" dan "membaca dari pita" sebagai antarmuka terpisah, mereka digabungkan menjadi satu, dengan penambahan pipa penting "baca dari keluaran program lain tanpa menyimpan salinan sementara pada disk atau tape ".
Berikut adalah McIlroy pada penemuan grep
. Saya pikir ini melakukan pekerjaan yang baik untuk merangkum jumlah pekerjaan yang diperlukan dalam lingkungan pra-UNIX.
"Grep diciptakan untukku. Aku sedang membuat sebuah program untuk membaca teks dengan keras melalui synthesizer suara. Ketika aku menemukan aturan fonetik, aku akan memeriksa kamus Webster untuk kata-kata yang mungkin gagal. Misalnya, bagaimana kamu mengatasi digraf? ' ui ', yang diucapkan dengan berbagai cara:' buah ',' tipu muslihat ',' bersalah ',' kesedihan ',' intuisi ',' beguine '? Saya akan memecah kamus menjadi beberapa bagian yang sesuai dengan buffer terbatas dan penggunaan ed perintah global untuk memilih daftar. Saya akan memotong daftar ini dengan memindai berulang kali dengan ed untuk melihat bagaimana setiap aturan yang diusulkan bekerja. "
"Prosesnya membosankan, dan sangat boros, karena kamus harus dipisah (orang tidak mampu meninggalkan salinan salinan on line). Kemudian ed menyalin setiap bagian ke / tmp, memindai dua kali untuk menyelesaikan perintah g, dan akhirnya membuangnya, yang juga butuh waktu. "
"Suatu sore saya bertanya kepada Ken Thompson apakah dia bisa mengeluarkan pengenal ekspresi reguler dari editor dan membuat program satu-pass untuk melakukannya. Dia berkata ya. Pagi berikutnya saya menemukan catatan di surat saya yang mengumumkan sebuah program bernama grep. Itu berfungsi seperti pesona. Ketika ditanya apa arti nama lucu itu, Ken mengatakan itu jelas. Itu singkatan dari perintah editor yang disimulasikan, g / re / p (cetak ekspresi reguler global). "
Bandingkan bagian pertama itu dengan cat names.txt | awk '{print $2 ", " $1}' | sort | uniq | column -c 100
contoh. Jika opsi Anda adalah "membangun baris perintah" versus "menulis program khusus untuk tujuan tersebut, dengan tangan, di assembler", maka ada baiknya membangun baris perintah. Bahkan jika dibutuhkan beberapa jam membaca manual (kertas) untuk melakukannya. Anda kemudian dapat menuliskannya untuk referensi di masa mendatang.