Bu yüzden, sanatın borudan önceki durumunun ne olduğunu bulmak için PDP-10 / TOPS-10 kılavuzlarını arayarak biraz araştırma yapmaya çalıştım. Bulduğum bu ama TOPS-10 google derece zordur. : Borunun buluş üzerinde birkaç iyi başvuruları vardır McIlroy ile bir görüşme , tarihi ve UNIX etkisi hakkında .
Bunu tarihsel bağlama koymak zorundasın. Aldığımız modern araç ve olanaklardan çok azı vardı.
“Başlangıçta, Thompson PDP'nin üzerinde program bile yapmadı, ancak bunun yerine bir GE-635 makinesindeki GEMAP montajcısı için bir makro seti kullandı.” (29) GE 635'te bir kağıt bant üretildi ve sonra test edildi. PDP-7, Ritchie'ye göre, "ilkel bir Unix çekirdeği, bir editör, bir montajcı, basit bir kabuk (komut yorumlayıcısı) ve birkaç yardımcı program (Unix rm, cat, cp komutları gibi) tamamlanana kadar. bu noktada işletim sistemi kendi kendini destekliyordu, programlar kağıt kasete başvurmadan yazılabilir ve test edilebilirdi ve PDP-7'nin geliştirilmesine devam edildi. ”
Bir PDP-7 buna benziyor . Etkileşimli bir ekranın veya sabit diskin olmadığına dikkat edin. "Dosya sistemi" manyetik bantta depolanır. Programlar ve veriler için 64kB'a kadar hafıza vardı.
Bu ortamda, programcılar, doğrudan bant arayüzünden okunan bir seferde bir defada bandı ve işlem karakterlerini işlemek için komutlar yayınlamak gibi doğrudan donanıma yöneldiler. UNIX, bunun üzerine soyutlamalar sağladı; böylece "teletipten okunan" ve "banttan okunan" ayrı arayüzler olmaktan ziyade, bunlar, bir diske birleştirildi, "önemli bir boru eklemesiyle", geçici bir kopyasını diskte saklamadan başka bir programın çıktısından okundu veya kaset ".
İşte McIlroy'un icadı grep
. Bunun UNIX öncesi ortamda gerekli olan iş miktarını toplamak için iyi bir iş çıkardığını düşünüyorum.
"Grep benim için icat edildi. Metinleri sesli bir sentezleyiciden sesli bir şekilde okumak için bir program yapıyordum. Fonetik kuralları icat ettiğimden Webster'ın sözlüğünü başarısız olabilecek sözcükler için kontrol ederdim. Örneğin, digraph ile nasıl başa çıkacaksınız ' ui ', birçok farklı yolla telaffuz edilir:' meyve ',' guile ',' suçlu ',' kederli ',' sezgi ',' beguine? 'sözlüğünü ed'in sınırlı tamponuna uyan ve kullanan parçalara bölerdim bir liste seçmek için genel bir komut. Önerilen her kuralın nasıl çalıştığını görmek için bu listeleri tekrar ediniz.
"Sözlüğü bölmek zorunda kaldığı için süreç sıkıcı ve korkunç bir şekilde savundu (biri satırda bölünmüş bir kopya bırakmayı göze alamazdı.) ve sonunda onu attı, bu da zaman alıyor. ”
"Bir öğleden sonra Ken Thompson'a normal ifade tanıyıcıyı düzenleyiciden kaldırabilir ve bunu yapmak için tek seferlik bir program yapıp yapamayacağını sordum. Evet dedi. Ertesi sabah postalarımda grep adlı bir programın duyurusunu yapan bir not buldum. Bir cazibeye benziyordu. Komik ismin ne anlama geldiğini sorduğunda Ken açık olduğunu söyledi. Editör komutunu simüle ettiği g / re / p (global düzenli ifade baskısı). "
Bunun ilk kısmını cat names.txt | awk '{print $2 ", " $1}' | sort | uniq | column -c 100
örnekle karşılaştırın. Eğer seçenekleriniz "bir komut satırı oluştur" a karşı "özel olarak bir program yazmayı el ile, montajcı olarak" yazıyorsa, komut satırını oluşturmaya değer. (Kağıt) kılavuzlarını okumak birkaç saat sürse bile. Daha sonra ileride başvurmak üzere yazabilirsiniz.