En Büyük Unix Programları

Makalenin yazarı Douglas McIlroy, Amerikalı bir matematikçi, mühendis ve programcıdır. Unix işletim sistemindeki işlem hattını, bileşen yönelimli programlamanın ilkelerini ve birkaç orijinal yardımcı programı geliştirmesiyle tanınır: heceleme, diff, sıralama, birleştirme, konuşma, tr.

Bazen gerçekten harika programlarla karşılaşıyorsunuz. Hafızamı karıştırdıktan sonra, yıllar boyunca gerçek Unix mücevherlerinin bir listesini derledim. Temel olarak, bunlar oldukça nadirdir ve çok gerekli olmayan programlardır. Ama onları öne çıkaran özgünlükleri. Bunlardan herhangi birinin fikrini kendim bulduğumu hayal bile edemiyorum.

Siz de hangi programlardan bu kadar etkilendiniz paylaşın?

PDP-7 Unix'i

Yeni başlayanlar için, PDP-7 Unix sisteminin kendisi. Basitliği ve gücü, güçlü bir ana bilgisayardan küçük bir makineye geçmemi sağladı. Ana bilgisayardaki Multics'in yüzlerce adam yıllık geliştirmeden sonra elde edemediği mükemmel hiyerarşik dosya sistemi, ayrı kabuk ve kullanıcı düzeyinde işlem kontrolü. Unix'in eksiklikleri (dosya sisteminin kayıt yapısı gibi), yenilikleri (kabuk G/Ç yeniden yönlendirmesi gibi) kadar öğretici ve özgürleştiriciydi.

dc

Robert Morris'in Değişken Hassasiyetli Masaüstü Hesap Makinesi Matematik Kitaplığı, kullanıcı tarafından belirlenen bir sonuç kesinliği elde etmek için her adımda gereken kesinliği belirlemek için ters hata analizini kullandı. 1968 NATO Yazılım Mühendisliği Konferansı'nda, yazılım bileşenleri hakkındaki raporumda, istenen doğruluğu sağlayabilecek referans prosedürler önerdim, ancak bunları nasıl uygulamaya koyacağımı bilmiyordum. dc hala bunu yapabildiğini bildiğim tek program.

typo

Yazım hatası, metindeki sözcükleri metnin geri kalanıyla benzerliklerine göre düzenler. 'hte' gibi yanlış yazımlar listenin sonunda olma eğilimindedir. Robert Morris, programın herhangi bir dil için eşit derecede iyi çalışacağını gururla söyledi. Yazım hatası, fonetik hataları bulmanıza yardımcı olmasa da, tüm dizgicileri için gerçek bir nimetti ve çok daha az ilginç ama daha doğru olan sözlük yazım denetleyicisi ortaya çıkmadan önce çok işe yaradı.

Yazım hatası, dışarıda olduğu kadar içeride de beklenmediktir. Benzerlik ölçüm algoritması, 26×26×26 dizisinde sayılan trigramların oluşma sıklığını temel alır. Küçük bellekte bir baytlık sayaçlar için zar zor yeterli alan vardı, bu nedenle büyük sayıları küçük sayaçlara sıkıştırmak için bir şema uygulandı. Taşmayı önlemek için sayaçlar, sayaç değerinin logaritmasının bir tahminini koruyarak olasılık esasına göre güncellendi.

ek

Fotodizginin ortaya çıkmasıyla, klasik matematiksel notasyonu basmak mümkün, ancak çok sıkıcı hale geldi. Lorinda Cherry, daha üst düzey bir tanımlama dili geliştirmeye karar verdi ve kısa süre sonra Brian Kernigan ona katıldı. Parlak hamleleri, sözlü geleneği yazıya dökmekti, bu yüzden eqn'yi öğrenmesi son derece kolaydı. Türünün ilk matematiksel ifade dili önişlemcisi olan eqn, o zamandan beri pek geliştirilmedi.

yapı

Brenda Baker, patronu olan benim tavsiyeme rağmen Fortan-Ratfor dönüştürücüsünü geliştirmeye başladı. Bunun orijinal metnin özel bir şekilde yeniden düzenlenmesine yol açabileceğini düşündüm. İfade numaralarından arınmış olacak, ancak bunun dışında iyi yapılandırılmış Fortran kodundan daha okunaklı olmayacaktır. Brenda yanıldığımı kanıtladı. Her Fortran programının kanonik olarak yapılandırılmış bir formu olduğunu keşfetti. Programcılar, orijinal olarak yazdıklarından ziyade kanonik biçimi tercih ettiler.

pascal

Sue Graham'ın Berkeley'deki grubu tarafından oluşturulan derleyicideki sözdizimi tanılama, şimdiye kadar gördüğüm en yararlı olanıydı ve otomatik olarak yapıldı. Bir sözdizimi hatasında, derleyici ayrıştırmaya devam etmek için bir belirteç eklemenizi ister. Neyin yanlış olduğunu açıklamaya çalışmak yok. Bu derleyici ile Pascal'ı elimde herhangi bir kılavuz olmadan bir akşamda öğrendim.

parçalar

WWB (Yazar Tezgahı) modülünün içinde gizli parts Lorinda Cherry, İngilizce bir metindeki kelimelerin konuşma bölümlerini yalnızca küçük bir sözlük, imla ve gramer kurallarına göre belirler. WWB programı, bu açıklamaya dayanarak, sıfatların, yan tümcelerin ve karmaşık cümlelerin yaygınlığı gibi metnin stilometrik göstergelerini görüntüler. Lorinda, NBC'nin Today programında röportaj yaptığında ve WWB metinlerindeki yenilikçi dilbilgisi kontrolünden bahsettiğinde, televizyonda Unix'ten ilk kez söz ediliyordu.

yumurta

Al Aho, deterministik normal ifade çözümleyicisinin Ken'in klasik deterministik olmayan çözümleyicisini geçmesini bekliyordu. Ne yazık ki, ikincisi zaten karmaşık düzenli ifadelerden geçişi tamamlıyordu, oysa egrep kendi deterministik otomasyonunu inşa etti. Yine de bu yarışı kazanmak için Al Aho, tablodaki yalnızca tanıma sırasında gerçekten ziyaret edilen girişleri anında oluşturmanın bir yolunu icat ederek otomatın durum tablosunun üstel büyümesinin lanetini aştı.

Yengeçler

Luca Cardelli'nin Blit pencereleme sistemi için büyüleyici meta-programı, boş ekran alanında dolaşan, aktif pencerelerin kenarlarını giderek daha fazla ısıran sanal yengeçler ortaya çıkardı.

Bazı genel düşünceler

Dışarıdan görünmese de, teori ve algoritmalar bu programların çoğunun oluşturulmasında belirleyici bir rol oynadı: typo, dc, struct, pascal, egrep. Aslında, en şaşırtıcı olan, teorinin alışılmadık uygulamasıdır.

Listenin neredeyse yarısı - pascal, struct, parts, eqn - orijinal olarak kadınlar tarafından yazılmıştı ve bilgisayar bilimindeki kadınların demografisinden çok daha fazlaydı.

Douglas McIlroy
Mart, 2020


Kaynak: habr.com

Yorum ekle