www.wikidata.de-de.nina.az
BLISS ist eine Systemprogrammiersprache die um 1970 an der Carnegie Mellon University von W A Wulf D B Russell und A N Habermann entwickelt wurde Es war die bekannteste Systemprogrammiersprache bevor einige Jahre spater C aufkam Von da an wurde C wichtiger als BLISS In den ersten Jahren der Existenz von C gab es bei den Bell Labs einige Projekte die BLISS gegenuber C im Vorteil sahen BLISSParadigmen strukturiert imperativ prozedural Erscheinungsjahr 1970Designer William WulfEntwickler Carnegie Mellon UniversityAktuelle Version BLISS 64 Typisierung ungetyptDialekte Common BLISSBeeinflusst von ALGOLBetriebssystem Cross platform PDP 10 PDP 11 DEC Alpha DEC PRISM Intel IA 32 Intel IA 64 VAXpdp 10 trailing edge com bb m836d bm BLISS ist eine untypisierte blockstrukturierte Programmiersprache bei der Ausdrucke im Vordergrund stehen und nicht Anweisungen Sie enthalt Konstrukte fur Ausnahmebehandlung Koroutinen und Makros BLISS bietet keine GOTO Anweisung an Der Name BLISS steht fur Basic Language for Implementation of System Software manchmal wird die Abkurzung wegen des Autors William Wulf auch als Bill s Language for Implementing System Software interpretiert Der ursprungliche Compiler der Carnegie Mellon Universitat war beruhmt wegen seiner weitreichenden Optimierungen und bildete den Hintergrund des Lehrbuchs The Design of an Optimizing Compiler Die Digital Equipment Corporation entwickelte und pflegte BLISS Compiler fur die PDP 10 PDP 11 DEC Alpha DEC PRISM Intel IA 32 Intel IA 64 und VAX und verwendete sie in den 1980er Jahren intensiv hausintern Die meisten Dienstprogramme fur das Betriebssystem VMS waren in BLISS 32 geschrieben Inhaltsverzeichnis 1 Eigenschaften der Sprache 2 Beispiel 3 Versionen 4 Literatur 5 Weblinks 6 EinzelnachweiseEigenschaften der Sprache BearbeitenAus dem Handbuch BLISS hat viele Vorrichtungen anderer moderner Hochsprachen Blockstruktur eine automatische Stapelverarbeitung und Mechanismen fur Definition und Aufruf rekursiver Prozeduren Es bietet eine Vielzahl vordefinierter Datenstrukturen und Einrichtungen fur Tests und Iteration Andererseits fehlen in BLISS bestimmte Vorrichtungen anderer Hochsprachen Es hat keine eingebauten Vorrichtungen fur Ein Ausgabe weil ein Betriebssystemprojekt normalerweise seine eigene Ein Ausgabe entwickelt Es erlaubt den Zugriff auf maschinenspezifische Vorrichtungen weil Systemsoftware dies oft verlangt BLISS hat Eigenschaften die unter Hochsprachen ungewohnlich sind Ein Name wird durchgangig als die Adresse einer Speichereinheit interpretiert und nicht als Wert in einer Speichereinheit Ausserdem ist BLISS eine Ausdruckssprache und keine Anweisungssprache Das heisst dass jedes Konstrukt der Sprache ausser den Deklarationen ein Ausdruck ist Ausdrucke liefern einen Wert und verursachen moglicherweise auch eine Aktion wie etwa eine Anderung des Speichers einen Wechsel der Steuerung oder die Ausfuhrung einer Programmschleife Das Gegenstuck zu einer Wertzuweisung beispielsweise ist in BLISS strenggenommen ein Ausdruck der selbst einen Wert hat Der Wert eines Ausdrucks kann in BLISS entweder benutzt oder ignoriert werden Schliesslich verfugt BLISS uber eine Makro Vorrichtung die eine Flexibilitat erlaubt wie man sie sonst nur in Makro Assemblern findet Digital Equipment Corporation 1 Grundlegende Eigenschaften von BLISS sind die folgenden Alle Konstanten sind Ganzwortwerte fur die verwendete Maschine das heisst also auf einer 16 bit Maschine wie der PDP 11 umfasst eine Konstante 16 Bit auf einer VAX 32 Bit und auf einer PDP 10 36 Bit An den Namen einer Variablen wird immer die Adresse der Variablen gebunden nicht ihr Wert Beispielsweise bedeutet die Instruktion Z 8 dass die Zahl 8 auf die Adresse von Z addiert wird nicht auf ihren Wert Wenn der Wert von Z erhoht werden soll muss die Adresse erst durch Voranstellen eines Punkts dereferenziert werden das heisst also Z 8 Bezeichner fur Variablen und Konstanten mussen vor ihrer Verwendung deklariert werden typischerweise mit dem Schlusselwort OWN Der Compiler wird dann normalerweise einen Speicherplatz dafur allozieren eine Variable kann aber auch mit der Deklaration BIND an eine bestimmte Speicheradresse oder ein Maschinenregister gebunden werden Eine Wertzuweisung wird mit dem Symbol notiert Die Anweisung Z 8 spezifiziert eine Ganzwortkonstante mit dem Wert 8 und speichert sie an der Adresse von Z Im Licht anderer Programmiersprachen ungewohnlich ist dass auch die Anweisung Z 12 14 oder 12 Z 14 zulassig ist welche den Wert 14 an die um 12 erhohte Adresse von Z speichert Fur den Vergleich werden Schlusselworter wie EQL gleich GTR grosser und NEQ ungleich verwendet Das folgende Programmstuck weist den Absolutwert von Z an die Adresse von Q zu Q IF Z GTR 0 THEN Z ELSE Z Blocke zusammengesetzte Anweisungen sind ahnlich zu denen von ALGOL Ein Block beginnt mit BEGIN endet mit END und kann eigene lokale Variablen definieren Eine besondere Rolle spielt das Semikolon In Algol dient es dazu einzelne Anweisungen voneinander zu trennen in BLISS bestimmt es ob der Wert eines Ausdrucks erhalten bleibt oder nicht Das folgende Beispiel stammt aus dem Bliss Language Manual Z BEGIN LOCAL TEMP TEMP X X Y Y TEMP X EQL Y END Hier wird eine lokale Variable TEMP definiert mit deren Hilfe die Inhalte zweier Variablen ausgetauscht werden Anschliessend werden die Variablen noch auf Gleichheit getestet und weil hinter dieser Anweisung kein Semikolon steht bleibt das Ergebnis des Vergleichs 0 oder 1 erhalten und wird der Variablen Z zugewiesen Unterprogramme werden mit dem Schlusselwort ROUTINE eingeleitet Makros werden mit dem Schlusselwort MACRO eingeleitet BLISS kennt arrays die hier als structures bezeichnet und mit dem Schlusselwort VECTOR deklariert werden Komplexe Fallunterscheidungen mit Hilfe von CASE Ausdrucken Zahlschleifen mit Hilfe von INCR Ausdrucken Eingebaute Funktionen zur Verarbeitung von Zeichenketten Automatische Datenkonvertierungen zum Beispiel zwischen Zahlen und ZeichenkettenBeispiel BearbeitenDas folgende Beispiel stammt aus dem Bliss Language Manual MODULE E1 MAIN CTRL BEGIN FORWARD ROUTINE CTRL STEP ROUTINE CTRL This routine inputs a value operates on it and then outputs the result BEGIN EXTERNAL ROUTINE GETNUM Input a number from terminal PUTNUM Output a number to terminal LOCAL X Storage for input value Y Storage for output value GETNUM X Y STEP X PUTNUM Y END ROUTINE STEP A This routine adds 1 to the given value A 1 END ELUDOMVersionen BearbeitenBLISS 10 BLISS 11 ein Crosscompiler fur die PDP 11 BLISS 16 BLISS 16C die DEC Version von BLISS 11 BLISS 32 BLISS 36 BLISS 64 Common BLISS eine portable TeilmengeLiteratur BearbeitenW A Wulf D B Russell A N Habermann BLISS A Language for Systems Programming CACM 14 12 Dez 1971 S 780 790 W A Wulf R K Johnson C B Weinstock S O Hobbs C M Geschke The Design of an Optimizing Compiler New York Elsevier 1975 ISBN 0 444 00158 1 Weblinks BearbeitenPDF Dateien mit Handbuchern englisch Alan Lehotsky berichtet uber die Verwendung von BLISS bei DEC englisch Language Reference Manual BLISS A Language for Systems Programming von W A Wulf D B Russell und A N Habermann PostScript Session notes for Introduction to BLISS von Matthew D Madison PostScript Downloads BLISS 10 BLISS 36 BLISS 11 BLISS 32 and BLISS 64Einzelnachweise Bearbeiten Bliss Language Manual Memento des Originals vom 29 September 2007 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot 63 249 85 132 PDF 1987 Abgerufen von https de wikipedia org w index php title BLISS Programmiersprache amp oldid 237948007