Guido Von Rossum
Gönderen Guido Van Rossum röportajda tam metin görülebilir, books.google.com ile (vurgu benim):
Gruplandırma için girinti seçimi Python'da yeni bir kavram değildi; Bunu ABC'den miras aldım , ama aynı zamanda eski bir dil olan occam'da da meydana geldi. ABC yazarlarının fikri oklüzyondan mı, bağımsız olarak mı icat ettiğini, yoksa ortak bir ata olup olmadığını bilmiyorum. Tabii ki, diğer alanlarda yaptığım gibi ABC'nin öncülüğünü takip etmemeyi seçebilirdim (örn. ABC, dil anahtar sözcükleri ve prosedür adları için büyük harf kullandı, kopyalamadığım bir fikir), ancak özelliği oldukça beğendim ABC'yi kullanırken biraz, çünkü o zamanlar C kullanıcıları arasında yaygın olan belirli bir anlamsız tartışmayı ortadan kaldırmış gibi görünüyordu , kıvırcık parantezlerin nereye yerleştirileceği hakkında .
Von Rossum, ABC'den büyük ölçüde ilham aldı ve hepsini kopyalamak zorunda olmasa da, girinti kullanımı dini savaşlardan kaçınmak için yararlı olabileceğinden korundu.
Ayrıca okunabilir kodun gruplamayı belirtmek için gönüllü olarak girintiyi kullandığının farkındaydım ve girintinin kıvırcık parantez kullanarak sözdizimsel gruplama ile aynı fikirde olmadığı koddaki ince hatalarla karşılaştım - programcı ve yorumcular girintinin gruplandırmayla eşleştiğini varsaydılar. ve bu nedenle hatayı fark etmedim. Yine, uzun bir hata ayıklama oturumu değerli bir ders verdi.
Rossum ayrıca gruplama ve girinti arasındaki tutarsızlık nedeniyle hatalara tanık oldu ve görünüşe göre bu sadece kodu yapılandırmak için girinti dayanarak programlama hataları 1 daha güvenli olacaktır .
Donald E. Knuth ve Peter J. Landin
Referans verilen röportajda Guido, Don Knuth'un girinti kullanma fikrinden bahseder. Bu ayrıntılı olarak yeniden keşfedilen Knuth Girinti Alıntı tırnak, git Tablolar ile Programlama Yapısal . Knuth ayrıca Peter John Landin'in sonraki 700 programlama diline de atıfta bulunmaktadır (girinti ile ilgili Tartışma bölümüne bakın). Landin, başlangıç / bitiş blokları yerine girintili ilk dile benzeyen ISWIM'i tasarladı . Bu makaleler daha çok programların yapılandırılmasında girinti kullanılmasının uygulanabilirliği ile ilgilidir.
1. Bunun gerçekte , gerçekleşmesi gereken programlama hatalarını yakalamak ve düzeltmek için hem gruplama yapılarına hem de otomatik biçimlendirmeye sahip olmanın lehine bir argüman olduğunu düşünüyorum. Python'daki girintinizi batırırsanız, kodunuzu hata ayıklayan kişinin hangisinin doğru olduğunu tahmin etmesi gerekir:
if (test(x)):
foo(x)
bar(x)
Shall bar
daima çağrılabilir veya sadece test başarılı olur?
Gruplama yapıları, kodunuzu otomatik olarak girintili hale getirdiğinizde bir hatayı tespit etmenize yardımcı olan bir fazlalık düzeyi ekler. C'de eşdeğer kod aşağıdaki gibi otomatik girintili olabilir:
if (test(x))
foo(x);
bar(x);
Ben yönelik Eğer bar
aynı seviyede olmasını foo
otomatik girintilenmiş kod yapısına dayalı ardından, etrafı parantez ekleyerek sabitlenebilir şeylerin yanlış olduğunu görelim foo
ve bar
.
In Python: Mitler Girintileme hakkında , C bir sözde kötü bir örnek vardır:
/* Warning: bogus C code! */
if (some condition)
if (another condition)
do_something(fancy);
else
this_sucks(badluck);
Yukarıdaki durumla aynıdır, Emacs'ta tüm bloğu / işlevi vurgularım, Sekme tuşuna basarım ve daha sonra tüm kodlar yeniden girilir. İnsan girintisi ve kod yapısı arasındaki tutarsızlık bana bir şeyin kapalı olduğunu söyler (bu ve önceki yorum!).
Ayrıca, C'de girintinin kapalı olduğu ara kod sadece ana daldan geçmez, tüm stil kontrolleri GCC / Jenkins'in çığlık atmasına neden olur. Geçenlerde Python'da yukarıda anlatılanla benzer bir sorun yaşadım, bir girinti seviyesi tarafından yapılan bir açıklama ile. Bazen bir kapanış ayracı ötesine C kodu var, ama sonra Tab vurmak ve kod "yanlış" girintiler: bu hatayı görmek için bir şans daha.
let x =1; y = 2; z = 3
olduğu gibi tamamen geçerlidirdo { putStrLn $ show x; putStrLn $ show y; putStrLn $ show z; }
. Bunların aynı hatta olmaları gerekmez.