Software-Alternativen beim Personal Computer-Einsatz:

Basic-Grenzen liegen in der Anwendung

17.10.1980

Mit zunehmendem Einsatz von Personal Computern ausserhalb des ihnen ursprünglich zugedahten privaten Bereichs wurde die, höhere" Programmiersprache Basic für zumeist technisch / wissenschaftliche Anwendungen entwickelt. Für den produktiven Einsatz - vor allem im kommerziellen Sektor sei "diese Programmiersprache ein Hemmschuh, da sie bedingt durch ihre Grammatik auf kleine Programme begrenzt und daher prozessfeindlich ist". Hans Peter Blomeyer-Bartenstein beschreibt in seinem Buch "Personal Computer"*) heute zur Verfügung stehende Alternativen.

Da der Personal Computer- oder das Kompakt-Computersystem, wie solche Anlagen im deutschen Sprachraum bezeichnet werden - vom Heimcomputer abstammt, ist seine Domäne die Computersprache Basic. Basic ist eine Sprache, die zur Ausbildung von Computeranfängern entwickelt wurde, sie ist also auf einfachste Bedienung unter Inkaufnahme weitgehender Einschränkungen ausgerichtet. Aber welcher Computeranwender möchte schon auf Dauer "Anfänger" bleiben?

Kompakt-Computersysteme mit Anspruch bieten daher zusätzliche Sprachen verschiedener anderer Ausrichtung: In Richtung Maschinennähe die Assembler-Sprache, in Richtung professioneller Anwendungen Fortran, Cobol, APL und Pascal.

Angesichts dieser breiten Palette fällt die Wahl schwer- in diesem Abschnitt sollen daher einige Hinweise gegeben werden, die die Entscheidung für eine bestimmte Programmiersprache wesentlich erleichtern.

Basic

Basic ist eine leicht zu erlernende Programmiersprache und hat weite Verbreitung gefunden. Sie wurde für den interaktiven Betrieb mit dem Computer entwickelt, bei dem der Programmierer im direkten Dialog mit dem Computer steht, der ihn schon bei der Eingabe auf Syntaxfehler aufmerksam macht. Das eingegebene Programm kann sofort gestartet werden, da es nicht in Maschinensprache übersetzt, sondern nur interpretiert wird.

Entsprechen die Ergebnisse des Programms nicht den Vorstellungen, können beliebig Zeilen (Statements) ersetzt, gelöscht oder eingeschoben und danach ein neuer Versuch gestartet werden. Diese Eigenschaften verkürzen die benötigte Zeit für die Programmentwicklung.

Hauptbestandteil der Basic-Programme sind im allgemeinen numerische Berechnungen. Deshalb stellt Basic normalerweise Gleitkomma-Arithmetik, Algorithmen zur Lösung algebraischer Ausdrücke und die wichtigsten transzendenten Funktionen zur Verfügung.

Bestechend ist dabei die Leichtigkeit und Geschwindigkeit, mit der man mit Basic kleine funktionale Programme erstellen kann. Jedoch werden bereits systematische Änderungen problematisch: Hier gibt es keine maschinelle Programmtext-Verwaltungshilfe, da der Interpreter meist ausschließlich auf Eingabe und Ausführung eines Programmes ausgerichtet ist.

Fehlende Prozedur-Struktur

Man hilft sich so, daß man das streng interpretative Prinzip durchbricht und als besonderes, Feature" die Möglichkeit einbaut, Basic-Quelltext auf Diskette abzuspeichern (Asave/Aload, wobei das "A" für ASCII steht und die Quelltext-Speicherform symbolisiert). Mit Asave abgespeicherte Basic-Programme lassen sich dann unter Verwendung der vollen Leistung eines Texteditors systematisch ändern, verbessern, zusammenhängen und so weiter.

Die folgenden, durch Basic gegebenen Einschränkungen können jedoch auch dadurch nicht aufgefangen werden:

- Die interpretative Ausführung hat relativ geringe Effizienz zur Folge (hoher Speicherbedarf, lange Ausführungszeiten).

- Basic auf Kompakt-Computersystemen hat meist die Einschränkungen, daß Variablennamen nur aus einem Zeichen bestehen dürfen, was für die Erstellung größerer Programme hinderlich ist.

- In Basic fehlt eine leistungsfähige Unterprogramm- beziehungsweise Prozedur-Struktur. Die Verwendung von Goto-Anweisungen macht Programme starr, änderungsfeindlich und vor allem unübersichtlich.

- Es existiert zur Zeit keine offizielle oder faktisch durchgesetzte Normierung der Programmsprache Basic. Dadurch wird ein Hauptvorteil Höherer Sprachen, nämlich ihre Portabilität (das heißt Übertragbarkeit von Rechner zu Rechner) eingeschränkt.

Inzwischen werden sogar Basic-Compiler angeboten, also Übersetzer, die aus Basic-Quellcode direkt Maschinencode erzeugen.

Damit ist der Geschwindigkeitsnachteil zum Teil aufgehoben, die übrigen genannten Punkte schränken die Verwendbarkeit von Basic jedoch nach wie vor ein. Es werden daher inzwischen auch auf Kompakt-Computersystemen in verstärktem Maß alternative Programmiersprachen moderner Orientierung angeboten.

Assembler-Sprache

Nach einer Untersuchung über Verbreitung des Einsatzes verschiedener Computersprachen arbeiten bei Mini- und Großrechnern auch heute noch zirka 20 Prozent aller Programmierer in Assembler-Sprache. Dies hat gute Gründe:

Die Benutzung von AssemblerSprache bietet

- maximal mögliche Verarbeitungsgeschwindigkeit bei gegebener Aufgabenstellung

- minimal mögliche Programmlänge bei gegebener Aufgabenstellung,

- expliziten Zugriff auf alle Hardware-Komponenten des Systems.

Hieraus ist ersichtlich, daß es Anwendungen gibt, wo das Programmieren in Assembler zur Pflichtkür wird.

Dies ist der Fall bei:

- zeitkritischen Aufgaben (also solchen, wo das Computersystem sich bezüglich Verarbeitungs- oder Reaktions-Zeit an den Grenzen seiner Leistungsfähigkeit befindet; eine Grenze, an die Kompakt-Computersysteme oft schon bei harmlos anmutenden Aufgaben stoßen!),

- speicherplatzkritischen Aufgaben,

- hardwareorientierten Aufgaben.

Sie entstehen, wenn man eine der großen Stärken der Kompakt-Computersysteme wirklich nutzen will, nämlich ihre Möglichkeit, hardwareabhängige Aufgaben zu bearbeiten und zwar mindestens in Form von Treiberprogrammen.

Ebenso sind Betriebsprogramme und Graphik-Grundprogramme meist in Assembler geschrieben.

Trotz aller Vorteile ist die Assembler-Codierung kein Zuckerlecken ("Assembly Coding is Cruel" fand der Autor in einem Softwarelabor bei einem führenden Computerhersteller in Kalifornien auf einem Poster).

Auch wenn die Klassifizierung "grausam" für die Arbeit in Assembler übertrieben ist, bringt sie dem Anwender folgende Probleme:

- Die Programmerstellung ist aufwendig, da die Maschineneigenheiten berücksichtigt werden müssen.

- Assembler-Code ist (mit Ausnahme von wenigen zueinander kompatiblen Prozessoren) nicht übertragbar ("portabel").

Aus diesen Gründen verwendet man, wo immer dies möglich und wirtschaftlich ist, leistungsfähige Höhere Sprachen wie Fortran, Cobol und vor allem Pascal.

Konventionelle Höhere Sprachen

In der Vergangenheit und auch heute noch wurden häufig sogenannte "Problemorientierte Sprachen" verwendet, vor allem Fortran, Cobol und Algol.

Trotz seines angenehmen Grundkonzepts konnte sich Algol in der Kompakt-Computertechnik nicht durchsetzen; wir beschränken uns daher hier auf Fortran und Cobol.

Fortran steht für Formula Translator. Der Name sagt bereits aus, daß diese Sprache insbesondere für technisch / wissenschaftliche Anwendungen konzipiert wurde.

Bei den Minicomputern und den Kompakt-Computersystemen hat sie vor allem Verbreitung bei komplexeren mathematischen und statistischen Berechnungen gefunden, ebenso in Physik und Elektrotechnik.

Ausserdem existieren viele Graphikprogramme in Fortran, insbesondere im Bereich des Bauwesens und der Geodäsie. Fortran ist eine sehr gut definierte Sprache, deren Normierung durch das Ansi (= American National Standardisation Institute) erfolgt.

Dementsprechend ist ein bestimmter "Ansi-Level" eine recht klare Beschreibung von Sprach-Umfang und -Konvention, was Fortran-Programme gut portabel macht.

Nachteilig bei Fortran ist seine starre Ausrichtung auf technisch / wissenschaftliche Anwendung und die nicht immer konsequent durchgehaltene Architektur, so daß der Programmierer eine Menge unnötiger Konventionen berücksichtigen muß.

Die Anwendung von Fortran ist immer dann zu empfehlen, wenn fertige Fortran-Programme oder Programmteile vorliegen, die man bei einer gegebenen Problemlösung verwenden kann.

Über 70 Prozent aller Programmierer auf der Welt beherrschen die Programmiersprache Cobol.

Sie ist eine der Sprachen mit Tradition und, wie der Name sagt, "kommerziell" orientiert, das heißt auf kaufmännische Anwendungen ausgerichtet. Demzufolge eignet sich die Sprache gut zum Hantieren von großen Datenmengen, Ausgabe von Listen und Formularen und Fortschreibung umfangreicher Text- und Zahlen-Dateien.

Wie bei allen herkömmlichen, problemorientierten Sprachen ist ihr Nachteil eben diese starre Orientierung. Außerdem ist Cobol sehr redundant, das heißt, ein und dieselbe Funktion kann durch mehrere verschiedene Anweisungen erzielt werden. Das hat zur Folge, daß der durchschnittliche Programmierer nur 30 bis 50 Prozent des Cobol-Sprachsatzes beherrscht, wobei ihm der Rest in den Fällen, wo es unbedingt erforderlich ist, nur durch mühsames Nachblättern in der Sprachbeschreibung zugänglich ist.

Man kann sich vorstellen, daß diese Tatsache nicht gerade zur Effizienz der Programmierung beiträgt. Trotz allem ist Cobol eine durch Ansi-Standards sehr präzis definierte Sprache, die gute Portabilität der Programme garantiert.

Man wird daher Cobol vor allem in kommerziellen Anwendungen einsetzen, vorzugsweise dort, wo bereits fertige Teil- oder Komplett- Lösungen existieren.

Seit der Entwicklung von Sprachen wie Fortran und Cobol sind Jahrzehnte vergangen.

Es ist daher nicht verwunderlich, wenn die junge Wissenschaft der Informatik die Frage, wie man Aufgaben mit Computerhilfe am besten löst, von Grund auf untersuchte und anstelle problemorientierter Lösungen allgemeine Wege für sinnvolle Programmierung fand.

Grundtenor dieser Bemühungen war, den Computer als Werkzeug anzusehen und ihm über die Programmiersprache die Absichten des Programmierers vorzuschreiben, nicht dagegen den Programmierer in ein Korsett willkürlicher, historisch oder sonstwie zufällig entstandener Konventionen zu pressen - mit einem Wort, der Programmierer soll sich auf die Logik seiner Aufgabenstellung konzentrieren können, statt Aufwand in die Berücksichtigung willkürlicher Regeln zu investieren.

Ergebnis dieser Grundsatzarbeiten waren Sprachkonzepte, die bei den Fachleuten auf breiten Enthusiasmus stießen. Im Kreis der Kompakt-Computersystem-Anwender sind diese Sprachen noch verhältnismäßig wenig verbreitet ; wegen ihrer durch einfache Logik und "gesunden Menschenverstand" gut zugänglichen Syntax werden sie auch dort binnen kurzer Zeit weite Verbreitung finden.

Eine Starrolle nimmt hierbei Pascal ein; aussichtsreich erscheint Elan.

Die Stärke und Wichtigkeit dieser beiden Sprachen wird in eindrucksvoner Weise dadurch dokumentiert, daß sie (und nur sie) ministeriell und sogar auf Bundesebene für den Informatikunterricht an Schulen in der Bundesrepublik empfohlen sind.

Daß durch die Ausbildung von zigtausend Schülern in diesen Sprachen eine gewisse Signalwirkung zu erwarten ist, steht außer Zweifel.

Beide Sprachen können daher dem Kompakt-Computersystem-Anwender, der zukunftsgerichtet denkt, wärmstens ans Herz gelegt werden ; einen kurzen Überblick und Literaturhinweise für eingehendere Beschäftigung wollen wir im folgenden Absatz geben.

Definiert wurde diese Sprache von einem Schweizer, Professor N. Wirth. Große Verbreitung gefunden hat sie bisher in den USA.

Es ist eine prozedurorientierte Sprache aus der Alcor/Algol-Familie, die sich vor allem durch systematische Sprachstruktur, eine leicht überschaubare Anzahl von Grundelementen und mächtige Strukturierungsmöglichkeiten für Daten und Algorithmen auszeichnet.

In der Zwischenzeit wurden Varianten dieser Sprache definiert, die neue Anwendungsfelder erschlossen. Besonders interessant in diesem Zusammenhang ist die Variante Sequential Pascal von Per Brinch Hansen, die sich als besonders gut zur Implementierung auf Kompakt-Computersystemen erwiesen hat: Mehrere große deutsche Computerhersteller haben bisher bereits auf sie zurückgegriffen.

Pascal arbeitet mit einem Zwischencode, das heißt der Compiler erzeugt als Endergebnis statt Maschinencode einen von einem kleinen Interpreterprogramm ausführbaren Zwischencode. Unterschied zu der interpretativen Verarbeitung von zum Beispiel Basic ist, daß bei Pascal nicht (die aufwendige und rechnerzeitraubende) direkte Interpretation des eingegebenen Quellprogrammtextes stattfindet, sondern lediglich ein weitgehend voraufbereiteter und komprimierter Zwischencode interpretiert wird.

Bei diesem Verfahren wird trotz wesentlich höherer Programmeffizienz eine

ausgezeichnete Portabilität der Programme erhalten.

Elan

Eine ernsthafte Alternative zu Pascal ist durch das in der Bundesrepublik entwickelte Elan entstanden.

Elan hat grundsätzlich das gleiche Anliegen wie Pascal- der Erkenntnisvorsprung seiner Schöpfer von einigen Jahren macht diese Sprache noch reizvoller. Es bleibt abzuwarten, ob Elan der Sprung zur weltweiten Benutzung gelingt; sicher ist jedoch schon heute, daß diese Sprache mindestens im Unterricht im deutschsprachigen Raum wertvolle Dienste leisten wird.

Kein Wunder - Elan ("Elementary Language") wurde mit besonderer Rücksicht auf die Effizienz bei der Ausbildung entwickelt; hierfür garantiert die Zusammenarbeit praktisch aller in diesem Bereich maßgeblichen Organisationen, wie dem Forschungs- und Entwicklungszentrum für objektivierte Lehr- und Lernverfahren (FEOLL), dem Bundesministerium für Forschung und Technologie (BMFT) dem Arbeitskreis Schulsprache (ASS) der Gesellschaft für Mathematik und Datenverarbeitung (GMD) und der Deutschen Forschungsgemeinschaft (DFG).

Folgende Zielsetzung ist bei der Entwicklung von Elan in den Vordergrund gestellt und erreicht worden:

- Elan ist als Werkzeug für den Informatik-Unterricht konzipiert.

- In Elan sind Algorithmen gut lesbar formuliert; sie spiegeln den Lösungsweg unmittelbar wider.

- Sehr unterschiedlich strukturierte Objekte lassen sich einfach konstruieren.

- Die Sprache ist in ihrer Struktur einfach und damit in Syntax und Semantik leicht lehr- und lernbar.

- Die Anpassung an unterschiedlichste Anwendungsgebiete wird durch wenige einfache Kompositionsregeln erreicht.

- Die Sprache gewährleistet hohe "Sicherheit", das heißt, daß ungewollte Nebeneffekte weitgehendst vermieden werden.

- Elan unterstützt die top-down Methode ("Programmieren im Kleinen ) ebenso wie die bottom-up Methode ("Programmieren im Großen").Bei der Entwicklung des Programms entstandene Abstraktionen werden explizit im Programmtext belassen.

PLZ

An dieser Stelle soll unbedingt eine Sprache behandelt werden, die zwar der gleichen Familie wie Pascal und Elan angehört, aber für einen speziellen Zweck geschneidert wurde - die Anwendung auf Mikrocomputersystemen.

Zusätzlich zu den Übersetzern für die genannten Programmiersprachen wurde von der US-Firma Zilog nach reiflicher Überlegung eine eigene, neue Programmiersprache (übrigens in Anlehnung an das bekannte neue Pasca) geschaffen, nachdem sich herausgestellt hatte, daß heute existierende Sprachen sich nicht in optimaler Weise auf Mikrorechner transferieren lassen. Mit den Gründen hierfür und dem vorgeschlagenen Lösungsweg wollen wir uns in diesem Abschnitt näher befassen.

Beim Einsatz Höherer Computersprachen (bekannteste Beispiele sind Cobol, Fortran, PL/I, Algol, Basic, Pascal, Elan und APL) enffernt man sich bei der Anwenderprogrammerstellung völlig von dem Rechnertyp, auf dem das Programm nachher ausgeführt werden soll.

Es ist - im Gegensatz zu Assembler, bei dem nur mit Speicher/Register-lnhalten hantiert wird, die Verwendung von Variablen zulässig, also Namen, die unabhängig von der Hardware des Computers im Verlauf der Verarbeitung des Programms verschiedene aktuelle Werte annehmen können, wie man das eben in der Algebra gewöhnt ist.

Die Anweisungen erfordern nicht mehr das Berücksichtigen, woher ein bestimmter Wert geholt und wohin ein Ergebnis transferiert wird. Ebensowenig ist es nötig, bei Bedingungen oder Schleifen die Art und Weise zu kennen, wie der Computer diese Verzweigungen hardwaremäßig prüft und durchführt - nur um einige Beispiele zu nennen.

All diese "Höheren" Operationen werden - in einer Art und Weise, die den Anwenderprogrammierer nicht zu interessieren braucht - aus mehreren Maschinenbefehlen zusammengesetzt, ähnlich wie das bei den bereits erwähnten Makros der Fall ist (der Unterschied besteht hauptsächlich darin, daß man bei der Makrotechnik die Kommunikationsweise zwischen den einzelnen Makros programmieren muß, während in der Höheren Sprache der Satz von Anweisungen dem Anwender "lückenlos" erscheint also von ihm keine Aktivität erfordert.

Es ist leicht einzusehen, daß es auch Nachteile bringt, wenn man das Problem, das man gelöst haben will (Anwenderprogramm) völlig von dem Mittel entkoppelt, das es lösen soll (Computer) und dann auch noch als Bindeglied zwischen Problemstellung und Bearbeitung eine "sture" Maschine stellt, eben den Computer, der einen höheren Befehl in je einen Satz CPU-spezifischer Maschinenbefehle umsetzt:

Das Ergebnis - nämlich das übersetzte Maschinenprogramm, ist sicher nicht so kurz und so schnell, wie es sein könnte, wenn man es für den Zielprozessor massgeschneidert hätte. Ergebnis: langsamere Programme und höherer Speicheraufwand.

Demgegenüber stehen aber die hohen Kosten der Programmerstellung, die man verständlicherweise mit der Höheren Sprache erheblich reduzieren kann. Folglich ist man den Schritt zu solchen Höheren Sprachen in der Großcomputer-Technik (und dann bald auch bei den Minis) ziemlich früh gegangen; dort ist der verfügbare Speicher recht groß, es gibt schnelle Massenspeicher und sonstige Computer-Peripherie; die Verarbeitungsgeschwindigkeit ist so hoch, daß Zeitverluste durch weniger zeiteffiziente Programme selten die vernünftige Realisierbarkeit eines Projekts in Frage stellen.

Ganz anders verhält es sich bei den Mikrocomputern. Hier sind zunächst schon einmal viele Anwendungen zeitkritisch und interruptgesteuert. Die Reaktionszeit des Systems im ungünstigsten Fall ("worst case") ist sogar häufig bestimmend für die Verwendbarkeit eines Mikroprozessors oder Grund für die Entscheidung zum Überwechseln auf einen modernen, schnelleren "Mikro ".

Außerdem lebt diese Technik unter anderem von der Verwendung hochintegrierter programmgesteuerter Peripheriebausteine, die dem Zentralprozessor durch die in ihnen selbst monolithisch integrierte Funktion "Arbeit abnehmen" - und damit Elektronik-Aufwand, Speicherbedarf und Programmierleistung in unglaublicher Weise verringern:

Der Grenzfall ist das Multicomputersystem, in dem jede einzelne Teilaufgabe durch separate "Intelligenz" (sprich einen eigenen, vonständigen Mikrocomputer) bearbeitet wird, wobei alle Computer im Bedarfsfall die erforderlichen Informationen austauschen.

Das Pendant hierzu ist die Firma, in der der Chef immer mehr Aufgaben an Mitarbeiter delegiert und mit wachsender Selbständigkeit der Angestellten ihnen immer weniger Anweisungen geben und von ihnen immer weniger Informationen verlangen muß ("dezentrale Intelligenz").

Der Vergleich hinkt insofern, daß menschliche Arbeitskraft immer teurer wird, während Computerleistung zu rapide sinkenden Preisen zu haben ist.

Es ist kurz- und mittelfristig (das heißt, innerhalb der nächsten fünf bis zehn Jahre) nicht zu erwarten, daß derartige Funktionen in genormter Form und dadurch mit Standardelementen Höherer Sprachen zu behandeln sind.

Aus dieser Tatsache und mindestens bis dahin ergeben sich folgende Imponderabilien beziehungsweise sich widersprechende Forderungen an die Programmiertechnik: Alle Forderungen des Typs II sind von existierenden Mini- und Großrechnern bei Einsatz der Mikrorechnertechnik unlösbar. Manche Mikrocomputeranbieter versuchen diese bekannte Problematik durch einen Kompromiß zu lösen:

Sie richten die Betriebsprogramme ihrer Mikrocomputer so ein, daß man in Assembler geschriebene Unterprogramme vom in Höherer Sprache geschriebenen Hauptprogramm aufrufen kann.

Dieses Verfahren zwei ist durchhaus praktikabel, hat aber zwei gravierende Nachteile:

- Die Behandlung der schwierig zu programmierenden maschinennahen Operationen muß auch hier in reiner Assembler-Sprache geschrieben werden, das heißt, die Hilfe, die die Höhere Sprache bietet, wird durch ihre Anwendbarkeit stark eingeschränkt

- Der Programmierer muß selbst bei der Datenübergabe von oder zum Hauptprogramm die Hardwaregegebenheiten des Computers und des Übersetzers aus der Höheren Sprache berücksichtigen. Es verliert dadurch große Teile der Hardwareunabhängigkeit bei der Programmierung und hat erhebliche Software-Schnittstellenprobleme zu lösen.

Einen sehr eleganten Ausweg aus diesem Dilemma bietet die Mikro-Programmiersprachfamilie P1Z von Zilog Inc. Es sei gleich hier vorausgeschickt, daß es sich dabei nicht um eine Neufassung der Intel-Sprache PL/M in Z80-Code handelt; stattdessen hat man sich hier an die nach neuesten Erkenntnissen der Informatik in der Sprache Pascal angelehnt und eine Lösung realisiert, die die oben beschriebenen Grundprobleme der Mikrorechnertechnik in eleganter Weise umgeht beziehungsweise löst. Man ging davon aus, daß man ein Problem, das sich im Ganzen durch die gegebenen Randbedingungen (hier der Mikrocomputertechnik) nicht optimal lösen läßt am besten durch getrennte Behandlung der einzelnen Teilbereiche behandelt, die man am Schluß zu einem optimalen Ganzen zusammenfaßt.

Hierzu wurden zunächst zwei Ausführungen der Höheren Sprache PLZ entwickelt, die mit gleichen Anweisungen und Grundregeln arbeiten. Die eine dieser beiden Sprachen PLZ/SYS, ist eine Höhere Sprache, die besonders zur Erstellung von System- und systemnaher Software geeignet ist (selbstverständlich um so besser für die Entwicklung der erfahrungsgemäß einfacheren Anwendersoftware).

Sie verfügt über sehr leistungsfähige Organisationsanweisungen (8- und 16-Bit-Festkomma-Operationen, vorzeichenbehaftet und vorzeichenlos).

Auf Ein-/Ausgabe-Operationen verzichtet diese Sprache ganz- die gesamte Ein-/Ausgabe in "mikrogerechter" Form wird durch fertige mitgelieferte I/O-Prozeduren beziehungsweise von der Schwestersprache PLZ/ ASM erledigt.

Dies ist eine mittelhohe Sprache die eine Untermenge von PLZ / SYS darstellt. Das Besondere an ihr ist, daß in ihr die Höheren Anweisungen (wie If. . . Then. . . Else. . . Fi) unmittelbar und ohne irgendwelche besonderen Maßnahmen seitens des Programmierers mit Assembler-Befehlen gemischt werden können.

Dadurch werden die vorher beschriebenen Probleme eliminiert und folgende Vorteile erreicht:

- Maschinennahe, zeitkritische und interruptintensive Programmteile werden in einfachster Weise mit Unterstützung durch Höhere Organisationsanweisungen bei praktisch voller Effizienz realisiert.

- Die völlige Kompatibilität zwischen beiden Sprachen erspart dem Programmierer die komplizierte Software-schnittstellenbehandlung beim Zusammenbau eines Gesamtprogramms aus maschinennah und maschinenunabhängig codierten Programmteilen.

- Zeitunkritische und hardwareunabhängige Programmteile können in einer Höheren Sprache codiert werden die für beide Problemkreise die gleichen Regeln hat.

- Maschinennah (PLZ / ASM) und maschinenunabhängig (PLZ/SYS) codierte Programm-Moduln werden getrennt geschrieben, übersetzt und getestet.