Aksiyon! (Programlama dili) -Action! (programming language)
Orijinal yazar(lar) | Clinton Parker |
---|---|
Geliştirici(ler) | Optimize Sistem Yazılımı |
İlk sürüm | Ağustos 1983 |
Son sürüm | v3.6 / 4 Kasım 1983
|
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
Referanslar
alıntılar
bibliyografya
- Baker, Henry; Parker, Clinton (Eylül 1979). Micro-SPL (PDF) (Teknik rapor). Sinaps Bilgisayar Hizmetleri. CiteSeerX 10.1.1.126.6877 .
- Parker, Clinton (31 Aralık 2015). "ANTIC Röportaj 111, Clinton Parker, Eylem!" (dijital ses dosyası). Randy Kindig tarafından röportaj.
- Moriarty, Brian (Şubat 1984). "Eylem! - Atariler için yeni bir dil!" . ANALOG Hesaplama . 16. sayfa 54-61.
Dış bağlantılar
- Aksiyon! (programlama dili) üzerine SourceForge.net
- Aksiyon! Programlama Dili Sürüm 3.6 - Kaynak Kodu , Optimize Edilmiş Sistemler Yazılımı tarafından arşiv.org'da
- Aksiyon! Retrobits.com'da bilgi
- Eylem! Arşiv
- Aksiyon! Dil referansı
- Effectus çapraz derleyici