ebook img

Programmieren mit Ada und C: Eine beispielorientierte Gegenüberstellung PDF

156 Pages·1992·3.76 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 Programmieren mit Ada und C: Eine beispielorientierte Gegenüberstellung

Annette Weinert Programmieren mit Ada und C ~- Programmierung Einführung in die Programmiersprache Modula-2 von H. Pudlatz Parallele Programmierung mit Modula-2 von E. A. Heinz Ada von M. Nagl Programmieren mit Ada von H. Feldmann Strukturiertes Programmieren in C von H. Feldmann Programmieren in C von G. Lamprecht Programmieren mit Ada und C - Eine beispielorientierte Gegenüberstellung von A. Weinert Programmieren in PUl von E. Sturm Programmieren in COBOL 85 von W.-M. Kähler Programmieren in Prolog von P. Bothner und W.-M. Kähler Programmieren in Pascal -Eine elementare Einführung von G. Lamprecht Einführung in die Methode des Jackson Structured Programming (JSP) von K. Kilberth ~-Vieweg Annette Weinert Programmieren mit Ada und C Eine beispielorientierte Gegenüberstellung IJ Vleweg Die Deutsche Bibliothek - CIP-Einheitsaufnahme Weinert, Annette: Progranunieren mit Ada und C: eine beispiel orientierte Gegenüberstellung 1 Annette Weinen. - Braunschweig; Wiesbaden: Vieweg, 1992 ISBN-13: 978-3-528-05240-9 e-ISBN-13: 978-3-322-87797-0 DOI: 10.1007/978-3-322-87797-0 Das in diesem Buch enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Die Autorin und der Verlag übernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht. Alle Rechte vorbehalten © Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, BraunschweiglWiesbaden, 1992 Der Verlag Vieweg ist ein Unternehmen der Verlagsgruppe Bertelsmann International. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustinunungen des Verlags unzulässig und strafbar. Das gilt insbesondere fur VervielflUtigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Umschlagsgestaltung: Schrimpf & Partner, Wiesbaden Gedruckt auf säurefreiem Papier ISBN-13: 978-3-528-05240-9 v Vorwort Das vorliegende Buch wendet sich an Entwickler großer Software-Systeme und will bei Fragen der Auswahl zu benutzender Programmiersprachen hel fen. Dies trifft auch für solche Fälle zu, wo zum ersten Mal die Entscheidung für eine höhere Programmiersprache zu fällen ist. Kenntnisse über Grund konzepte einer blockorientierten, imperativen Programmiersprache mußten jedoch bei der Darstellung vorausgesetzt werden. Das Ziel des Buches ist es, Unterschiede zweier in ihren Grundkonzepten verwandter Programmiersprachen, nämlich der Sprachen C und Ada, auf zuzeigen. Ein solcher Vergleich gewinnt in mehrfacher Hinsicht an Aktua lität. • Die Begeisterung für C nimmt ab, weil die Sprache nicht alle in eine höhere Programmiersprache gesetzten Erwartungen in bezug auf mo derne Softwaretechniken erfüllt. • Ada ist eine neuere Sprache, die gerade im Hinblick auf die Un terstützung moderner Softwaretechniken entworfen worden ist. • Am Markt stehen unterdessen Ada-Programmierumgebungen für Per sonalcomputer zur Verfügung, deren Pr~ise mit denen entsprechender Systeme für C vergleichbar sind. • Neben dem Verteidigungsbereich, in dem die Verwendung von Ada vorgeschrieben ist, haben sich in jüngster Zeit Großprojekte und Orga nisationen, wie die europäische Raumstation Columbus und die ameri kanische Raumfahrtbehörde NASA, für Ada als Entwicklungssprache entschieden. Neben dem Sprachvergleich soll das Buch jedoch auch als einführende Über sicht beider Sprachen dienen, die insbesondere Programmierern, die eine der beiden Sprachen kennen, den Einstieg in die jeweils andere erleichtert. Das Buch ist so aufgebaut, daß es auch als Nachschlagewerk genutzt werden kann. Vorwort VI Ich danke allen, die an der Entstehung dieses Buches beteiligt waren. Herr Dr. Georg Winterstein gab den Anstoß, mich mit diesem Thema zu beschäf tigen. Herr Dr. Jean Ichbiah hat eine frühere Fassung dieser Arbeit gelesen und durch seint' Anregungen viel zu deren Verbesserung beigetragen. Meine Kollegen bei der Firma Alsys GmbH gaben mir durch ihre großen Erfah rungen im Programmieren und mit der Sprache Ada Rückhalt. Besonderer Dank gilt meinen Kollegen Frau Dr. Diana Schmidt und Herrn Wolfgang Herzog sowie Herrn Dr. Reinald Klockenbusch, dem betreuenden Lektor des Vieweg-Verlages, die das Manuskript kritisch gelesen haben. Herr Dr. Pete r Dencker hat mich bei meiner Arbeit immer wieder ermutigt, und so dieses Buch erst möglich gemacht. Nicht zuletzt möchte ich meiner Familie für ihr Verständnis und ihre Unterstützung danken. Karlsruhe, im Februar 1992 Annette Weinert VII Inhalt 1 Einleitung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Entwicklungsgeschichte von C und Ada ......................... 3 2.1 Die Sprache C ............................................. 3 2.2 Die Sprache Ada .......................................... 4 3 Programmieren im Kleinen ...................................... 6 3.1 Lexikalische Elemente..................................... 6 3.2 Ausdrücke und Operatoren............................... 8 3.3 Einfache Anweisungen.................................... 10 3.3.1 Zuweisungen............................................... 10 3.3.2 Unterprogrammaufruf .................................... 12 3.3.3 Sprunganweisungen ....................................... 13 3.3.4 Leere Anweisung .......................................... 13 3.4 Zusammengesetzte Anweisungen......................... 14 3.4.1 Anweisungsfolgen ......................................... 14 3.4.2 Bedingte Ausführung ..................................... 16 3.4.3 Schleifen. . . . .. .. . . .. . .. .. .. .. .. . .. .. .. ... .. .. . . .. . . . .. . . .. . 18 3.5 Typkonzept ............................................... 23 3.5.1 Typvereinbarungen ........................................ 24 3.5.2 Skalare Typen und Zugriffstypen ......................... 25 3.5.3 Zusammengesetzte Typen ................................ 29 3.5.3.1 Verbunde....................................... 29 3.5.3.2 Varianten.. ... .. . . .. .. .. ... . . .. . . . .. . . .. . . . . . .. . 30 3.5.3.3 Eindimensionale Felder ........................ 32 3.5.3.4 Dynamische Felder ............................. 35 3.5.3.5 Mehrdimensionale Felder ...................... 39 3.5.3.6 Dynamische Datenstrukturen ................. 44 3.5.4 Aggregate................................................. 47 3.5.5 Typkonvertierung......................................... 49 3.5.5.1 Implizite Typkonvertierung .................... 49 3.5.5.2 Explizite Typkonvertierung .................... 50 3.5.6 Darstellungsbeschreibungen .............................. 53 3.5.7 Vereinbarungen und Namensräume in C ................. 57 3.6 Ein- und Ausgabe ......................................... 59 3.7 Unterbrechungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Inhalt VIII 3.8 Zusammenfassung ......................................... 62 4 Programmieren im Großen ....................................... 64 4.1 Unterprogramme .... ......................... ............. 64 4.2 Module. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.3 Allgemeine Module ....................................... 71 4.4 Getrennte Übersetzung ................................... 74 4.5 Ausnahmen.. ... .. . . ..... . . .. .. .. ... .. .. . . . . . . . . . . . .. . . . . . . 81 4.6 Bibliotheken und Bibliotheksverwaltung ................. 82 4.7 Beispiel: Eine Hash-Tabelle .............................. 83 4.8 Zusammenfassung ......................................... 85 5 Prozesse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 6 Attribute und Ubersetzerdirektiven ............................. 96 7 Qualität des erzeugten Codes.................................... 101 8 Zukünftige Entwicklungen ....................................... 104 8.1 ANSI C .................................................... 104 8.2 Die objektorientierte Sprache C++ ...................... 105 8.2.1 Objektorientiertes Programmieren ....................... 106 8.2.2 Übersicht über die Sprache C++ ......................... 107 8.3 Ada 9X .................................................... 114 8.3.1 Ada 9X und objektorientiertes Programmieren.......... 116 8.3.2 Ada 9X und Programmieren im Großen................. 117 8.3.3 Ada 9X und Echtzeitprogrammierung ................... 117 8.3.4 Anhänge zur Sprachdefinition von Ada 9X .............. 117 8.4 Zusammenfassung ......................................... 118 9 Schlußbetrachtungen ............................................. 123 Literaturverzeichnis .............................................. 125 A Laufzeiten der Bewertungsprogramme ........................... 129 BI Hash-Tabelle in Ada ............................................. 130 B2 Hash-Tabelle in C ................................................ 138 Sachwortverzeichnis .............................................. 144 1 1 Einleitung Software-Systeme werden immer anspruchsvoller und komplexer. Gleich zeitig steigen auch die Anforderungen bezüglich ihrer Zuverlässigkeit und Wartbarkeit. Die Wahl der für das zu erstellende Software-System geeig neten Programmiersprache kann einen großen Einfluß auf die Erstellungs kosten und die Qualität des Produktes haben. Ziel dieser Arbeit ist es, durch den Vergleich der Sprache C ([KR78]) mit einer neueren höheren Programmiersprache - Ada ([Ada83]) - Fakten zur Auswahl der Sprache bereitzustellen. Die Programmiersprache C ist insbesondere auf Rechnern mit dem Be triebssystem UNIX weit verbreitet. Auf Grund dieser Verbreitung wird C oft für Projekte eingesetzt, für die diese Sprache weder gedacht noch beson ders geeignet ist. Daher hat es schon häufig harte und zum Teil ungerechte Kritik an der Sprache C gegeben. Dabei heißt es meist, C sei zu kryptisch und ermögliche keine strukturierte Programmierung. Zur Beurteilung solcher Kritik und Bestimmung des Anwendungsbereiches muß man C mit anderen universellen, blockorientierten, imperativen, höhe ren Programmiersprachen vergleichen. Die Sprache Ada wurde im Auftrag des amerikanischen Verteidigungsministeriums mit dem Ziel entwickelt, die Software-Kosten kontrollierbarer zu machen. Ada soll gerade strukturierte Programmierung unterstützen und eignet sich daher gut als Vergleichsbasis. Diese Gegenüberstellung der Sprachen Ada und C wendet sich vornehmlich an Entwickler großer Software-Systeme. Nahezu der gesamte Sprachum fang beider Sprachen wird daher - unterstützt durch zahlreiche Beispiele - vorgestellt. Das Buch soll zum einen Informationen für die Auswahl ei ner in einem Projekt einzusetzenden Sprache bereitstellen, zum anderen einem Entwickler, der eine der beiden Sprachen kennt, einen schnellen Ein stieg in die jeweils andere Sprache ermöglichen. Es ersetzt jedoch nicht einführende Darstellungen in diese Sprachen. Hierfür verweisen wir für die Sprache C auf [KR78b] und für Ada auf [Bar89], [HaSt90] und [Sch92] sowie auf [Na91], das besonderes Augenmerk auf die Sprachkonstrukte von Ada zur "Programmierung im Großen" legt. Kenntnisse einer blockorien tierten, imperativen Programmiersprache sind bei der Lektüre hilfreich. 2 1 Einleitung Nach einem kurzen Uberblick über die Entstehungsgeschichte beider Spra chen werden das "Programmieren im Kleinen", die Unterstützung der Ein / Ausgabe, die Ausnahmebehandlung, das "Programmieren im Großen", die Möglichkeiten zur Strukturierung von Software-Systemen, und die Verfüg barkeit von Übersetzern, die Standardisierung der Sprache und die Qualität des erzeugten Codes an Hand einiger Bewertungsprogramme, sogenannter Benchmarks, verglichen. Ein Vergleich der Möglichkeiten zur Programmie rung paralleler Abläufe wird nur an Hand eines größeren Beispiels ange deutet, da die Sprache C hierzu keine eigenen Sprachkonzepte aufweist. In C muß man statt dessen auf Aufrufe des unterliegenden Betriebssystems zurückgreifen. Zum Abschluß wird noch ein kurzer Überblick über Wei terentwicklungen beider Sprachen, über Ada 9X und C++, gegeben. Be sonderer Wert wird bei dem Vergleich auf Unterstützung der Wartbarkeit, Zuverlässigkeit und Portabilität gelegt.

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.