DG / L - DG/L

DG / L
Paradigmalar Çok paradigma : prosedürel , zorunlu , yapılandırılmış
Aile Algol
Geliştirici Veri Genel
İlk ortaya çıktı 1978 ; 42 yıl önce ( 1978 )
Platform Nova , Eclipse , Eclipse / MV
işletim sistemi RDOS, AOS , AOS / VS
Tarafından etkilenmiş
ALGOL 60

DG / L , Data General Corp tarafından 1970'lerde ve 1980'lerin başında mini bilgisayarların Nova , Eclipse ve Eclipse / MV aileleri için geliştirilmiş bir programlama dilidir .

İki ayrı versiyon vardı:

  • Nova serisi 16 bit bilgisayarlarda çalışan ve kod üreten "Eski" Algol. Derleyici sadece biraz optimizasyon yaptı. Yalnızca RDOS işletim sistemleri ailesinde mevcuttu .
  • Fortran 5 optimize derleyicisini kapsamlı bir şekilde değiştirerek geliştirilen DG / L. Bu derleyici yalnızca Eclipse ve Eclipse / MV bilgisayar ailesinde çalışıyordu, ancak Nova, Eclipse ve Eclipse / MV (Eagle) ailesi için optimize edilmiş kod üretti. RDOS, AOS ve AOS / VS'de mevcuttu .

Dilin kendisi Algol 60'ın genişletilmiş bir versiyonuydu . Tamsayılar, Tek ve Çift hassas kayan nokta ve karmaşık sayılar ile hem sabit hem de keyfi hassas dizeleri destekledi. Ayrıca , dizelerde tam keyfi kesinlikli ikili kodlu ondalık (BCD) aritmetiğini destekledi. Birçok uygun program kontrol akış özelliğine sahipti , ancak 70'lerin ortasında tasarlandığı için kullanıcı tanımlı veri yapılarından yoksundu .

DG / L, o gün için önemli bir çalışma zamanı kitaplığına sahipti ve Data General'in hem içinde hem de dışında sistem programlaması için kullanılıyordu .

Orijinal adı Algol / 5 olan ürün, 1978'deki ilk ticari sürümden kısa bir süre önce DG / L olarak yeniden adlandırıldı. Resmi olarak, adın anlamı yok ama görünüşe göre "Veri Genel Dili" anlamına gelmesi gerekiyordu. 16-bit Eclipse ve Nova'yı hedefleyen ilk ticari sürümden sonra, yaklaşık olarak yılda bir olmak üzere birkaç güncelleme ve ana sürüm yayınlandı.

Algol 60 ile Karşılaştırma

Data General'in DG / L Language Reference Manual, 093-00229-01'in 1982 revizyonunun Ek A, DG / L'yi ALGOL 60 programlama diline dayalı olarak açıklar, ancak "ALGOL 60'ın sahip olmadığı veri türleri, işlemler ve ifadeler" verir. Spesifik farklılıklar şunlardır:

Algol 60, DG / L'de desteklenmeyen özellikler

Algol 60 özelliği Algol 60 rapor paragrafında açıklandığı gibi DG / notlar
İsimle ara para. 4.7.3.2 DG / L prosedür parametrelerinin PROSEDÜR tipi olarak kullanılmasına izin vererek prosedürlerin diğer prosedürlere ismen geçirilmesine izin verir.
Değişmez değerlerde iç içe geçmiş tırnak işaretleri 2.6.1 ve 2.4.1
Tanımlayıcıların uzunluğunda sınır yok DG / L tanımlayıcı adlarının ilk 32 karakter içinde benzersiz olması gerekir
İki bölüm operatörü 3.3.4.2 DG / L, hem gerçek hem de tam sayı bölümü için "/" kullanır; başka bir tam sayıya bölünen bir tam sayı, derleyicinin global / R anahtarı kullanılmadığı sürece tamsayı bölme anlamına gelir (örneğin 1/4, 0'dır)
10 <tamsayı> gösterimi 2.5.1 DG / L, on'un üslerini göstermek için "bilimsel" gösterim için E <tamsayı> (veya çift kesinlik için D <tamsayı>) kullanır
Yalnızca <bileşik ifadeden> oluşan bir program 4.1.1
Boole operatörleri olarak ASCII olmayan karakterler ⋀, ⋁, ¬, ⊃, ≡, ≤, ≥, 3.4.6.1 DG / L bunun yerine şunlara izin verir: AND, OR, NOT, IMP, EQV, <= (veya = <),> = (veya =>) ve <> (veya> <) ve XOR
Algol prosedürlerine Algol dışı kodu dahil etme 4.7.8 FORTRAN 5 matematik kitaplığından ayrı olarak, harici prosedürler için dokümantasyon yalnızca diğer DG / L prosedürlerinin bağlantılı olacağını varsayar.

Uzantılar

DG / L'de sunulan veya Data General'in 1971'deki önceki Algol uygulamasından taşınan Algol 60 standardının bazı uzantıları:

Dize işlemleri

  • SUBSTR - alt dize
  • INDEX - bir alt dizenin konumu
  • LENGTH - bir dizenin uzunluğu
  • SETCURRENT - bir dizinin geçerli uzunluğunu ayarlar, örneğin setcurrent (str, length (str) -1);
  • Birleştirme operatörü: "!!"
  • Dize aritmetiği (ör. "123.45" + "0.01")
  • Tür dönüşümü (Boolean, Integer, Real, Pointer, Bit)
  • ASCII karakterlerini temsil etmek için köşeli parantez içine alınmış sekizlik sayılar ve bazı özel semboller

Giriş ve çıkış

  • Desteklenen tüm veri türleri için tam olarak biçimlendirilmiş çıktı, biçimlendirilmemiş girdi ve çıktı
  • Data General'in RDOS , AOS ve AOS / VS sistem çağrılarına tam arayüz
  • Önbellek yönetimi (sanal bellek seçeneğiyle).
  • CLRE ve INFOS II veritabanlarına arayüz

Diğer uzantılar

  • / ** harf-rakam-dizge <ifade> * / kullanarak kod bölümlerinin koşullu derlenmesi
  • % karakteri ve / * yorum * / kullanarak satır sonu yorumları
  • genişletilmiş do , for ve if sözdizimi (ör. WHILE <boolexp1> DO <statement> UNTIL <boolexp2>)
  • Türler: BIT, BYTE, 16-bit ve 32-bit tamsayılar, 32-bit ve 64-bit gerçekler ve keyfi hassas aritmetik,
  • Değişmezler, örneğin LITERAL C (299792.458)
  • Global veriler
  • Yakalama hatası
  • Dış prosedürler ve veriler
  • Küme bildirimi ... Pascal birimlerine çok benzer (ayrı bir derlenmiş kaynakta bir dizi prosedür ve veri kümesine izin verir).
  • İşaretçi -> her türden sembol ve TABANLI değişkenler
  • Münhasır-VEYA operatörü (XOR)
  • Çoklu görev

Referanslar

  • DG / L Compiler Referans Kılavuzu, Data General Corp, 1978
  • DG / L Runtime Referans Kılavuzu, Data General Corp, 1978