ebook img

Simulation und moderne Programmiersprachen: Modula-2, C, Ada PDF

286 Pages·1988·18.26 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Simulation und moderne Programmiersprachen: Modula-2, C, Ada

Fachberichte Simulation Herausgegeben von D. Moller und B. Schmidt Band 8 B. Page, R. Bolckow, A. Heymann, R. Kadler, H. Liebert Simulation undmodeme Programmiersprachen Modula-2, C,Ada Springer-Verlag Berlin Heidelberg New York London Paris Tokyo 1988 Wissenschaftlicher Beirat: M. Birkle, J. Biethahn, P. Schmitz, H. W. SchiiBler, A. Storr, M. Thoma Herausgeber der Reihe Dr. D. Moller Prof. Dr. B. Schmidt Physiologisches Institut Informatik IV Universitiit Mainz Universitiit Erlangen-Niirnberg SaarstraBe 21 MartensstraBe 3 6500 Mainz 8520 Erlangen Autoren Prof. Dr. Bernd Page, Rolf Bolckow, Andreas Heymann, Ralf Kadler, Hansjorg Liebert Universitiit Hamburg FB Informatik SchliiterstraBe 70 2000 Hamburg 13 ISBN-13:978-3-540-18982-4 e-ISBN-13:978-3-642-83394-6 DOl: 10.1007/978-3-642-83394-6 CIP·Titelaufnahme der Deutschen Bibliothek Simulation und moderne Programmiersprachen: Modula·2, C. Ada/B. Page ... Berlin; Heidelberg; New York; London; Paris; Tokyo: Springer. 1988 (Fachberichte Simulation; Bd. 8) ISBN-13:978-3-540-18982-4 NE: Page. Bernd [Mitverf.j; GT Dieses Werk ist urheberrechtlich geschiitzt. Die dadurch begriindeten Rechte. insbesondere die der Ubersetzung. des Nachdrucks. des Vortrags, der Entnahme von Abbildungen und Tabellen. der Funk sendung, der Mikroverfilmung oder der Vervielfaltigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nurauszugsweiserVerwertung, vorbehalten. Eine Ver vielfaltigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland Yom 9. September 1965 in der Fassung Yom 24. Juni 1985 zulassig. Sie ist grundsatzlich vergiitungspflichtig. Zuwiderhandlungen unterliegen den Stralbestimmungen des Urheberrechtsgesetzes. © Springer-Verlag Berlin Heidelberg 1988 Die Wiedergabe von Gebrauchsnamen, Handelsnamen. Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme. daB solche Namen im Sinne der Warenzeichen-und Markenschutz-Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden diirften. Sollte in diesem Werk direkt oder indirekt aufGesetze, Vorschriften oder Richtlinien (z.B. DIN, VDI, VDE) Bezug genommern oder aus ihnen zitiert worden sein, so kann der Verlag keine Gewahr flir Richtigkeit, Vollstandigkeit oder Aktualitat iibernehmen, Es empfiehlt sich gegebenenfalls flir die eigenen Arbeiten die vollstandigen Vorschriften oder Richtlinien in der jeweils giiltigen Fassung hin zuzuziehen. 2160/3020-543210 Vorwort Bei der Realisierung von Simulationssoftware wurden modeme Programmierkonzepte aus dem Software Engineering (z. B. Modularisierung oder Portabilitat) hiiufig nur unzureichend beriicksichtigt. Gerade derartige Konzepte waren ein entscheidendes Entwurfsziel bei der Entwicklung modemer genereller Programmiersprachen wie Modula-2, "c" oder Ada. Ein weiterer Nachteil der Simulationssoftware stellt die oft mangelnde Effizienz ihrer Programme dar - kein unwesentliches Handicap, wenn man an den zunehmenden .Einsatz der Simulation auf Mikrocomputem denkt. AuBerdem werden bis heute trotz des groBen Angebotes an geeigneter Simulations software nicht selten allgemeine hohere Programmiersprachen - iiberwiegend sogar FORTRAN - fUr die Implementierung von Simulationsmodellen verwendet, sei es aus mangelnder Kenntnis oder fehlenden Zugriffsmoglichkeiten auf einen entsprechenden Compiler. Daher ist bis heute die Frage nach geeigneten Programmiersprachen fUr die Simulation von hoher Aktualitat geblieben. Die vorliegende Arbeit ist hier als em Beitrag zu verstehen, dem Anwender Entscheidungsgrundlagen zur Auswahl geeigneter (modemer) Implementationssprachen filr die Simulation an die Hand zu geben. Bei der Untersuchung steht die Frage im Mittelpunkt, wie die hier betrachteten modernen Programmiersprachen Modula-2, "c" und Ada fUr die Implementierung spezieller Simulations software, den sogenannten Simulatoren, mit deren Hilfe auf dem Rechner Simulationsmodelle realisiert und betrieben werden konnen, einsetzbar sind. Nach einer kurzen Darstellung der Anforderungen, die aus der Sicht der Simulation an Programmiersprachen zu stellen sind, werden die in dieser Arbeit untersuchten Sprachen und deren wesentliche Merkmale kurz eingefilhrt. AnschlieBend wird dargestellt, wie simulationstypische Konzepte in allgemeinen Programmiersprachen in modellunabhangiger Form implementiert werden konnen. Die Verwendung der so entstehenden Simulatoren in den verschiedenen Sprachen wird anhand eines anschau lichen Beispielmodells demonstriert. SchlieBlich werden die Ergebnisse des durch gefUhrten Sprachvergleichs zusammenfassend bewertet. Die vollstandigen Programm texte sind in den Anhangen zu finden. Das Verstandnis der Arbeit setzt Kenntnisse der zeitdiskreten Simulation und einer modemen, blockorientierten Programmiersprache wie Pascal voraus. Obwohl es sich bei der Vorstellung der untersuchten Sprachen in dieser Arbeit nur urn relativ knappe EinfUhrungen handelt, diirften sie dem Leser doch eine wertvolle Hilfe beim Neueinstieg in diese Programmiersprachen (auch unabhiingig yom Simulationsaspekt) VI sein. Dieses Buch bietet dem Leser durch eme sorgfaltige Zusammenstellung der anwendungsrelevanten Aspekte der Sprachen einen "Leitfaden" fUr einen gezielten und effizienten Einstieg in die zitierte erganzende Literatur. DarUberhinaus werden in den (lauffahigen) Simulationsprogrammen im Anhang des Buches die meisten der behandelten Sprachkonstrukte in ihrer praktischen Anwendung demonstriert. Dieser Sprachvergleich ist im Rahmen meines regelmaBigen Simulationsprojektes im Vertiefungsgebiet "Angewandte Informatik - Modellbildung und Simulation" am Fach bereich Informatik der Universitat Hamburg begonnen und wahrend einer anschlies senden einjlihrigen intensiven Projektphase von uns vollendet worden. Meinen Koautoren gebiihrt mein ausdriicklicher Dank fUr ihre auBerordentlich engagierte und selbstandige Mitarbeit. Mein Dank gilt ebenfalls Herrn Prof. Schmidt, dem Herausgeber dieser Buchreihe, fUr seine hilfreichen Verbesserungsvorschlage bei der ersten Fassung unseres Manu skriptes, sowie Herrn Mohlmann fUr seine UnterstUtzung bei der Korrektur. Auf zwei formale Konventionen solI noch hingewiesen werden: Literaturverweise: Die zur ErstelIung dieser Arbeit verwendete Literatur ist am Ende aufgefUhrt. Ein Verweis im Text hat z. B. folgende Form: [Ung84]. Dabei sind die drei Buchstaben die ersten drei des Verfassernamens (bei mehreren Verfassern die des Erstgenannten), und die Zahl danach steht fUr das Erscheinungsjahr des zugrundeliegenden Werkes. Falls Mehrdeutigkeiten bei Verweisen auftreten sollten, werden diese durch zusatzliche Kleinbuchstaben (a, b, ... ) hinter den lahreszahlen beseitigt. Kursivschrift: Urn einen (in manchen Abschnitten) exzessiven Gebrauch von AnfUhrungszeichen zu vermeiden, werden aIle im normalen Text verwendeten Bezeichner, die sich auf unsere Programme bzw. auf Programmbeispiele beziehen oder aus den jeweiligen Sprachen selbst stammen, kursiv geschrieben. Die sonstige Funktion der Kursivschrift fUr Hervorhebungen bleibt davon unberiihrt. Dariiber hinaus werden Schliisselworte der Sprachen Modula-2 und Ada in GroBbuchstaben geschrieben (in "C" klein, weil von der Sprachdefinition gefordert). Fachbereich Informatik der Universitat Hamburg, im Friihjahr 1988 Bernd Page Inhaltsverzeichnis 1 Einfiihrung 1 2 Anforderungen an die Programmiersprachen aus Sieht der Simulation .••........••. .• 7 3 Kurze Einfiihrung in die untcrsuchten Sprachcn 11 3.1 Modula-2 11 3.1.1 Geschichtlicher Uberblick 11 3.1.2 Erweiterungen und Unterschiede gegeniiber Pascal 12 3.1.2.1 Das Modulkonzept 12 3.1.2.2 Sichtbarkeit, Giiltigkeit und Lebensdauer 15 3.1.2.3 Maschinennahe Programmierung und Koroutinen 17 3.1.2.4 Datenstrukturen und strenge Typbindung 19 3.1.2.5 Syntaktische und semantische Anderungen 20 3.1.3 Zum Sprachumfang 22 3.2 "c" 24 3.2.1 Datentypen und Deklarationen 24 3.2.1.1 Elementare Datentypen 24 3.2.1.2 Zeigertypen 25 3.2.1.3 Strukturierte Datentypen 25 3.2.1.4 Deklarationen 26 3.2.1.5 Typpriifung 28 3.2.2 Ausdriicke und Anweisungen 29 3.2.2.1 Operanden 29 3.2.2.2 Operatoren und Ausdriicke 30 3.2.2.3 Anweisungen und Kontrollstrukturen 32 3.2.3 Programmstruktur 33 3.2.3.1 Funktionen 34 3.2.3.2 BlOcke 35 3.2.3.3 Getrennte Ubersetzung und Speicherungsklassen 35 3.2.3.4 Typdefinitionen 37 3.2.4 Besonderheiten 37 3.2.4.1 Bezeichner 37 3.2.4.2 ~prozessor 38 3.2.4.3 Laufzeitbibliothek 40 3.2.5 Zusammenfassung 41 VIII 3.3 Ada 43 3.3.1 Geschichtlicher Uberblick 43 3.3.2 Datenstrukturierung 44 3.3.2.1 Datentypen 44 3.3.2.2 Typenkonzepte und Objekt-Vereinbarungen 46 3.3.2.3 Strukturierte Datentypen 49 3.3.3 llnterprogramme 52 3.3.3.1 Parameter 53 3.3.3.2 Uberladen (overloading) 54 3.3.4 Modulkonzepte 55 3.3.4.1 Bibliothekseinheiten 55 3.3.4.2 llntereinheiten (subunits) 56 3.3.4.3 Synonyme 57 3.3.4.4 Private Typen 57 3.3.5 Ausnahmen (exceptions) 59 3.3.5.1 Deklaration und Aus16sung 59 3.3.5.2 Behandlung und Ubertragung 60 3.3.5.3 Anwendung 61 3.3.6 Prozesse 62 3.3.6.1 Deklaration 62 3.3.6.2 Ablaufsteuerung (scheduling) 64 3.3.6.3 Synchronisation und Kommunikation 64 3.3.6.4 Alternative Eingangs-Bearbeitung 65 3.3.6.5 Alternative Eingangs-Aufrufe 67 3.3.6.6 Beendigung von Prozessen 68 3.3.7 Generische Progrannnneinheiten 69 3.3.7.1 Generische Vereinbarung 70 3.3.7.2 Generische Inkarnation 70 3.3~7.3 Generische Parameter 71 4 Die Simulationsumgebung und deren Implementation 73 4.1 Allgemeine Betrachtungen 73 4.1.1 Modularisierung 73 4.1.2 Zugriffsschutz 74 4.1.3 Freispeicherverwaltung 75 4.1.4 Simulationsstatistik 75 IX 4.2 Ereignisorientierte Implementationen .... 75 4.2.1 Ereignislistenverwaltung ("EventChain") 77 4.2.2 Warteschlangenverwaltung ("Queue") 78 4.2.3 Verteilungsfunktionen ("Distributions") 80 4.2.4 Anmerkungen zu den Implementationen 82 4.2.4.1 ~odula 82 4.2.4.2 "c" 83 4.2.4.3 Ada 84 4.3 ProzeBorientierte Implementation 86 4.3.1 Das Paket "Adaset" 86 4.3.2 Das Paket "Simulation" . 88 4.3.2.1 Die Anwendersicht 89 4.3.2.2 Datenstrukturen 92 4.3.2.3 Die Ereignislistenverwaltung 93 4.3.2.4 Die Ablaufsteuerung von Prozessen 95 4.3.2.5 ProzeBalgorithmen ..... . 97 4.3.2.6 Bewiiltigung technischer Randprobleme 98 5 Realisierung eines Beispielmodells .•.•.••• 101 5.1 ~odell einer Fertigungsanlage (Jobshop-~odell) 101 5.1.1 Zur Wahl des ~odells ...... . 101 5.1.2 ~odellspeziflkation 101 5.1.3 Erweiterungen fUr die prozeBorientierte Version 103 5.2 Ereignisorientierte Version ......... . 104 5.2.1 Bestimmung der Ereignisarten ..... . 104 5.2.2 Umsetzung in Datenstrukturen und Prozeduren 106 5.2.2.1 Datenstrukturen 106 5.2.2.2 Prozeduren 110 5.2.3 Anmerkungen zur Statistik 115 5.2.4 Besonderheiten der einzelnen Implementationen 116 5.2.4.1 Anmerkungen zur ~odula-Version 116 5.2.4.2 Anmerkungen zur "C"-Version 117 5.2.4.3 Anmerkungen zur Ada-Version 118 5.2.5 Diskussion der Ergebnisse . . . . . . 119 x 5.3 ProzeBorientierte Version ("Jobshop_Process") 122 5.3.1 Der Proze8 im Jobshop-Modell . . . . 122 5.3.2 Modularisierungskonzepte . . . . . . 122 5.3.3 Anbindung an die Simulationsumgebung 124 5.3.4 Probleme bei der Implementation . . 124 5.3.5 Module innerhalb "Jobshop_Process" 125 5.3.5.1 "Common" 125 5.3.5.2 "MachineGroup" 127 5.3.5.3 "Main" 131 5.3.6 Statistikflihrung . . . . 133 6 Bewertung der untersuchten Sprachen 134 6.1 Modularisierung ...... . 135 6.1.1 Vergleich der Konzepte . . 136 6.1.2 Das Problem der strengen Typbindung 137 6.2 ProzeBorientierte Simulation 138 6.3 Temporare Objekte 139 6.4 Ein-/ Ausgabeformatierung 139 6.5 Verstandlichkeit von Quelltexten 141 6.6 Verfligbarkeit von Ubersetzern 142 6.7 Programmierumgebung 143 6.8 Zusammenfassung 144 7 Ausblick •••••• 146 7.1 Allgemeine Aspekte 146 7.1.1 Tracing 146 7.1.2 Automatische Statistik 147 7.1.3 Praprozessoren 147 7.2 Ereignisorientierter Ansatz 149 7.2.1 Das Modul "EventChain" 149 7.2.2 Das Modul "Queue" 149 7.2.3 Das Modul "Distributions" 150 7.3 ProzeBorientierter Ansatz . . . 151 7.3.1 Modula-2: Die Prozeduren "NEWPROCESS" und ''TRANSFER'' ........... . 151 7.3.2 "C": Die Funktionen "setjmp" und "longjmp" 152 7.3.3 Ada: Die Pakete "Simulation" und "Samoa" . 153 XI Anhinge: Programmtexte 155 . . . . . A Ereignisorientierte Version 155 A.l Modula 155 A. 1.1 Die Simulationsumgebung 155 A. 1. 1.1 EventChain 155 A.1.1.2 Queue 159 A.1.1.3 Distributions 166 A. 1. 1.4 FloatInOut 169 A. 1.2 Das Job-Shop-Modell 172 A.2 "CIf 182 A.2.1 Die Simulationsumgebung 182 A.2.1.1 Spezifikationen 182 A.2.1.2 EventChain 187 A.2.1.3 Queue 190 A.2.1.4 Distributions 194 A.2.2 Das Job-Shop-Modcll 196 A.3 Ada 204 A.3.1 Die Simulations umgebung 204 A.3.1.1 Global 204 A.3.1.2 EventChain 205 A.3.1.3 Queue 208 A.3.1.4 Distributions 213 A.3.2 Das Job-Shop-Modell 216 A.4 Ausgaben zum Job-Shop-Modell 223 . B Proze8orientierle Version 227 B.l Adaset 227 B.1.1 Spezifikationsteil 227 R1.2 Implementationsteil 229 B.2 Simulation 232 B.2.1 Spezifikationsteil 232 B.2.2 Implementationsteil 235 B.3 Das priorisierte Job-Shop-Modell 245 B.4 Ausgaben zum priorisierten Job-Shop-Modell 261 . . . . . . . . . Literaturverzeichnis 265 Sachwortverzeichnis 270

Description:
Das Buch befa~t sich mit einem Vergleich der Programmier- sprachen Modula-2,C und Ada hinsichtlich ihrer Eignung f}r die zeitdiskrete Simulation. die Untersuchung basiert sowohl auf einer kritischen Betrachtung der einzelnen Sprechkonzepte als auch auf einer praktischen Õberpr}fung anhand von imple
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.