Kod girintisinin kökenleri


31

Kod girintisini kimin girdiğini, ne zaman ve nerede girdiğini öğrenmekle ilgileniyorum.

Anlaşmayı kodlamak çok kritik görünüyor, ancak evrensel değildi. Fortran ve Basic kodlarının çoğu (??) Değiştirilmemiş ve aynı Cobol için de geçerli.

Eski Lisp kodunu sürekli, satır sarılı metin olarak yazıldığından bile eminim. Sadece onu ayrıştırmak için kafanızdaki parantezleri saymanız gerekiyordu, boşverin.

Peki, böylesine büyük bir gelişme nereden geldi? Kökeninden hiç bahsetmedim.

Kullanımının orijinal örneklerinden ayrı olarak, ayrıca girintiliğin özgün tartışmalarını da arıyorum.


Tek bir çıkış noktası olduğundan emin değilim. Ayrıca, bazı erken kodlar için, boşlukların kendileri tarafından kaplanan alan bir sorun olabilirdi.
Jack Aidley

1
Aslında FORTRAN edildi girintili. Çeşit içinde. Sütunlar halinde yazılmıştır, Cbir yorum yapacaksanız , ilk önce karakter için ayrılmıştır .
Jonathan Landrum

Girintinin kodun anlamsal anlamını değiştirmek için kullanıldığı durumlarda (yani, değişen girintinin onu döngülere ya da ifa la F # ' nın bir parçası olarak koyacağı yer ) engelleme, girintinin gerçekten bir dil özelliği olmadığı, bir IDE özelliği ( ve öndeki boşlukları yoksaymak için derleyicideki biraz). @ Jack'in hakkı - başlangıçta programlar kartlara basıldı ve girintiler tam anlamıyla depoda yoktu (ve belki de şimdi de olmamalıydı). Sütun RPG'si girinti kullanmaz (ve her satırda sadece ~ 20 karakteriniz vardır), ancak IDE kodu sizin için "yumuşak" hale getirebilir.
Clockwork-Muse

6
Bunu bir gecede düşününce, benim için anlamlı bir girinti girintisinin muhtemelen programlamadan önce geldiği anlaşılıyor . Girinti muhtemelen bilgisayar programlarını yazmadan önce talimat listelerinde kullanılıyordu. Bir örnek avlamaya çalışıyorum.
Jack Aidley

@ Clockwork-Muse Indentation, yaklaşık 20 yıl öncesine kadar COBOL'de bir dil özelliği idi ("A alanı", "B alanı" vb. ).
Ross Patterson

Yanıtlar:


21

Girintili kodun kökenleri muhtemelen ALGOL'de bulunabilir :

ALGOL, kod bloklarını ve bunları ayırmak için beginve endçiftlerini tanıttı ve aynı zamanda sözcüksel kapsam ile iç içe işlev tanımları uygulayan ilk dildi.


Kulağa mantıklı geliyor, ancak Lisp’in fikrinin önce gelip gelmediğini merak ediyorum. Her iki durumda da, girintiliğin tanıtılmasıyla ilgili özelliklerin peşindeyim.
Daniel Mahler

4
@DanielMahler - LISP 1 programlama kılavuzuna göz atın ve kendiniz görün. Örnek kodlardan bazıları girintilidir, ancak en iyi ihtimalle tehlikelidir. Örnek kodun çoğu sola yaslanmış.
David Hammen

@DavidHammen Bu, en kötü daktilolardan biri olmalı ... Her şeyi el yazdıklarını düşünürdünüz.
Panzercrisis,

6
Alıntılanan metnin aslında girintiliğin kullanımını / varlığını desteklediğini sanmıyorum . Bu bölüm kodu için destek. Java, {}blokları sınırlamak için parantezleri ( ) kullanır ve iç içe geçmiş işlevleri tanımlayabilirsiniz, ancak bu kodun girintili olup olmadığı hakkında hiçbir şey söylemez.
Clockwork-Muse

12

Girintili kodun 1958'den önce gelmiş olması gerekir; çünkü LISP ve ALGOL'de - her yerde bulunmaz -. Bulabildiğim en erken yer , 1957'de tanıtılan COMTRAN'dır , ancak yalnızca 1960 kılavuzunu bulabilirsiniz (bkz. Sayfa 90ish). COMTRAN ALGOL'den bu yana çoğu dilin blok yapısından yoksun olduğundan, bu girinti modern anlayıştan farklıdır, ancak hala sayılması gerektiğini düşünüyorum.

Bunun aslında ilk örnek olmadığından şüpheleniyorum ama daha önce bulamıyorum.

Güncellenmiş

Bana anlamlı bir girinti girintisinin muhtemelen programlamadan önce geldiğini ortaya çıkardı. Girinti muhtemelen bilgisayar programlarını yazmadan önce talimat listelerinde kullanılıyordu. Maalesef bunun iyi bir örneğini bulamıyorum.


-1

Ross Patterson'un yorumuna yapılan bir genişleme - COBOL derleyicileri (veya en azından açık sistem öncesi kariyerimde kullandığım IBM'in derleyicileri) girintiyi (“A” ve “B” alanlarını) zorladı. Bu alanlarda olması gereken unsurlardan herhangi biri tam olarak yerleştirilmezse, kodunuz derleme işleminde başarısız olur. Bununla birlikte, bunun dışında belirli bir girintiye gerek duyulmaz - bu genellikle girintiliğin tarzından farklı olan başka bir geliştiricinin kodunu değiştirirken tutuşa neden olur - görgü kuralları, akranlar arasında mevcut barışı koruduğu şekliyle mevcut kalıbı izlemenizi önerir; Ek olarak, aynı kaynaktan farklı stiller neredeyse Tetris benzeri görünmek üzere görüntülemek için ağırlaştırıcı olacaktır.

COBOL ve onun girintisini düşündüğümden bu yana yıllar geçti - soruyu sorduğunuz ve geçmişe küçük bir yolculuk yaptığınız için teşekkürler!

Marty

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.