Aksiyon! (Programlama dili) -Action! (programming language)

Aksiyon!
Actionscr.png
Tam ekran düzenleyici
Orijinal yazar(lar) Clinton Parker
Geliştirici(ler) Optimize Sistem Yazılımı
İlk sürüm Ağustos 1983 ; 37 yıl önce ( 1983-08 )
Son sürüm
v3.6 / 4 Kasım 1983 ; 37 yıl önce ( 1983-11-04 )
platformu Atari 8 bit ailesi
Boyut 16K sıra anahtarlamalı kartuş

Aksiyon! Clinton Parker tarafından Atari 8-bit ailesi için yazılmış prosedürel bir programlama dili ve entegre geliştirme ortamıdır . ALGOL'a benzeyen dil, Atari bilgisayarlarının MOS Technologies 6502'si için yüksek performanslı kod olarak derlenmiştir . Aksiyon! 1983'ten başlayarak Optimized Systems Software tarafından ROM kartuşu üzerinde dağıtıldı. Toplam 16 kB kod ile şirketin ilk banka anahtarlı "Süper Kartuşlarından" biriydi.

Henry Baker ile birlikte çalışan Parker, daha önce Xerox Alto için bir sistem programlama dili olan Micro-SPL'yi geliştirmişti . Aksiyon! 6502 işlemciyi destekleyen değişiklikler ve entegre bir tam ekran düzenleyici ve hata ayıklayıcının eklenmesiyle büyük ölçüde Atari için bir Micro-SPL kavramları limanıydı.

Aksiyon! en az iki ticari ürünü ( HomePak üretkenlik paketi ve Games Computers Play istemci programı) ve ANALOG Computing ve Antic dergilerinde çok sayıda program geliştirmek için kullanıldı . Editör, PaperClip kelime işlemcisine ilham verdi . Dil diğer platformlara taşınmadı.

Action! için montaj dili kaynak kodu! 2015 yılında yazar tarafından GNU Genel Kamu Lisansı altında kullanıma sunulmuştur .

Tarih

Mikro-SPL

Parker, lisansüstü eğitimini alırken Xerox PARC'ta yazıcı sürücüleri üzerinde yarı zamanlı olarak çalışmaya başladı . Daha sonra sistem için birkaç oyun yazdığı Xerox Alto projesine geçti. Doktora derecesi doğal dil ayrıştırma üzerineydi ve lisansüstü çalışması sırasında derleyici teorisi üzerinde çalışmıştı.

Henry Baker ve Parker Mikro SPL bir olarak kullanılmak üzere tasarlanmıştı Eylül 1979 yılında Mikro SPL yayımlanan dili programlama sistemleri üzerinde Xerox Alto iş istasyonu bilgisayarın normalde programlandı, BCPL . Alto , BCPL derleyicisinin çıkardığı bir mikrokod sistemi kullandı . Micro-SPL, BCPL programlarının Micro-SPL programlarını çağırmasına izin vererek aynı formatı verir.

Sözdizimindeki farklılıkların yanı sıra, Micro-SPL ve BCPL arasındaki temel fark ve varlığının nedeni, Micro-SPL'nin yerel BCPL derleyicisinden çok daha hızlı kod üretmesiydi. Genel olarak, Micro-SPL programlarının BCPL'den yaklaşık on kat daha hızlı ve elle yazılmış mikro kodun yaklaşık yarısı kadar hızlı çalışması bekleniyordu. Mikrokoda kıyasla, yazmanın yarısı kadar uzun süreceğini ve hata ayıklamanın zamanın %10'unu alacağını iddia ettiler.

Aksiyon!

Bu dönemde Parker, evde kullanmak üzere bir Atari satın aldı ve bu platform için geliştirme sistemlerinin eksikliğinden dolayı hayal kırıklığına uğradı. Bu, Action'ın gelişimi için itici güçtü!

Parker başlangıçta sistemi kendisinin piyasaya sürmeyi düşündü, ancak daha sonra satış ve dağıtım için Optimize Edilmiş Sistemler Yazılımı (OSS) ile ortak olmaya karar verdi . OSS , BASIC XL gibi yardımcı programlara ve programlama dillerine odaklandı , bu nedenle bu, Action için doğal bir uyumdu! Satışlar, Parker'ın birkaç yıl boyunca telif ücretlerinden geçimini sağlaması için yeterince güçlüydü.

IBM PC vardı C kullanılabilir derleyicileri ve Parker Eylem taşıma anlamı yok olduğuna karar verdi! o platforma. Atari 8-bit platformlarının satışları düştükçe, en azından Kuzey Amerika'da OSS de düştü. Tarihinde geç Eylem! dağıtım OSS'den Electronic Arts'a taşındı , ancak dil konusunda çok az şey yaptılar ve satışlar kısa bir süre sonra sona erdi.

2015 yılındaki bir röportajda Parker, dilin almaya devam ettiği destek düzeyindeki şaşkınlığını dile getirerek, 1980'lerin sonunda olduğundan daha fazla ilgi olduğunu öne sürdü.

Geliştirme ortamı

Aksiyon! OSS SuperCartridge formatının önceki örneklerinden biriydi. Atari'deki ROM kartuşları normalde 8 kB ile sınırlıydı ve bu da daha büyük programları destekleme yeteneğini sınırladı. SuperCartridge, ikisi herhangi bir zamanda görülebilen dört 4 kB blok olarak düzenlenmiş 16 kB'ye sahipti. Alt 4 kB değişmedi ve sistem, $AFFF adresindeki değeri değiştirerek diğer üç blok arasında banka geçişi yapabilir.

Aksiyon! bu tasarımı sistemi dört bölüme ayırarak kullandı: editör, derleyici, kodu test etmek ve editör ile derleyici arasında geçiş yapmak için bir monitör ve çalışma zamanı kitaplığı. Çalışma zamanı kitaplığı kartuşun kendisinde saklanır. Bağımsız uygulamaları dağıtmak için OSS tarafından Action! olarak satılan ayrı bir çalışma zamanı paketi gerekir ! Araç takımı .

Aksiyon! yapılar , tek geçişli derleyicide karmaşık optimizasyonlara ihtiyaç duymadan yüksek performans sağlamak için 6502 işlem koduyla temiz bir şekilde eşlenecek şekilde tasarlanmıştır . Örneğin, yerel değişkenlere, etkinleştirme kayıtları yığınında tahsis edilmek yerine bellekte sabit adresler atanır . Bu, özellikle 6502'nin 256 baytlık yığını durumunda zor olan yığın yönetimiyle ilişkili önemli ek yükü ortadan kaldırır. Ancak, bu özyineleme kullanımını engeller .

Entegre Atari BASIC ve Atari Assembler Editor ortamlarının aksine, Action! editör satır numaralarını kullanmaz. İki pencereyi görüntüleyebilen tam ekran, kayan bir ekranın yanı sıra blok işlemleri ve küresel arama ve değiştirme özelliğine sahiptir.

Monitör, bir hata ayıklayıcı görevi görerek tüm programın veya bireysel işlevlerin çalıştırılmasına, belleğin görüntülenmesine ve değiştirilmesine ve program yürütmesinin izlenmesine olanak tanır.

Veri tipleri

Aksiyon! tümü sayısal olan üç temel veri türüne sahiptir .

BAYT

Dahili olarak işaretsiz 8 bitlik bir tam sayı olarak temsil edilir . Değerler 0 ile 255 arasındadır
. CHAR anahtar sözcüğü, BYTE değişkenlerini bildirmek için de kullanılabilir.

 BYTE age=[21]      ; declare age and initialize it to the value 21
 BYTE leftMargin=82 ; declare leftMargin at address 82

Kardinal

Dahili olarak işaretsiz 16 bitlik bir tam sayı olarak temsil edilir . Değerler 0 ile 65.535 arasındadır.

 CARD population=$600             ; declare population and store it at address 1536 and 1537
 CARD prevYear, curYear, nextYear ; use commas to declare multiple variables

INSayı

Dahili olarak işaretli 16 bitlik bir tam sayı olarak temsil edilir . Değerler -32.768 ile 32.767 arasında değişmektedir.

 INT veryCold = [-10]
 INT profitsQ1, profitsQ2,  ; declaring multiple variables can 
     profitsQ3, profitsQ4   ; span across multiple lines

Aksiyon! ayrıca ARRAY'ler, POINTER'ler ve kullanıcı tanımlı TÜR'lere sahiptir. Hiçbir kayan nokta desteği sağlanmaktadır.

Kullanıcı tanımlı bir TYPE örneği:

 TYPE CORD=[CARD x,y]
 CORD point
 point.x=42
 point.y=23

Ayrılmış kelimeler

Bir özel amaçlı sözcük Eylem herhangi bir tanımlayıcı veya simgedir! derleyici özel bir şey olarak tanır. Operatör, veri türü adı, deyim veya derleyici yönergesi olabilir.

 AND       FI         OR         UNTIL    =     (
 ARRAY     FOR        POINTER    WHILE    <>    )
 BYTE      FUNC       PROC       XOR      #     .
 CARD      IF         RETURN     +        >     [
 CHAR      INCLUDE    RSH        -        >=    ]
 DEFINE    INT        SET        *        <     "
 DO        LSH        STEP       /        <=    '
 ELSE      MOD        THEN       &        $     ;
 ELSEIF    MODULE     TO         %        ^
 EXIT      OD         TYPE       !        @

Örnek kod

Aşağıdaki, Eylemde yazılmış Eratosthenes Kalburu için örnek koddur !. Performansı artırmak için, ANTIC grafik yardımcı işlemcisini devre dışı bırakarak DMA motorunun hesaplama sırasında CPU döngülerini "çalmasını" önler .

BYTE RTCLOK=20, ; addr of sys timer
     SDMCTL=559 ; DMA control

BYTE ARRAY FLAGS(8190)

CARD COUNT,I,K,PRIME,TIME

PROC SIEVE()

  SDMCTL=0 ; shut off Antic
  RTCLOK=0 ; reset the clock to zero

  COUNT=0         ; init count
  FOR I=0 TO 8190 ; and flags
    DO
    FLAGS(I)='T ; "'T" is a compiler-provided constant for True
    OD

  FOR I=0 TO 8190 ; now run the sieve
    DO
    IF FLAGS(I)='T THEN
      PRIME=I+I+3
      K=I+PRIME
      WHILE K<=8190
        DO
        FLAGS(K)='F ; "'F" is a compiler-provided constant for False
        K==+PRIME
        OD
      COUNT==+1
    FI
    OD
  TIME=RTCLOK ; get timer reading
  SDMCTL=34   ; restore screen

  PRINTF("%E %U PRIMES IN",COUNT)
  PRINTF("%E %U JIFFIES",TIME)
RETURN

Resepsiyon

Brian Moriarty , ANALOG Computing için Şubat 1984 tarihli bir incelemede , Action! "Atari için şimdiye kadar yayınlanmış en değerli geliştirme araçlarından biri" idi. El kitabını paketin tek zayıf noktası olarak gösterdi ve "güven eksikliği, belirsiz organizasyon ve iyi, sağlam teknik veri eksikliğinden muzdarip olduğunu" iddia etti.

Leo Laporte , Hi-Res'in Mayıs/Haziran 1984 baskısında Action'ı inceledi . İncelemeye, "Bu, Nolan Bushnell'in insanların TV ekranında pinpon oynayacağını düşünmesinden bu yana Atari'nin başına gelen en iyi şey" diye başladı . Laporte, editörü övdü, bölünmüş ekran ve kes ve yapıştır özelliklerine dikkat çekti ve onu "çok hızlı yanıt veren eksiksiz bir kelime işlem sistemi" olarak nitelendirdi. Eylem dedi! Atari BASIC'ten yaklaşık 200 kat daha hızlı koştu ve "Bu dil ince ayarlanmış bir yarış arabası gibi" sonucuna vardı.

1985'te BYTE , Action'da yazılan yazılımın derleme ve yürütme hızına övgüde bulundu! Bir test olarak Byte Elek karşılaştırmasınıkullanarak, on elek yinelemesi Eylemde 18 saniyede tamamlanırken, montaj için 10 saniye ve BASIC'te 38 dakika ile karşılaştırıldığında. Dergi ayrıca dilin editörünü de övdü. BYTE , dilin "ikisi arasında programları rutin olarak dönüştürmek" için C'ye yeterince benzediğini ve işaretçi desteğini onayladığını bildirdi. Dergi, "Action!'ın kullanımı kolay, hızlı ve verimli. Atari'nin tüm gücünü kullanabilir. Action!, Atari için programlamayı yepyeni bir boyuta taşıyor."

Ian Chadwick, Mapping the Atari'de "Action!, muhtemelen Atari için şimdiye kadarki en iyi dildir; C ve Pascal'a biraz benziyor, biraz İleri'ye benziyor. Bunu tavsiye ederim."

Ayrıca bakınız

  • PaperClip , Atari'den farklı bir yazar ve şirkete ait 8 bitlik kelime işlemci, Eylem! editör

Referanslar

alıntılar

bibliyografya

Dış bağlantılar