Warum Assembler benutzen?
Assembler als Programmiersprache ist nicht mehr sehr populär
heutzutage. Normalerweise wird eine dritte oder vierte
Generationssprache
benutzt.
Normalerweise - für "08/15" Anwendungen - ist dies genau
richtig.
Es gibt aber Situtationen in denen es nötig ist die Argumente
für
und gegen Assembler genau zu betrachten.
Auf der einen Seite sind die Argumente gegen die Benutzung von
Assembler
zum grossen Teil Vorurteile, auf der anderen Seite sind die
Argumente
für die Benutzung relativ unbekannt. Wenn man die
Vorurteile gegen Assembler kennt und die
Vorteile nicht kennt, wird es sehr schwer eine
objektive
Entscheidung bei der Wahl der Programmiersprache zu treffen.
Eine Regel bleibt wichtig - wie für
jede
Programmiersprache: ohne gut ausgebildete Leute kommt man nirgendwo
hin, ohne
gute Dokumentation enden Sie gar an einer unbekannten Position.
Unten finden Sie eine Übersicht über die wichtigsten
Vorteile
von assembler. Dannach werden wir versuchen die
Vorurteile zu beseitigen.
Wir beenden mit einer kurzen
Zusammenfassung.
Das Arbeiten mit Assembler bietet eine Reihe von Möglichkeiten, welche
nicht (in dieser Gesamtheit) verfügbar sind für 3GL- oder
4GL-Programmierer.
- Abwehrfehler.
Wie oft passiert es das Ihre Anwendungen über etwas so simples
wie
einen S0C7 stolpern, oder über eine zu kleine Zwischendatei.
Mit der
Hilfe einer relativ einfachen Assemblerroutine können diese
Probleme
gehandhabt und gelöst werden. Ihre Anwendungen stürzen
nicht
einfach ab, sondern laufen weiter. Alle aufgetretenen Probleme
werden
protokolliert, und erlauben es dem Kontroller die nötigen
Aktionen
durchzuführen.
- Benutzung von Speicher über der 16MB-Linie.
Es gibt immer noch viele Unternehmen die (gezwungenermassen) mit
AMODE=24
umwandeln. Durch Ergänzung um kleine Assemblermodule kö
nnen Ihre
Anwendungsprogramme über der 16MB-Linie laufen und so den Druck
unter
der 16MB-Linie reduzieren.
- Dynamische Speicherverwaltung.
Programme die Daten in Tabellen, Listen oder Bäumen pflegen,
wissen oft
nicht im Voraus wie groß der Speicherbedarf sein wird. In
Assembler kann
Speicher dynamisch zugeordnet und freigegeben werden. Dies erlaubt
es nur
den wirklich benötigten Speicher anzufordern und zu nutzen.
- Optimierung.
State-of-the-art Compiler generieren sicher effizienten Kode.
Sie
können aber nicht entscheiden, welches Ihre speziellen
Optimierungsziele sind. Da ein Programmierer die Struktur Ihrer
Anwendung
kennt, kann er diese Entscheidung treffen. Er kann zum Beispiel das
Risiko
einer page-steal Operation verringern, um so das Programm schneller
zu
machen und die Last auf dem paging Subsystem zu reduzieren.
- Benutzung von Betriebssystemmöglichkeiten.
Viele dieser Möglichkeiten sind nicht nutzbar von höheren
Programmiersprachen. Wenn sie nutzbar sind, ist z.T. der zusä
tzliche
Aufwand erheblich, sodaß ein möglicher Performancegewinn
von
diesem Aufwand überlagert wird.
Unter anderem sind zu nennen:
- Data spaces.
Programme die große Mengen Speicher benötigen, kö
nnen Data
Spaces benutzen. Dies veringert den Zwang Arbeitsdateien anzulegen
(welches wiederum I/Os spart) und zur selben Zeit wird der Bedarf
an
Speicher reduziert (welches out-of-storage abends vermeidet).
- Virtual look-aside facility.
VLF ermöglicht es benannte Daten in Speicher ausserhalb des
eigenen
Addreßraumes zu halten. Für intensiv benutzte Daten
(z.B. Member in
bestimmten PDS-Dateien) kann dies die Zeit für I/Os fü
r Ihre
Anwendungen erheblich verkürzen.
- Gleichzeitiger Zugriff auf verschiedene Dateien.
Wenn eine Anwendung Sätze aus zwei oder mehr Dateien lesen
und/oder
schreiben will, kann dies zur selben Zeit passieren. Dies ist
sogar
für Sätze der gleichen Datei möglich. Diese
Überlappung kann erhebliche I/O-Wait Zeiten einsparen,
besonders wenn
die Sätze auf unterschiedlichen Volumes liegen.
- Subtasks.
Durch Aufteilung auf mehrere Subtasks kann eine Task erheblich
beschleunigt werden. Z.B. durch Verlagerung der nötigen
Anlegung von
Journalsätzen in eine zweite Task kann die
Verkaufstransaktion
beschleunigt werden.
- Reenterability.
Indem häufig benutzte Programme reentrant gemacht werden,
können
diese in gemeinsam genutzten Speicher (bevorzugt über der
16MB Linie)
gelegt werden. Dies bedeutet, das alle Programme, die diesen Kode
benutzen, beschleunigt werden, weil die Wahrscheinlichkeit
für einen
Page Fault minimal wird.
Es gibt verschiedene Vorurteile gegen das Arbeiten mit Assembler.
Die
Wichtigsten sind:
- In Assembler ist strukturierte Programmierung unmöglich.
Dies ist nicht wahr. In diesem Bereich bietet Assembler tatsä
chlich
mehr Möglichkeiten als viele 3GLs.
- Pflege von Assemblerprogrammen ist viel teurer als die Pflege
von
3GLs.
Als 3GLs eingeführt wurden mag dies gestimmt haben. Aber heute
ist
diese Aussage durchaus debatierbar.
- Assembler ist eine umständliche Sprache, und schwer zu
lernen.
Assembler ist in der Tat ein bischen weniger lesbar für den
Laien als
z.B. COBOL. Sprachen wie C und C++ auf der anderen Seite sind viel
schwerer
zu beherschen.
- Zu 1.
- In Assembler ist strukturierte Programmierung unmöglich.
Struktur in Programme zu bringen ist zu Allererst eine Frage des
Stils und
der Arbeitsmethode. Wenn die benutzte Programmiersprache gute
Möglichkeiten in diesem Bereich bietet, kann das eine Hilfe
sein, aber
nicht mehr.
- Im Bereich Segmentierung bietet Assembler mehr Mö
glichkeiten als
3GLs: Neben dem üblichen Unterprogrammen und Funktionen,
kann man
Programme in CSECTs unterteilen, welche wiederum in Unterprogramme
und
Funktionen aufgeteilt sein können.
Als Zusatz kann man zwischen verschiedenen Arten des Aufrufs
wählen.
Unter anderem: Standard 360-Linkage Konventionen, dem
Linkage-Stack oder
andere Aufrufmethoden, mit oder ohne Verzweigetabelle.
Für die Weitergabe von Parametern schließlich besteht
die Wahl
zwischen Weitergabe des Wertes, der Referenz oder eine Mischung
hiervon.
- Bei der Schleifenkontrolle gibt es in Assembler mit 3GLs
vergleichbaren
Möglichkeiten. Dies sind die so genannten "branch on
index"
und "branch on count" Instruktionen mit ihren relativen
Brüdern. Mit Hilfe von Macros kann man diese Intruktionen um
weitere
mächtige Möglichkeiten erweitern.
- Genau wie viele 3GLs hat Assembler ein Copyfeature um
Standardkode von
einem Bibliotheksmember in das Programm zu kopieren.
- Die Macro-Möglichkeit schließlich bietet ein breites
Spektrum um
Struktur in Programme zu bringen und wiederkehrende
Programmkonstrukte zu
standardisieren. Bei Benutzung von conditional assembly ist es
immer
möglich den generierten Kode zu optimieren. Die meisten 3GLs
bieten
keine vergleichbare Funktion.
- Zu 2.
- Die Pflege von Assembler Programmen ist weit teurer als die
Pflege von
3GLs.
Als 3GLs zuerst eingeführt wurden, gab es eine breite Basis
existierender Assembler Programme. Weil strukturierte
Programmierung
relativ neu in jenen Tagen war, liesen diese Programme vieles zu
wünschen übrig, wenn es um Struktur ging. In Assembler -
wie in
jeder anderen Sprache auch - kann man beliebig viel oder wenig
Struktur
erzeugen. Mit allen Konsequenzen für die spätere
Pflegbarkeit.
In Assembler gibt es mehr Möglichkeiten, als in vielen 3GLs
ein Chaos
anzurichten. Dank der Macro-Möglichkeit gibt es aber mehrere
wichtige
Optionen mehr Struktur zu erzeugen als in anderen Sprachen.
Eine sehr wichtige Frage ist die Frage des Stils. Ein
3GL-Programmierer der
nebenher "ein bischen Assembler" macht, kann sich niemals
mit einem
professionellem Assembler-Programmierer messen. Die Resultate sind
meßbar
und zwar nicht nur in der Zeit in der eine gegebene Arbeit erledigt
wird,
sondern auch in der Qualität des produzierten Kodes. Das
Hauptproblem
ist demnach: wie finde ich den erfahrenen Profi. Ein Problem das Sie
aber
immer haben, egal welche Sprache Sie wählen.
Um also einen fairen Vergleich für benötigte Mannpower
zwischen
Assembler und 3GLs durzuführen, muß man Handwerker mit
Handwerker
vergleichen und man muß das Alter der Programme (lies: Grad
der
Strukturierung) berücksichtigen und die Qualität der
vorhandenen
Dokumentation.
Unsere Erfahrung mit neuen Programmen ist ein ca. 10 bis
20-prozentiger
Mehrbedarf für Entwicklung in Assembler. Wenn es um Pflege
geht, ist
der Unterschied zu abhängig von der Verfügbarkeit von
Dokumentation und der Struktur der Programme um sinnvolle Zahlen zu
liefern.
Ein Beispiel: Einer unserer Kunden besitzt ein Assembler Modul
(von uns) und
ein COBOL-Modul. Beide tun exakt dasselbe. Die letzten paar Ä
nderungen
wurden von einem Assembler-Programmierer an einem Tag durchgefü
hrt,
wohingegen der Cobol-Programmierer 3 Tage brauchte. Obwohl dies
außergewöhnlich klingt, zeigt es doch das Pflege eines
Assembler
Programmes nicht automatisch aufwendiger ist als Pflege eines 3GL
Programmes.
- Zu 3.
- Assembler ist eine umständliche Sprache, und schwer zu
lernen.
Wenn Sie von "Laien" abhängig sind, sollten Sie sicher nicht
Assembler
wählen. Wie mit jeder anderen Sprache werden Sie nur Ihre
eigenen
Probleme erzeugen.
Natürlich gibt es auch Profies. Diese können nicht nur
Assembler
programmieren, sondern beherrschen auch die verschiedenen Optionen,
die
Assembler bietet. Dies ermöglicht eine zügige, effiziente
und
saubere Arbeit.
Die Argumente für und gegen den Gebrauch von Assembler
können wie
folgt zusammen gefaßt werden:
- Arbeiten mit Assembler braucht ein kleines bischen mehr Zeit.
Aber bei
Weitem nicht soviel, wie man gemeinhin denkt.
- Assembler bietet mehr Möglichkeiten zur Strukturierung,
obwohl
fehlender Professionalismus produziert leichter Pflegeprobleme.
- In Assembler gibt es mehr Möglichkeiten Durchsatzprobleme
zu
lösen oder zu verhindern.
- Man benötigt mehr Zeit einen Profi zu finden.
Zusammenfassend unser Tipp: Kein Assembler wenn es nicht sein
muß. Auf der
anderen Seite, wenn es Gründe gibt, nur nicht genieren;
Assembler ist
nicht furchteinflössend. Und wenn Sie Assembler einsetzen,
bitte nur
für die Module die davon profitieren. Der größ
ere Teil Ihrer
Anwendung wird wahrscheinlich am besten in Ihrer Lieblings-3GL
oder 4GL
geschrieben.
Schließlich, für manche Anwendungen gibt es keine
Alternative zu
Assembler. Dies gilt insbesondere für viele Exits.
Nicht nur das Betriebssystem, sondern auch viele Standard Produkte
sind mit
Exitpunkten ausgestattet, damit Installationen diese Software an
ihre
Bedürfnisse anpassen können. Für viele Exits ist
Assembler die
einzige Sprache. Mit obigen Argumenten sollte dies (ab jetzt
hoffentlich)
kein unüberwindbares Problem sein.
Diese Seite ist Mitglied im einem Web-Ring.
Sie sind eingeladen die
Liste der Mainframe-Liebhaber-Internetseiten
zu durchstöbern.
|
|
Dinos sind nicht tod. Sie sind am Leben und fühlen sich wohl
in einem
Rechenzentrum in Ihrer Nähe. Sie sprechen seltsame Sprachen
und
betreiben Zauberei mit dem Computer. Und falls Sie auf ihr
endgültiges
Aussterben warten: Dinosaurier waren die Herren der Welt fü
r 155
Millionen Jahren!
|
Dinos und andere Anachronismen.
[ Join
Now
|
Ring Hub
|
Random
|
<< Prev
|
Next >>
]
|
Nach die Vorteile von Assembler.
Nach die Vorurteile gegen Assembler.
Nach die Zusammenfassung.
Nach die deutsche Homepage.
Nach die allgemeine Homepage.
Hier finden Sie die Logos unserer
Sponsoren
und die Logos der Web-Standarts an die sich diese Seite hält.