İçindekiler
- Özet
- Önsöz
- Ağ Standart Çeviricileri (NST)
- Evrensel Donanım Temsili
- NST'ye Giriş
- NST'nin Avantajları
- Örnek: AHI NLS Kullanıcı Konsol İletişimi
- DEL Sözdizimi
- Bildirimler
- Aritmetik İşlemler
- Birincil Değerler
- Bağlaçlı İfadeler
- Aritmetik İfadeler
- Ağaç Manipülasyonu
- Akış ve Kontrol
- G/Ç İfadeleri
- Örnek Programlar
Özet
Decode-Encode Language (DEL - Kod Çözme-Kodlama Dili), iki spesifik bilgisayar ağı görevine özel olarak tasarlanmış makine-bağımsız bir dildir:
- Giriş İşleme: Etkileşimli konsollardan giriş kodlarını kabul etme, anında geri bildirim verme ve sonuç bilgilerini ağ iletimi için mesaj paketlerine paketleme.
- Çıkış İşleme: Başka bir bilgisayardan mesaj paketlerini kabul etme, bunları açma, görüntü bilgilerinin ağaçlarını oluşturma ve bilgileri kullanıcının etkileşimli istasyonuna gönderme.
Bu, DEL dilinin evrimi için bir çalışma belgesidir. Yorumlar SRI'daki Jeff Rulifson aracılığıyla yapılmalıdır.
Önsöz
DEL'in Evrimi
İlk ARPA ağı çalışma grubu 25-26 Ekim 1968'de SRI'da toplandı. Genel olarak, ağ üzerinden etkileşimli programların çalıştırılmasının karşılaşılacak ilk problem olduğu konusunda anlaşmaya varıldı.
İlk Toplantı (Ekim 1968)
Grup, DEL benzeri bir yaklaşımın temel kavramları hakkında zaten anlaşmış durumda, aşağıdakileri belirledi:
- Terminoloji
- DEL programları için beklentiler
- Önerilen anlamsal yetenek listeleri
Katılımcılar: Andrews, Baray, Carr, Crocker, Rulifson ve Stoughton
Sonraki Toplantılar
- Crocker & Rulifson (18 Kasım 1968, SRI'da): Resmi eş-rutinlerin dahil edilmesi
- Stoughton & Rulifson (12 Aralık 1968, SRI'da): Ocak 1969 sonunda UTAH'ta grup toplantısı planlandı
Kamuya Açıklama
Bu yazının ilk kamuya açıklanması 13 Şubat 1969'da Cambridge'deki BBN NET toplantısında yapıldı.
Ağ Standart Çeviricileri (NST)
Genel Bakış
NST kütüphanesi, sunucu host'tan alınan DEL programlarından kullanıcı sitelerinde derlenen kodla verimli bir şekilde bütünleşmek için gerekli programlar kümesidir.
NST-DEL yaklaşımı, NET etkileşimli sistem iletişimi için geniş bir kullanım senaryosu yelpazesinde çalışmak üzere tasarlanmıştır.
NST-DEL Kullanımının Üç Seviyesi
Seviye 1: Doğrudan İletim (Minimum İşleme)
En düşük karmaşıklık modu
NST-DEL kullanımının en düşük seviyesi, kullanıcı programlarının kullanıcı-host'ta alacağı aynı formatta bilgilerle sunucu-host'a doğrudan iletimdir.
Özellikler:
- NST varsayılan olarak hareketsizdir
- DEL programı evrensel donanım temsili girişi almaz
- Giriş, kullanıcı-host için normal şekilde alınır
- DEL programı sadece bir mesaj oluşturucu ve gönderici haline gelir
Seviye 2: Yankı Tabloları ile TTY (Orta)
Orta karmaşıklık modu
Daha orta düzeyde bir kullanım, kullanıcı-host'ta bir TTY için yankı tablolarına sahip olmaktır.
Özellikler:
- DEL programı kullanıcı için tam çift yönlü bir TTY çalıştırır
- Kullanıcıya karakterleri yankılar
- Karakterleri sunucu-host karakter setine çevirir
- Çevrilmiş karakterleri mesajlara paketler
- Uygun kesme karakterlerinde mesajları gönderir
- Sunucu-host'tan mesajlar alındığında:
- Bunları kullanıcı-host karakter setine çevirir
- TTY'de yazdırır
Seviye 3: Büyük Görüntü Odaklı Sistemler (Gelişmiş)
En yüksek karmaşıklık modu
DEL için daha iddialı bir görev, büyük, görüntü odaklı sistemlerin ağ üzerinden uzak konsollardan çalıştırılmasıdır.
Problem Tanımı:
- Büyük etkileşimli sistemler kullanıcılara önemli geri bildirim sunar
- Geri bildirim genellikle standart dışı ve karmaşıktır
- Basit yankı tablolarıyla modellenemez
- Düğme durumu her değiştiğinde kullanıcı programının TSS'de etkinleştirilmesi gerekir
Yük Problemi:
- Bu, tek bir TSS üzerine gereksiz yere büyük yük koyar
- Sistem ağ üzerinden çalışırsa, iki sistemi yükleyebilir
DEL Çözümü:
- DEL programı kullanıcı-host'ta çalışır
- Tüm anında geri bildirimleri işler (karmaşık bir yankı tablosu gibi)
- Uygun düğme basışlarında:
- Sunucu-host'a mesajlar gönderilir
- Karşılığında görüntü güncellemeleri alınır
Gelişmiş Özellik: Standart Olmayan Konsol Simülasyonu
Daha zor, genellikle ihmal edilen problemlerden biri, bir standart olmayan konsolun başka bir standart olmayan konsol üzerinde etkili simülasyonudur.
- DEL, eş-rutin yapısı aracılığıyla bir çözüm sunar
- Karmaşık etkileşimli sistemler için, DEL programlarının bir kısmı sunucu-host programcıları tarafından oluşturulur
- Program ve giriş akışı arasındaki arayüzler, kullanıcı-host programcıları tarafından kolayca eklenir
- Yetenek kaybı olmadan olağandışı donanım için esneklik sağlar
Evrensel Donanım Temsili
Amaç
Herhangi bir tesisin kullanıcı kodlarını başka bir tesise eşlemek için gereken çevirici sayısını en aza indirmek için evrensel bir donanım temsili vardır.
Bu sadece, ilk ağdaki tüm etkileşimli görüntü istasyonlarındaki tüm donanım aygıtları hakkında genel terimlerle konuşmanın bir yoludur.
Görüntü Koordinat Sistemi
Örnek: Görüntü Temsili
Bir görüntü kare olarak düşünülür:
- Orta nokta: koordinatlar (0, 0)
- Aralık: her iki eksende -1 ile 1 arası
- Hassasiyet: Bir nokta herhangi bir doğrulukla belirtilebilir
Avantajlar:
- Gerçek görüntüdeki belirli raster nokta sayısı veya yoğunluğundan bağımsız çalışır
- Makine-bağımsız temsil
- Herhangi bir çözünürlüğe ölçeklenir
Ağ Standart Çeviricisine (NST) Giriş
Senaryo: Uzaktan NLS Erişimi
Uzak bir sitedeki (örneğin Utah) bir kullanıcının AHI sistemine kayıtlı olduğunu ve NLS (Network Line System) çalıştırmak istediğini varsayalım.
Adım 1: NLS'ye Girme
İlk adım, normal şekilde NLS'ye girmektir. O anda, Utah sistemi NLS'den sembolik bir program isteyecektir.
Adım 2: Uzaktan Kodlama Programı (REP)
REP Tanımı:
- Bu program DEL'de yazılır
- NLS Uzaktan Kodlama Programı (REP) olarak adlandırılır
- Evrensel Donanım Temsilinde giriş kabul eder
- NLS tarafından kullanılabilir forma çevirir
REP Yetenekleri:
- Arabellekte karakterleri paketler
- Yerel geri bildirim sağlar
- Yerel görüntü yönetimini işler
Adım 3: Derleme ve Yürütme
Program Utah'ta ilk alındığında:
- Program derlenir
- Program standart kütüphane ile çalışmak üzere yüklenir
- Utah konsolundan gelen tüm girişler NLS NEP'e (Network Encode Program) gider
Adım 4: İşleme Hattı
NLS NEP girişi işler:
- İşleme
- Ayrıştırma
- Bloklama
- Çeviri
- Uygun karakter alındığında:
- 940'a transferleri başlatır
- Bitler 940 tarafından kabul edilebilir formda transfer edilir
- NLS'nin Utah ile diğer NET kullanıcıları arasında ayrım yapmasına gerek olmayacak şekilde standart formda olabilir
NST'nin Avantajları
Dağıtılmış Programlama Modeli
Her düğüm NST'nin kütüphane kısmını uyguladıktan sonra, her alt sistem için yalnızca bir program yazması gerekir:
- Yani her kullanıcıya gönderdiği sembolik dosya
- NET donanım temsilini siteye özgü bit formatlarına eşler
Çıkarım: Konsol tam olarak kullanılırsa bu beklenen minimum programlamadır
Donanım Optimizasyonu
NST kodlama çevirisi kullanıcı sitesinde kodlandığından:
- Donanım Kullanımı: Konsollardaki donanımdan tam olarak yararlanabilir
- Genişletilebilirlik: Host'tan yeni çeviri tabloları gerektirmeden donanım özellikleri eklenebilir veya kaldırılabilir
- Yerel Kontrol: Yerel kullanıcılar sistem değişiklikleri konusunda güncel tutulur
Otomatik Özellik Yayılımı
- Host programcıları yeni özellikler eklendikçe sembolik kodlama programını değiştirir
- Yeni program kullanıcı sitesinde derlenip kullanıldığında
- Yeni özellikler otomatik olarak dahil edilir, yeni çevirici gerektirmez
Sembolik Çeviri Avantajları
Kodlama çeviri programlarının sembolik olarak (ikili değil) aktarılmasının avantajları:
- Siteye Özgü Optimizasyon: Her site uygun gördüğü şekilde çeviri yapabilir
- Makine Kod Kalitesi: Üretilen makine kodu her siteye optimal olarak uyar
- Performans: Daha hızlı çalışma süreleri ve daha yüksek kod yoğunluğu
- Genişletilebilirlik: Kullanıcı sitesinde kodlanan ekstra sembolik programlar kolayca arayüzlenebilir
- Problem Çözme: Esneklik kaybı olmadan konsol genişletme problemini (olağandışı tuşlar/düğmeler) kolaylaştırır
Eşleşen Donanım İşleme
Eşleşen donanım olduğunda:
- Sembolik programlar bunu dikkate alır
- Gereksiz hesaplamayı önler
- DEL'in kod çeviri yapıları aracılığıyla hemen mümkündür
AHI NLS - Kullanıcı Konsol İletişimi - Bir Örnek
Blok Diyagram Genel Bakışı
Blok diyagram şunları temsil eder:
- Sağ taraf: Kullanıcının ana bilgisayarında yapılan fonksiyonlar
- Sol taraf: Host bilgisayarda yapılan fonksiyonlar
Her etiket, aynı ada sahip bir ifadeye karşılık gelir.
Diyagram ile ilişkili dört bilgi izi (t1-t4 işaretçileri aracılığıyla izlenebilir):
- İz 1: İleri yön, yalnızca ağ bilgisi
- İz 2: İleri yön, toplam bilgi akışı
- İz 3: Geri yön, yalnızca ağ bilgisi
- İz 4: Geri yön, toplam bilgi akışı
Kullanıcıdan Host'a İletim
Giriş Yolu: Konsoldan Sunucuya
Klavye Girişi
Klavye = kullanıcının konsolundaki giriş aygıtları kümesi
İstasyonlardan gelen giriş bitleri şunlardan geçer:
- İzleme seviyeleri
- Kesme işleyicileri
- Sonunda kodlama çeviricisine ulaşır
Kodlama Çevirisi
Kodlama, yarı-ham giriş bitlerini sunucu-host alt sistemine uygun forma eşler
Kodlama Özellikleri:
- İlk istendiğinde sunucu-host alt sistemi tarafından sağlanır
- Kullanıcı makinesine sembolik formda gönderilir
- Optimal performans için kullanıcı makinesinde derlenir
- Kesme karakterlerine paketleyebilir
- Birden çok karakteri tek karaktere (ve tersi) eşleyebilir
- Karakter çevirisi
- Kullanıcıya anında geri bildirim
Yerel Görüntü Yönetimi (dm)
Kodlama çeviricisinden anında geri bildirim yerel görüntü yönetimine gider:
- NET standardından yerel görüntü donanımına eşler
- Geniş yankı çıkışı yelpazesini işler:
- Basit karakter yankıları (minimum)
- Komut ve makine durumu geri bildirimi (yaygın)
- Sunucu-host'ta yapılmayan kontrol ve geri bildirim fonksiyonları
Örnek: Yüksek hızlı görüntü kullanıcıları Culler görüntüsünde eğrileri seçici olarak temizleyebilir (saklama tüpünde imkansız)
Ağ İletimi
Sunucu-host için kodlama çeviricisinden çıkış:
- Görünmez IMP'ye gider
- Uygun boyutlara bölünür
- Kodlama çeviricisi tarafından etiketlenir
- NET-host çeviricisine gider
Not: Çıkış, çevrimiçi girişten daha fazlasını içerebilir:
- Daha büyük öğeler (bilgisayar tarafından üretilen veriler)
- Sunucu-host'ta üretilen ve kullanılan ancak kullanıcı-host'ta saklanan dosyalar
- Zaten sunucu-host formatındaysa çeviriden kaçınabilir
- Veri bloğu ise çeviriye uğrayabilir
Host Alım Programı (hrp)
Sonunda host'a ulaşır, host alım programından geçmelidir:
- Standart iletim tarzı paketleri eşler ve yeniden sıralar
- Host tarafından kabul edilebilir mesajlara dönüştürür
- Host makine monitörünün bir parçası olabilir
Host'tan Kullanıcıya İletim
Çıkış Yolu: Sunucudan Konsola
Kod Çözme Çevirisi
Sunucu-host'tan çıkış başlangıçta kod çözme'den geçer:
- Kodlama eşlemesine benzer, belki daha karmaşık çeviri eşlemesi
- En azından görüntü çıkışını basitleştirilmiş mantıksal-varlık çıkış akışına biçimlendirir
- Anlamlı parçaları kullanıcı sitesinde çeşitli şekillerde işler
Kod Çözme Programı Özellikleri:
- Kodlama programı kullanıcı makinesine gönderildiğinde host makinesine gönderilir
- Başlangıçta sembolik form, host'ta verimli çalışma için derlenir
- Karakter satırlarını mantıksal olarak tanımlamalıdır (farklı satır genişliklerini işler)
- Bir tür mantıksal satır tanımlaması gereklidir:
- Örnek: Düz bir çizgi çizilecekse, 500 kısa vektör yerine bu gerçeği iletin
- Daha karmaşık yapısal görüntü bilgisi (LEAP benzeri) işler sağlamlaştıkça giderek daha fazla gönderilir
- Gerçek zamanlı görüntü manipülasyonu sorumluluğunu kullanıcıya daha yakın kaydırır
IMP Kontrol Bilgisi (imp ctrl)
Sunucu-host, IMP'lere kontrol bilgisi göndermek isteyebilir:
- Biçimlendirme host kod çözücüsü tarafından yapılır
- Kullanıcı sitesinde uygun montaj/sıralama için mesaj bölünmesi ve tanımlaması
Görünmez IMP
Bilgi, host kod çözücüsünden görünmez IMP aracılığıyla NET-kullanıcı çeviricisine akar:
- Tek işlem: mesajlar karıştırılabilir
Kullanıcı Alım Çeviricisi (urt)
URT, kullanıcı-site IMP'sinden mesajları kabul eder ve kullanıcı-site görüntüsü için düzeltir
Minimum Eylem: Mesaj parçalarının yeniden sıralanması
Görüntü Kontrolü (dctrl)
Görüntü çıkışı için daha fazlası gerekir:
- NET mantıksal görüntü bilgisi kullanıcı sitesi formatına konur
- Görüntü kontrolü bu işi yapar
- Kodlama ve kod çözme arasında koordine eder
- Kullanıcı sitesine yerel görüntü yönetimi özelliklerini sunar
Program Kontrolü (prgmctrl)
Başka bir eylem: bilgilerin belirli kullanıcı-site alt sistemlerine seçici çevirisi ve yönlendirilmesi
Örnek: Kayan noktalı bilgi blokları:
- Kullanıcı tarzı kelimelere dönüştürülür
- İşleme veya depolama için alt sisteme blok formunda gönderilir
- Yazdırma-görüntüsü odaklı format yerine hızlı çeviri için uygun kompakt ikili format kullanabilir
Görüntü Çıkışı
Bilgi sonunda kullanıcı görüntüsüne gönderilir
Kullanıcıdan Host'a Dolaylı İletim (ağ modu)
Uzak kullanıcının başka bir düğüm aracılığıyla dolaylı olarak düğüme bağlanabileceği mod
DEL Sözdizimi
NLS Kullanıcıları İçin Notlar
- Derleyicinin parçası olmayan tüm ifadeler nokta ile bitmelidir
- DEL derleyicisini derlemek için:
- İçerik analizleyicisi için desen ayarla
- Derleyicinin ilk ifadesine atla
- Derleyiciyi dosyaya çıktı al (
/A-DEL)
PROGRAMLAR
Sözdizimi
meta dosya (k=100, m=300, n=20, s=900)
dosya = mesdecl $bildirim $prosedür "FINISH";
prosedür =
procname (
(
tür "FUNCTION" /
"PROCEDURE") .id (tür .id / -boş)) /
"CO-ROUTINE") ' /
$bildirim etiketlenmiş_ifade $(etiketlenmiş_ifade ';) "endp.";
etiketlenmiş_ifade = ((sol ok).id ': / .boş) ifade;
tür = "INTEGER" / "REAL";
procname = .id;
Prosedür Türleri
Fonksiyonlar
- Derleyicilere daha iyi kod üretiminde yardımcı olmak için farklılaştırılır
- Değer döndürür
- Çalışma zamanı kontrolleri sağlar
Prosedürler
- Değer döndürmez
Eş-rutinler
- İsimleri veya argümanları yoktur
- İlk çağrı noktaları pipe bildiriminde verilir
Bildirimler
Sözdizimi
bildirim = sayıtürü / yapılandırılmıştür / etiket / lcl2uhr /
uhr2rmt / pipetürü;
sayıtürü = ("REAL" / "INTEGER") ("CONSTANT" sabitlist /
değişkenlist);
sabitlist =
.id '(sol ok)sabit
$('. .id '(sol ok)sabit);
değişkenlist =
.id ('(sol ok)sabit / .boş)
$('. .id('(sol ok)sabit / .boş));
idlist = .id $('. .id);
yapılandırılmıştür = ("tree" / "pointer" / "buffer") idlist;
etiket = "LABEL1" idlist;
pipetürü = "PIPE" çiftids $(', çiftids);
çiftids = .id .id;
procname = .id;
integerv = .id;
pipename = .id;
etiketv = .id;
Bildirim Özellikleri
- Sabit Değişkenler: Çalışma zamanında salt okunur belleğe konulabilir
- Etiket Bildirimi: Etiketlerin makine adreslerini içerebilecek hücreleri bildirir (B5500 etiket bildirimi değil)
- Pipe Bildirimi: Her çiftin ilk kimliği pipe adı, ikincisi pipe için ilk başlangıç noktasıdır
Aritmetik
İfade Grameri
ifade = "IF" bağlaç "THEN" ifade "ELSE" ifade;
toplam = terim (
'+ toplam /
'- toplam /
-boş);
terim = faktör (
'* terim /
'/ terim /
'^' terim /
.boş);
faktör = '- faktör / bitop;
bitop = tümleyen (
'/' bitop /
'/\' bitop /
'&' bitop /
.boş);
tümleyen = "--" birincil / birincil;
Operatör Notları
^modülo anlamına gelir/\özel veya (exclusive or) anlamına gelir- Tekli eksi izin verilir ve ayrıştırılır (x*-y yazılabilir)
- Bitsel operatörlerle standart bir kural yoktur
- Tüm bitsel operatörler aynı önceliğe sahiptir
- Gruplama için parantez kullanılmalıdır
- Tümleyen 1'in tümleyenidir
Önemli Varsayımlar
- Tüm aritmetik ve bit işlemleri, kodu çalıştıran makinenin modu ve tarzında gerçekleşir
- Kelime uzunluklarından, ikinin tümleyen aritmetiğinden vb. yararlanan herkes sonunda problemlerle karşılaşacaktır
Birincil
Sözdizimi
birincil =
sabit /
yerleşik /
değişken /
blok /
'(' ifade ')';
değişken = .id (
'(sol ok)' ifade /
'(' blok ')' /
.boş);
sabit = tamsayı / gerçel / dizi;
yerleşik =
mesinfo /
cortnin /
("MIN" / "MAX") ifade $('. ifade) '/';
Özellikler
- Parantezli İfadeler: İfade serileri olabilir; değer çalışma zamanında yürütülen son ifadenin değeridir
- Alt rutinler: Bir çağrı-isim-ile argümanına sahip olabilir
- İfade Karıştırma: İfadeler karıştırılabilir
- Dizeler: Dokümantasyonda "büyük problem" olarak belirtilmiştir
- Not: Rulifson ayrıca gerçel sayılardan kurtulmak istiyordu!
Bağlaçlı İfade
Sözdizimi
bağlaç = ayrım ("AND" bağlaç / .boş);
ayrım = olumsuzlama ("OR" olumsuzlama / .boş);
olumsuzlama = "NOT" ilişki / ilişki;
ilişki =
'(' bağlaç ')' /
toplam (
"=" toplam /
'' toplam /
'=' toplam /
'"' toplam /
.boş);
Değerlendirme Optimizasyonu
Bağlaç yapısı şu şekilde yapılandırılmıştır:
- Toplam olmayan bağlacın değeri olmak zorunda değildir
- Koddaki atlamalar kullanılarak değerlendirilebilir
- Referans yalnızca mantıksal karar gerektiğinde yapılır (örneğin, if/while ifadeleri)
Derleyici Optimizasyonu: Çoğu derleyici gereksiz değerlendirmeleri atlayabilmelidir:
- Yanlış sol kısımlı bağlaç
- Doğru sol kısımlı ayrım
Aritmetik İfade ve İfadeler
Sözdizimi
ifade = koşullu / koşulsuz;
koşulsuz = döngü_if / durumlar / kontrol_if / uist / ağaç_if /
blok / boş / ifade;
koşullu = "IF" bağlaç "THEN" koşulsuz (
"ELSE" koşullu /
.boş);
blok = "begin" ifade $('; ifade) "end";
İfade Kuralları
- İfadeler ifade olabilir
- Koşullu ifadelerde: else kısmı isteğe bağlıdır
- İfadelerde: else kısmı zorunludur
- Sözdizimi kuralı sıralamasının yan etkisi
Yarı-Ağaç Manipülasyonu ve Test
Sözdizimi
ağaç_if = işaretçi_ayarla / işaretçi_ekle / işaretçi_sil;
işaretçi_ayarla = "set" "pointer" işaretçiadı "to" işaretçiifade;
işaretçiifade = yön işaretçiifade / işaretçiadı;
işaretçi_ekle = "insert" işaretçiifade "as"
(("left" / "right") "brother") /
(("first" / "last") "daughter") "of" işaretçiifade;
yön =
"up" /
"down" /
"forward" /
"backward" /
"head" /
"tail";
ağaç_değiştir = "replace" işaretçiadı "with" işaretçiifade;
işaretçi_sil = "delete" işaretçiadı;
ağaç = '(' ağaç1 ')';
ağaç1 = düğümadı $düğümadı;
düğümadı = terminal / '(' ağaç1 ')';
terminal = ağaçadı / tamponadı / işaretçiadı;
ağaçadı = id;
ağaç_bildirimi = "pointer" .id / "tree" .id;
Ağaç Oluşturma
Ağaç oluşturmada ekstra parantezler, tıpkı LISP'te olduğu gibi doğrusal alt kategorileştirme ile sonuçlanır
Akış ve Kontrol
Kontrol İfadeleri
kontrol_if = git_if / altrutin_if / döngü_if / durum_if;
GO TO İfadeleri
git_if = "GO" "TO" (etiketv / .id);
etiket_ata = "ASSIGN" .id "TO" etiketv;
Alt rutinler
altrutin_if = çağrı_if / dön_if / cortnout;
çağrı_if = "CALL" procname (ifade / .boş);
dön_if = "RETURN" (ifade / .boş);
cortnout = "STUFF" ifade "IN" pipename;
cortnin = "FETCH" pipename;
Not: FETCH, değeri adlandırılmış eş-rutini çağırarak hesaplanan yerleşik bir fonksiyondur
Döngü İfadeleri
döngü_if = while_if / until_if / for_if;
while_if = "WHILE" bağlaç "DO" ifade;
until_if = "UNTIL" bağlaç "DO" ifade;
for_if = "FOR" integerv '=' ifade ("BY" ifade / .boş) "TO" ifade
"DO" ifadeler;
Döngü Özellikleri
- While ve until ifadeleri: değer sırasıyla yanlış ve doğru (veya 0 ve sıfır olmayan) olarak tanımlanır
- For ifadeleri: Başlangıç ifadesini, by kısmını ve to kısmını başlatma zamanında bir kez değerlendirir
- Çalışan indeks: Döngü içinde değişiklik için kullanılabilir değil, yalnızca okuma için
- Derleyici Optimizasyonu: Mümkünse kayda koyabilir
- Artış ve sınır: Her ikisi de başlatma sırasında tamsayılara yuvarlanır
Durum İfadeleri
durum_if = i_durum_if / koşul_durum_if;
i_durum_if = "ITHCASE" ifade "OF" "BEGIN" ifade $(';
ifade) "END";
koşul_durum_if = "CASE" ifade "OF" "BEGIN" koşul_durumlar $('; koşul_durumlar)
"OTHERWISE" ifade "END";
koşul_durumlar = bağlaç ':' ifade;
Değer: Durum ifadesinin değeri, yürütülen son durumun değeridir
Ekstra İfadeler
boş = "NULL";
G/Ç İfadeleri
Mesaj G/Ç
mesaj_if = mesaj_oluştur / mesaj_iste;
mesaj_oluştur_if = mesaj_başlat / mesaj_ekle / mesaj_gönder;
mesaj_başlat = "start" "message";
mesaj_ekle = "append" "message" "byte" ifade;
mesaj_gönder = "send" "message";
mesaj_iste = "demand" "message";
mesinfo =
"get" "message" "byte" /
"message" "length" /
"message" empty: '?;
mes_bildirimi = "message" "bytes" "are" "n" "bits" "long";
Görüntü Tamponları
görüntü_if = tampon_başlat / tampon_ekle / kur;
tampon_başlat = "start" "buffer";
tampon_ekle = "append" tamponmalzeme $('&' tamponmalzeme);
tamponmalzeme =
"parameters" görüntü_param $('. görüntü_param) /
"character" ifade /
"string" dizi /
"vector" ("from" ifade ':' ifade / .boş) "to" ifade '.' ifade /
"position" (açkapa / .boş) "beam" "to" ifade '=' ifade /
"curve";
görüntü_param =
"intensity" "to" ifade /
"character" "width" "to" ifade /
"blink" açkapa /
"italics" açkapa;
açkapa = "on" / "off";
kur = "establish" tamponadı;
Mantıksal Ekran
Ekran Temsili:
- Kare ekran
- Normalize koordinatlar: her iki eksende -1 ile +1 arası
Konum Kaydı (PREG):
- Üçlü:
<x, y, r> - x, y: ekranda nokta belirtir
- r: x ekseninden saat yönünün tersine radyan cinsinden dönüş
Yoğunluk (INTENSITY):
- 0 ile 1 aralığında gerçel sayı
- 0 = siyah
- 1 = görüntünün gidebileceği kadar açık
- Aralarındaki sayılar: yoğunluk farkının göreli logaritması
Diğer Parametreler:
- Karakter çerçeve boyutu
- Yanıp sönme biti
Tampon Oluşturma
Terminal Düğümler: Yarı-ağaçlar şunlardan biridir:
- Yarı-ağaç adları, veya
- Görüntü tamponları
Görüntü Tamponu: Mantıksal varlıklar dizisi (tamponmalzeme)
Tampon Başlatma:
- Başlatıldığında boş
- Başlangıçta parametre eklenmemişse: yarı-ağaçtaki son düğümün görüntüsünün sonundaki parametreler uygulanır
- Tampon oluşturulurken: mantıksal varlıklar eklenir
- Kurulmuş tamponadı: tampon kapalı, başka eklemeler yasak
- Yalnızca kurulmuş tamponadı ağaç oluşturma ifadesinde kullanılabilir
Mantıksal Giriş Aygıtları
- Değnek (Wand)
- Oyun Çubuğu (Joy Stick)
- Klavye
- Düğmeler
- Işık Kalemleri
- Fareler
Ses Çıkış Aygıtları
(Spesifikasyona dahil edilmiş bölüm)
Örnek Programlar
TTY Görüntü ve Klavye Programı
[Görüntü ve klavyeyi TTY olarak çalıştıracak program]
NLS'yi Çalıştırma
Giriş Kısmı
(Belirtilecek)
Görüntü Kısmı
DEMAND MESSAGE;
While LENGTH > 0 DO
ITHCASE GETBYTE OF BEGIN
ITHCASE GETBYTE OF %dosya alanı güncelleme% BEGIN
%literal alanı%
%mesaj alanı%
%ad alanı%
%hata%
%sıra özellikleri%
%filtre özellikleri%
%format özellikleri%
%komut geri bildirim satırı%
%filtre alanı%
%tarih saat%
%yankı kaydı%
BEGIN %DEL kontrolü%
Dağıtım Listesi
| İsim | Kuruluş | Konum | Telefon |
|---|---|---|---|
| Steve Carr | University of Utah, Department of Computer Science | Salt Lake City, Utah 84112 | 801-322-7211 X8224 |
| Steve Crocker | University of California, Boelter Hall | Los Angeles, California | 213-825-4864 |
| Jeff Rulifson | Stanford Research Institute | Menlo Park, California 94035 | 415-326-6200 X4116 |
| Ron Stoughton | University of California, Computer Research Laboratory | Santa Barbara, California 93106 | 805-961-3221 |
| Mehmet Baray | University of California, Corey Hall | Berkeley, California 94720 | 415-843-2621 |
Önem
RFC 5, bilgisayar ağları üzerinden etkileşimli konsol iletişimini özellikle işlemek için tasarlanmış ağ farkında bir dil için en erken önerilerden birini temsil eder. Temel yenilikler şunları içerir:
Dil Tasarımı Katkıları
- Makine Bağımsızlığı: Evrensel Donanım Temsili, donanım özelliklerini protokolden ayırır
- Kaygıların Ayrılması: Kodlama/Kod Çözme paradigması giriş ve çıkışı temiz bir şekilde ayırır
- Dağıtık İşleme: Anında geri bildirimin yerel işlenmesi desteği ağ yükünü azaltır
- Eş-rutinler: Karmaşık etkileşim kalıpları için eş-rutin yapılarının erken kullanımı
Ağ Mimarisi Çıkarımları
- Ağ Yükünü Azaltır: Yankı ve anında geri bildirimin yerel işlenmesi
- Ölçeklenebilir Konsol Desteği: Farklı sitelerde çeşitli donanımı destekler
- Verimli Bant Genişliği Kullanımı: Ham karakter akışları yerine anlamlı mesajlar gönderir
- Esnek Sistem Evrimi: Sembolik programlar site genelinde değişiklikler olmadan güncellemeye izin verir
Miras
DEL, şunlar hakkında erken düşünceyi temsil eder:
- Etki alanına özgü diller (DSL)
- Protokol soyutlama katmanları
- Uzak terminal emülasyonu
- Dağıtık etkileşimli sistemler
Network Working Group
Stanford Research Institute
Haziran 1969