Otomatik kod - Autocode

Otomatik kod , 1950'lerde ve 1960'larda Manchester , Cambridge ve Londra Üniversitelerinde bir dizi dijital bilgisayar için tasarlanan ve daha sonra programlama dilleri olarak adlandırılan "basitleştirilmiş kodlama sistemleri" ailesinin adıdır . Otomatik kod genel bir terimdi; Farklı makinelerin otokodları, örneğin tek dil Fortran'ın farklı versiyonları kadar yakından ilişkili değildi .

Bugün terim, genellikle benzer olan Manchester Mark 1 otomatik kodlayıcı sistemlerinden türeyen erken dil ailesini belirtmek için kullanılmaktadır . 1960'larda, otomatik kodlayıcılar terimi , bir derleyici kullanan herhangi bir yüksek seviyeli programlama diline atıfta bulunmak için daha genel bir şekilde kullanıldı . Otomatik kodlar olarak anılan dillerin örnekleri COBOL ve Fortran'dır .

Glennie'nin Otomatik Kodu

İlk otomatik kod ve derleyicisi, Alick Glennie tarafından 1952'de Manchester Üniversitesi'ndeki Mark 1 bilgisayarı için geliştirildi ve bazıları tarafından ilk derlenen programlama dili olarak kabul edildi . Ana hedefi, özellikle karmaşık makine kodlarıyla tanınan Mark 1 makinelerinin programlanmasında anlaşılırlığı artırmaktı. Ortaya çıkan dil, makine kodundan çok daha net olmasına rağmen, yine de makineye çok bağımlıydı.

Aşağıda formülü hesaplar Glennie en otomatik kodlama fonksiyonunun bir örnektir: . Örnek, tamsayıları değişkenlere yerleştirmek için gerekli olan ölçeklendirme talimatını atlar ve çarpma sonuçlarının daha düşük akümülatöre sığacağını varsayar.

c@VA t@IC x@½C y@RC z@NC
INTEGERS +5 →c           # Put 5 into c
      →t                 # Load argument from lower accumulator
                         # to variable t
   +t     TESTA Z        # Put |t| into lower accumulator
   -t
          ENTRY Z
SUBROUTINE 6 →z          # Run square root subroutine on
                         # lower accumulator value
                         # and put the result into z
  +tt →y →x              # Calculate t^3 and put it into x 
  +tx →y →x
+z+cx   CLOSE WRITE 1    # Put z + (c * x) into
                         # lower accumulator
                         # and return

Glennie's Autocode Compiler'ın kullanıcı kılavuzunda "verimlilik kaybının% 10'dan fazla olmadığı" belirtildi.

Glennie'nin Otomatik Kodunun diğer Manchester kullanıcılarının programlama alışkanlıkları üzerindeki etkisi ihmal edilebilir düzeydeydi. Brooker'in "Manchester Üniversitesi Bilgisayarları için geliştirilen Otomatik Kod Programları" adlı 1958 tarihli makalesinde bundan bahsedilmedi.

Mark 1 Otomatik Kod

Mark 1 için ikinci otomatik kod 1954'te planlandı ve RA Brooker tarafından 1955'te geliştirildi ve "Mark 1 Otomatik Kod" olarak adlandırıldı. Dil neredeyse makineden bağımsızdı ve ilkinden farklı olarak kayan nokta aritmetiğine sahipti. Öte yandan, satır başına yalnızca bir işleme izin verdi, birkaç anımsatıcı ad sundu ve kullanıcı alt yordamlarını tanımlamanın bir yolu yoktu.

Girişten 11 boyutlu kayan noktalı sayı dizisini yükleyen örnek bir kod şöyle görünecektir.

      n1 = 1         
1    vn1 = I         reads input into v[n[1]]
      n1 = n1 + 1
   j1,11 ≥ n1        jumps to 1 if n[1] ≤ 11

Brooker'in Autocode'u, Mark 1'in programcısının iki ana zorluğunu ortadan kaldırdı: iki seviyeli depolamanın ölçeklendirilmesi ve yönetimi. Selefinin aksine yoğun bir şekilde kullanıldı.

Daha sonra Autocodes

Brooker ayrıca 1950'lerde Manchester Üniversitesi ile birlikte Ferranti Mercury için bir otomatik kod geliştirdi . Mercury Autocode , az ve a'-z ' değişkenlerinin sınırlı bir repertuarına sahipti ve bazı yönlerden daha sonraki Dartmouth BASIC dilinin ilk sürümlerine benziyordu . Yığın kavramı olmadığı ve dolayısıyla özyineleme veya dinamik olarak ayrılmış diziler olmadığı için ALGOL'u önceden tarihlendirdi . Mercury'de bulunan nispeten küçük mağaza boyutunun üstesinden gelmek için, büyük programlar, her biri bir kaplama oluşturan ayrı "bölümler" olarak yazılmıştır . Bölümler arasında zaman alan kontrol transferlerini en aza indirmek için bazı beceriler gerekliydi. Kullanıcı kontrolü altındaki tamburdan gelen bu katmanlar kavramı, sanal bellek sonraki makinelerde kullanılabilir hale gelene kadar yaygınlaştı. Ferranti Atlas (daha sonraki Atlas Autocode'dan farklı olarak ) ve ICT 1300 ve 1900 serisi için Mercury Autocode'un biraz farklı lehçeleri uygulandı .

Sürüm EDSAC 2'ye tarafından icat edildi David Hartley ait Cambridge Mathematical Laboratuvarı Üniversitesi EDSAC 2 otokod olarak bilinen 1961'de, bu Merkür otokod uzanan düz gelişme yerel koşullara uyarlanmış oldu ve onun nesne kod optimizasyonu ve kaynak olmayan için kaydedildi o zaman için gelişmiş olan dil teşhisi. Halefi Titan (prototip Atlas 2 bilgisayarı) için geçici bir durma aralığı olarak bir sürüm geliştirilirken , CPL olarak bilinen daha önemli ölçüde gelişmiş bir dil geliştirilirken. CPL hiçbir zaman tamamlanmadı, ancak BCPL'ye (M. Richards tarafından geliştirilen) yol açtı, bu da B'ye ve nihayetinde C'ye yol açtı . Çağdaş ama ayrı bir geliştirme zinciri olan Atlas Autocode , Manchester Üniversitesi Atlas 1 makinesi için geliştirildi.

Referanslar

Kaynaklar

daha fazla okuma