Wer hat c. §1 Allgemeine Informationen zur Sprache. Phasen der Programmgestaltung. Anwendungslebenszyklusmodelle

Mehrere Links und Zitate zu den ersten Compilern C, B, BCPL, AED-0, Bootstrap Compiler; und wie der erste Compiler neuer Sprachen kompiliert wurde



Geschichte des BCPL- und AED-0-Compilers

BCPL wurde Mitte der 1960er Jahre von Martin Richards entworfen, als er das MIT besuchte, und wurde Anfang der 1970er Jahre für mehrere interessante Projekte verwendet, darunter das Betriebssystem OS6 in Oxford und Teile der bahnbrechenden Alto-Arbeit bei Xerox PARC. Wir wurden damit vertraut, weil das MIT CTSS-System, an dem Richards arbeitete, für die Multics-Entwicklung verwendet wurde. Der ursprüngliche BCPL-Compiler wurde von Rudd Canaday und anderen bei Bell Labs sowohl zu Multics als auch zum GE-635 GECOS-System transportiert; Während der letzten Lebensphasen von Multics bei Bell Labs und unmittelbar danach war es die Sprache der Wahl für die Gruppe von Menschen, die sich später mit Unix beschäftigten.

BCPL sollte portabel sein. Portabilität wird durch mehrmaliges Bootstrapping des Laufzeitsystems erreicht, damit es schließlich die Ausgabesprache des Compilers implementiert. Diese Sprache heißt OCODE. OCODE ähnelt einer Assemblersprache auf hoher Ebene … und ist auch so definiert, dass dies der Fall ist in die Maschinensprache der meisten Prozessoren übersetzt werden.…
Im Buch über BCPL definieren Richards und Whitby-Strevens eine zweite Low-Level-Intermediate-Sprache namens Intcode. Intcode ist eine äußerst einfache Sprache, die zum Bootstrap von OCODE verwendet werden kann.… Das BCPL-System wurde in OCODE-Form verteilt.

Um den BCPL-Compiler auszuführen, der in OCODE-Codes verteilt war und Programme mit BCPL in OCODE kompilierte, war daher ein OCODE-Übersetzer erforderlich. Der OCODE-Übersetzer ist in Intcode geschrieben, und Intcode ist bereits einfach genug, um ohne Hochsprachen implementiert zu werden (Einheiten von Tagen für den Assembler und den Intcode-Interpreter). neues Auto; obwohl die Implementierung von Intcode auf BCPL selbst auch möglich ist). Jetzt muss nur noch der erste BCPL-Compiler kompiliert werden, geschrieben in BCPL in OCODE https://www.bell-labs.com/usr/dmr/www/bcpl.html:


Richards erster BCPL-Compiler wurde mit dem 6-Bit-BCD-Zeichensatz auf CTSS geschrieben und kurz darauf angepasst, um die auf den IBM „Golfball“-Terminals 1050 und 2741 verfügbaren Zeichen zu verwenden.

BCPLCTSS enthält die Version des BCPL-Compilers, wie er im Juni 1968 auf CTSS im MIT-Projekt MAC lief. Es enthält auch eine Modifikation dieses Compilers, die unter dem aktuellen 64-Bit-Cintcode-BCPL-System läuft. Klicken Sie auf BCPLCTSS.html, um eine Kopie zu erhalten .
Ich habe den Quellcode aus der IBM-Golfballliste des Compilers aus der Zeit zwischen Februar und Juni 1968 eingegeben.

BCPL ähnelte ursprünglich dieser Teilmenge von CPL, die bei der Codierung des CPL-Compilers verwendet wurde. Ein Überblick über die Hauptfunktionen von BCPL erschien erstmals 1966 in meiner Doktorarbeit, wurde jedoch erst Anfang des folgenden Jahres vollständig entworfen und implementiert, als ich am Project MAC des Massachussetts Institute of Technology arbeitete. Die erste Implementierung wurde in Ross‘ Algol Extended for Design (AED-0) geschrieben, der damals einzigen Sprache, die auf CTSS, dem Time-Sharing-System bei Project MAC, verfügbar war, abgesehen von LISP, das eine Rekursion ermöglichte.

Es gibt etwas Geschichte von AED-0 unter http://groups.csail.mit.edu/mac/projects/studentaut/DR%20HK%20Bio.htm und Compiler Construction. LNCS 21, ISBN 3662215497 Seite 470 (1974) – Der AED-0-Compiler wurde erst gegen Ende 1964 in die AED-0-Sprache umgeschrieben, und 1963 wurde der ursprüngliche AED-0-Compiler für den IBM 7094 (Foto) geschrieben eine nicht näher bezeichnete „Bootstrap“-Compilersprache wurde in Betrieb genommen“


Er begann im Juli 1952 mit dem Programmieren auf dem Whirlwind-Computer des MIT und entwickelte später durch die Zusammenarbeit seines MIT Computer-Aided Design Project mit dem Project Mac des MIT das bahnbrechende „Compatible Time-Sharing System“ (CTSS).… 1962 – 1969: MIT Computer-Aided Designprojekt (mit Project MAC), erste Software-Engineering-Sprache (AED, Algol Extended for Design)

AED-0 ist eine hochentwickelte Sprache des M.I.T. Computergestütztes Designprojekt. Es basiert auf ALGOL60 und zielt darauf ab, eine praktische und effektive Sprache für die Erstellung spezialisierter computergestützter Designsysteme für eine Vielzahl von Anwendungsbereichen bereitzustellen. Der ursprüngliche AED-0-Compiler, der in einer Bootstrap-Compilersprache geschrieben war, wurde 1963 auf einer IBM 709-Maschine betriebsbereit. Anschließend wurde er zum CTSS des M.I.T. verschoben. Projekt MAC läuft auf einem IBM 7094. Dieses System wurde weiterentwickelt, um bis Ende 1964 eine ziemlich stabile Sprache zu erzeugen. Zu diesem Zeitpunkt existierte der Compiler in seiner eigenen Sprache und alle weiteren Systemänderungen und -verbesserungen wurden in AED-0 durchgeführt selbst.


… Teil 1 des Handbuchs beschreibt die eigentliche AED-0-Sprache, einschließlich Beschreibungen mehrerer Unterprogrammpakete, die die Funktionen der Sprache über die von der Algol-60-Syntax abgeleiteten Formen hinaus erweitern.

Die Ideen, die zur Entwicklung des AED führten, werden von Ross in Richard L. Wexelblat beschrieben. Geschichte der Programmiersprachen. Kapitel VI APT-Sitzung. „Ursprünge der apt-Sprache für automatisch programmierte Werkzeuge“, 1978


Ein wenig über AED-0 finden Sie im MAC-Projektbericht „VERBAL AND GRAPHICAL LANGUAGE FOR THE AED SYSTEMI A PROGRESS REPORT“ MAC-TR-4
http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-004.pdf#page=8


DER AED-0-COMPILER
Es stellte sich heraus, dass kein vorhandener Compiler eine effiziente Mechanisierung des Plex-Konzepts ermöglichen konnte, sodass sich das Projekt im Frühjahr 1963 daran machte, einen Compiler zu konstruieren, der die für das Computer-Aided Design System selbst vorgeschlagenen Techniken als ersten großen Schritt zur Verwirklichung des Systems einbezog Ziele des Projekts. Zuvor wurde die Plex-Programmierung mit einem experimentellen Compiler namens Bootstrap Compiler durchgeführt, der ebenfalls vom Projekt geschrieben wurde, sowohl für Bildungszwecke als auch als experimentelles Werkzeug. Der AED-0-Compiler wurde ursprünglich in der Bootstrap-Compiler-Sprache geschrieben, aber vor kurzem wurde das resultierende System vom binären Maschinencode zurück in die FAP-Assemblersprache zerlegt und es wurden zahlreiche Änderungen und Verbesserungen am AED-0-Compiler vorgenommen, so dass er jetzt verfügbar ist Es ist als öffentlicher Befehl im Project MAC Time-Sharing System verfügbar. Die AED-0-Sprache besteht derzeit aus Algol-60, wobei einige Funktionen weggelassen und andere für die Plex-Programmierung hinzugefügt wurden. Der Compiler ist sehr effizient und flexibel und kompiliert in den meisten Fällen sehr guten Maschinencode. Der Compiler basiert direkt auf den oben beschriebenen Plex-Konzepten.

Zur Bootstrap-Compiler-Sprache gibt es noch weniger Informationen als zu AED-0. Es gibt separate Erwähnungen in http://www.dtic.mil/dtic/tr/fulltext/u2/681342.pdf Project MAC Progress Report IV (Juli 1966 bis Juli 1967) und ein Interview mit Ross
http://conservancy.umn.edu/bitstream/handle/11299/107611/oh178dtr.pdf?sequence=1 Ein Interview mit DOUGLAS T. ROSS, 1989:


… AED-Freigaben, und auch von dem Anfangs war AED ein maschinenunabhängiger Software-Engineering-Auftrag. Tatsächlich haben wir parallel mit dem 709 und dem TX-0 begonnen, bevor überhaupt an MAC gedacht wurde. Das war eigentlich der Bootstrap-Compiler, in dem wir AED zum ersten Mal geschrieben haben. Dann war es der erste AED-Compiler, den wir hier innerhalb von zwei Wochen nach der Eröffnung des Projekts MAC in Betrieb genommen hatten.…
Ich bin von der theoretisch schönen und sauberen Art und Weise, wie wir ursprünglich AED-Code generiert haben, abgerückt und habe das gesamte Compiler-Backend neu gestalten lassen. Wir führten eine sogenannte Demontage durch. Wir nahmen den Maschinencode des Compilers selbst (im Wesentlichen nur eine Bitmap des Speichers) und gingen zurück, als ob er in der FAP-Assemblersprache geschrieben worden wäre, kamen dann wieder heraus und setzten das Ganze wieder zusammen, so dass es so wäre einfacher, Patches durchzuführen. Dann haben wir den gesamten Codegenerierungsteil des Compilers geändert, um den Standard (das sogenannte BBS-Format der maschinensprachlichen Darstellung) zu generieren, sodass alles, was von unserem Compiler kam, in die Standards passte, die sie für Project MAC übernommen hatten .

Nicht alle Compiler haben als Compiler angefangen:
http://en.wikipedia.org/wiki/History_of_compiler_construction#First_compilers
http://en.wikipedia.org/wiki/Bootstrapping_(compilers%29


Der erste Compiler wurde 1952 von Grace Hopper für die A-0-Systemsprache geschrieben. Der Begriff Compiler wurde von Hopper geprägt. Der A-0 fungierte eher als Loader oder Linker als nach der modernen Vorstellung eines Compilers. Der erste Autocode und sein Compiler wurden 1952 von Alick Glennie für den Mark-1-Computer an der Universität Manchester entwickelt und werden von manchen als die erste kompilierte Programmiersprache angesehen. Dem FORTRAN-Team unter der Leitung von John W. Backus bei IBM wird allgemein zugeschrieben, dass es 1957 den ersten vollständigen Compiler eingeführt hat. Die Erstellung des ersten FORTRAN-Compilers dauerte 18 Personenjahre.
Der erste ALGOL 58-Compiler wurde Ende 1958 von Friedrich L. Bauer, Hermann Bottenbruch, Heinz Rutishauser und Klaus Samelson für den Z22-Computer fertiggestellt. Bauer et al. hatte in den vergangenen Jahren an der Compilertechnologie für die Sequentielle Formelübersetzung gearbeitet.…
Der COBOL-Compiler für den UNIVAC II war wahrscheinlich der erste, der von einem Team unter der Leitung von Grace Hopper in einer Hochsprache, nämlich FLOW-MATIC, geschrieben wurde.

Und gleich unten sehen Sie ein Beispiel für einen Sprachcompiler, der in derselben Sprache geschrieben und auf dem Sprachinterpreter gestartet wurde:


Das Erstellen eines selbsthostenden Compilers ist ein Bootstrapping-Problem, d. h. Der erste derartige Compiler für eine Sprache muss entweder handgeschriebener Maschinencode sein oder von einem Compiler kompiliert werden, der in einer anderen Sprache geschrieben ist, oder kompiliert werden, indem der Compiler in einem Interpreter ausgeführt wird.…
Ein weiterer früher selbsthostender Compiler wurde 1962 von Tim Hart und Mike Levin am MIT für Lisp geschrieben. Sie schrieben einen Lisp-Compiler in Lisp und testeten ihn in einem vorhandenen Lisp-Interpreter. Nachdem sie den Compiler so weit verbessert hatten, dass er seinen eigenen Quellcode kompilieren konnte, war er selbsthostend.…
Forth ist ein Beispiel für einen selbsthostenden Compiler. Die Selbstkompilierungs- und Cross-Kompilierungsfunktionen von Forth werden häufig mit Metakompilierung und Metacompilern verwechselt.

Die Gründe für die Entwicklung einer neuen Programmiersprache. Die Hauptunterschiede zwischen C++ und anderen bekannte Sprachen, seine positiven und negativen Eigenschaften.

C++ ist eine der beliebtesten Programmiersprachen für die Entwicklung Software, das prozedurale Programmierung (bei der sequentiell ausgeführte Befehle zu Unterprogrammen zusammengestellt werden können), objektorientierte Programmierung (ein Codierungsstil, der die Gruppierung von Aufgaben in Klassen ermöglicht) und generische Programmierung (Schreiben von Code, der mit Objekten verschiedener Typen wiederverwendet werden kann) unterstützt. Kombination der Eigenschaften von Hoch- und Niedrigsprachen. C++ wird verwendet, um Programme zu erstellen, die bestimmte Aufgaben in verschiedenen Bereichen des menschlichen Lebens ausführen sollen: Spiele, Treiber usw. Betriebssysteme Und andere Dinge. Es basiert auf der Sprache C. Aufgrund der engen Verbindung funktionieren viele C-Programme ordnungsgemäß mit dem C++-Compiler.

Der Name C++ stammt von der Programmiersprache C, in der der unäre Operator ++ eine Erhöhung des Wertes einer Variablen um 1 bezeichnet. Zuerst hieß diese Sprache C mit Klassen, dann wurde sie als C++ bekannt. Nach dem Buchstaben C wurden genau zwei Pluszeichen hinzugefügt, da man in der Sprache C einen Syntaxfehler bildet und auch dieser Name bereits vergeben war.

C++ entstand in den frühen 1980er Jahren. Björn Stroustrup, ein Mitarbeiter der Bell Laboratories, verbesserte die C-Sprache entsprechend seinen Bedürfnissen. Das heißt, er hatte ursprünglich nicht vor, eine neue Sprache zu schaffen. Doch in den späten 70er Jahren begann der Programmierer mit der Arbeit an Problemen in der Warteschlangentheorie (bei der Modellierung von Telefonanrufen), er entdeckte, dass Versuche, die damals existierenden Modellierungssprachen wie Simula und BCPL zu verwenden, wirkungslos waren und die Verwendung hocheffizienter Maschinen erforderlich war Sprachen war zu schwierig. Somit verfügt die Simula-Sprache über nützliche Fähigkeiten für die Entwicklung großer Software, aber alles funktioniert zu langsam, und die BCPL-Sprache ist ziemlich schnell, kommt aber den Low-Level-Sprachen sehr nahe und eignet sich nicht für die Entwicklung großer Programme.

Laut Stroustrup war die C-Sprache die beste Grundlage für die Entwicklung einer neuen Programmiersprache, da sie universell, einfach, portabel, schnell und funktional bei der Ausführung vieler Aufgaben ist und mit der UNIX-Programmierumgebung kompatibel ist. Stroustrup fügte C die Möglichkeit hinzu, mit Datentypen (Klassen) und Objekten zu arbeiten. Dank der Geschwindigkeit von C konnten praktische Modellierungsprobleme problemlos in einem Bruchteil der Entwicklungs- und Rechenzeit gelöst werden. Zunächst wurden C Datentypen, deren Vererbung, Typprüfung und Standardargumente hinzugefügt. Die ersten Versionen der Sprache, ursprünglich C mit Klassen genannt, wurden 1980 verfügbar. Anschließend erstellte Stroustrup den cfront-Compiler, der C++-Code in einfachen C-Code umwandelte und ihn so sofort in der Praxis verwendbar machte.

Die Sprache ist unglaublich beliebt geworden. Bis 1983 wurden verschiedene Konstanten, virtuelle Funktionen, Referenzen, Funktions- und Operatorüberladung, Benutzerkontrolle über die Verwaltung des freien Speichers, verbesserte Typprüfung usw. hinzugefügt ein neuer Stil Kommentare //. Im Jahr 1985 wurde die Programmiersprache C++ veröffentlicht; dies war die erste Beschreibung der Sprache, was aufgrund des Fehlens eines offiziellen Standards sehr wichtig war. 1989 wurde die zweite Version von C mit neuen Vererbungsfähigkeiten, Funktionen und Klassen veröffentlicht. 1998 wurde der internationale Standard für die Sprache C++ verabschiedet. Es ist kostenlos, niemand hat das Recht, es zu besitzen.

Der C++-Standard besteht aus zwei Hauptteilen: einer Beschreibung der Standardsammlung von Routinen oder Objekten, die zum Entwickeln von Programmen verwendet werden, und einer Beschreibung des Kerns der Sprache. Darüber hinaus gibt es eine große Anzahl nicht standardmäßiger C++-Bibliotheken. Viele C-Bibliotheken können in C++-Programmen verwendet werden.

Die Neuerungen von C++ im Vergleich zu C sind:

Unterstützung für objektorientierte Programmierung;

Generische Programmierunterstützung;

Neue Datentypen;

Ausnahmen bilden die Reaktionen des Programms auf Fehler;

Namespaces (Repositorys zum Gruppieren eindeutiger Bezeichner);

Integrierte Funktionen;

Überlastung des Operators (das Vorhandensein mehrerer in einem Bereich). Verschiedene Optionen Anwendungsbetreiber);

Ergänzungen zur Standardbibliothek.

Auch Java und C++ werden oft als Sprachen verglichen, die trotz großer Unterschiede auf allen Ebenen die C-Syntax erben. Java wird in einem bestimmten Industriesektor eingesetzt: eine sichere Sprache mit geringer Eintrittsbarriere für die Entwicklung breit gefächerter Marktanwendungen mit hoher Anpassungsfähigkeit an andere Umgebungen. C++ erhebt den Anspruch, in allen Aufgabenbereichen für alle Kategorien von Programmierern universell einsetzbar zu sein, erfüllt jedoch die Anforderungen keines der deklarierten Anwendungsbereiche vollständig. Die C++-Kernbibliothek verfügt im Vergleich zu Java über weniger Ressourcen, bietet aber die Freiheit, Bibliotheken von Drittanbietern auszuwählen.

Die Weiterentwicklung der Sprache erfolgt durch Ergänzungen bestehender Standardbibliotheken. Der zukünftige Plan für C++ besteht darin, die generische Programmierung zu erweitern.

LITERATUR

1. https://ru.wikipedia.org/wiki/C%2B%2Bhttp://articles.org.ru/web/specperl.php

2. Björn Stroustrup. Programmiersprache C++. Sonderausgabe = Die Programmiersprache C++. Sonderausgabe. M.: Binom-Press, 2007. 1104 S. ISBN 5-7989-0223-4

C++ ist eine kompilierte Allzweck-Programmiersprache, die die Eigenschaften von High-Level- und Low-Level-Programmiersprachen kombiniert. Im Vergleich zu ihrem Vorgänger, der Programmiersprache C, wird größter Wert auf die Unterstützung der objektorientierten und generischen Programmierung gelegt. Der Name „C++-Programmiersprache“ stammt von der Programmiersprache C, in der der unäre Operator ++ das Inkrement einer Variablen bezeichnet.

Die Programmiersprache C++ wird häufig für die Softwareentwicklung verwendet. Nämlich die Erstellung verschiedener Anwendungsprogramme, die Entwicklung von Betriebssystemen, Gerätetreibern sowie Videospielen und vieles mehr. Es wurde in den frühen 1980er Jahren von Björn Stroustrup geschaffen. Für seine eigenen Bedürfnisse entwickelte er eine Reihe von Verbesserungen der Programmiersprache C. diese. Ursprünglich gab es keine Pläne, die Programmiersprache C++ zu entwickeln.

Es unterstützt Programmierparadigmen wie prozedurale Programmierung, objektorientierte Programmierung, generische Programmierung, bietet Modularität, separate Kompilierung, Ausnahmebehandlung, Datenabstraktion, Deklaration von Objekttypen (Klassen) und virtuelle Funktionen.

Der resultierende Sprachname stammt vom C++-Inkrementoperator für unäre Postfixe (Erhöhen des Werts einer Variablen um eins). Der Name C+ wurde nicht verwendet, da es sich um einen Syntaxfehler in C handelte und auch weil der Name von einer anderen Sprache belegt war. Die Sprache wurde auch nicht D genannt, da sie „eine Erweiterung von C ist und nicht versucht, Probleme durch Entfernen von Elementen von C zu beheben“.

Vorteile der Sprache:

1. Skalierbarkeit. Programme werden in C++ für die unterschiedlichsten Plattformen und Systeme entwickelt.

2. Fähigkeit, auf niedrigem Niveau mit Speicher, Adressen und Ports zu arbeiten.

3. Die Fähigkeit, verallgemeinerte Algorithmen für verschiedene Datentypen, deren Spezialisierung und Berechnungen in der Kompilierungsphase mithilfe von Vorlagen zu erstellen.

4. Plattformübergreifend. Compiler verfügbar für große Menge Plattformen werden Programme in C++ für die unterschiedlichsten Plattformen und Systeme entwickelt.

5. Effizienz. Die Sprache soll dem Programmierer maximale Kontrolle über alle Aspekte der Programmstruktur und Ausführungsreihenfolge geben.

Nachteile der Sprache:

1. Das Vorhandensein vieler Funktionen, die gegen die Prinzipien der Typsicherheit verstoßen, führt dazu, dass sich leicht subtile Fehler in C++-Programme einschleichen können.

2. Schlechte Unterstützung für Modularität. Das Anschließen der Schnittstelle eines externen Moduls über das Einfügen einer Header-Datei (#include) durch den Präprozessor verlangsamt die Kompilierung erheblich, wenn eine große Anzahl von Modulen angeschlossen wird.

3. Die Sprache C++ ist schwer zu erlernen und zu kompilieren.

4. Einige Typkonvertierungen sind nicht intuitiv. Insbesondere führt eine Operation an einer vorzeichenlosen und einer vorzeichenbehafteten Zahl zu einem vorzeichenlosen Ergebnis.

5. Manche Leute halten das Fehlen eines integrierten Garbage-Collection-Systems für einen Nachteil der C++-Sprache. Andererseits verfügt C++ über genügend Tools, um die Verwendung gefährlicher Zeiger nahezu zu eliminieren. Es gibt keine grundlegenden Probleme bei der Implementierung und Verwendung der Garbage Collection (auf Bibliotheksebene, nicht auf Sprachebene). Das Fehlen einer integrierten Speicherbereinigung ermöglicht es dem Benutzer, seine eigene Ressourcenverwaltungsstrategie zu wählen.

Programmiersprache C++

Letzte Aktualisierung: 28.08.2017

Die Programmiersprache C++ ist eine statisch typisierte, kompilierte Allzweck-Programmiersprache auf hoher Ebene, die sich zum Erstellen einer Vielzahl von Anwendungen eignet. C++ ist heute eine der beliebtesten und am weitesten verbreiteten Sprachen.

Es hat seine Wurzeln in der Sprache C, die 1969–1973 in den Bell Labs vom Programmierer Dennis Ritchie entwickelt wurde. In den frühen 1980er Jahren entwickelte der dänische Programmierer Bjarne Stroustrup, der damals bei Bell Labs arbeitete, C++ als Erweiterung der C-Sprache. Tatsächlich hat C++ anfangs lediglich die C-Sprache um einige objektorientierte Programmierfunktionen ergänzt. Und deshalb nannte Stroustrup es selbst zunächst „C mit Klassen“.

Anschließend neue Sprache begann an Popularität zu gewinnen. Es wurden neue Funktionen hinzugefügt, die es nicht nur zu einer Ergänzung von C, sondern zu einer völlig neuen Programmiersprache machten. Infolgedessen wurde „C mit Klassen“ in C++ umbenannt. Und von da an begannen sich beide Sprachen unabhängig voneinander zu entwickeln.

C++ ist eine leistungsstarke Sprache, die umfangreiche Speicherfunktionen von C erbt. Daher findet C++ häufig Verwendung in der Systemprogrammierung, insbesondere bei der Erstellung von Betriebssystemen, Treibern, verschiedenen Dienstprogrammen, Antivirenprogrammen usw. Übrigens, Windows-Betriebssystem hauptsächlich geschrieben in C++. Die Verwendung dieser Sprache ist jedoch nicht auf die Systemprogrammierung beschränkt. C++ kann in Programmen jeder Ebene verwendet werden, bei denen Geschwindigkeit und Leistung wichtig sind. Es wird häufig zum Erstellen grafischer Anwendungen und verschiedener Anwendungsprogramme verwendet. Es wird auch besonders oft verwendet, um Spiele mit reichhaltiger, reichhaltiger Visualisierung zu erstellen. Darüber hinaus gewinnt in letzter Zeit die mobile Richtung an Dynamik, wo auch C++ seine Anwendung gefunden hat. Und selbst in der Webentwicklung können Sie mit C++ Webanwendungen oder einige Hilfsdienste erstellen, die Webanwendungen bedienen. Im Allgemeinen ist C++ eine weit verbreitete Sprache, in der Sie nahezu jede Art von Programm erstellen können.

C++ ist eine kompilierte Sprache, was bedeutet, dass der Compiler den C++-Quellcode in eine ausführbare Datei übersetzt, die eine Reihe von Maschinenanweisungen enthält. Allerdings haben unterschiedliche Plattformen ihre eigenen Besonderheiten, sodass kompilierte Programme nicht einfach von einer Plattform auf eine andere übertragen und dort ausgeführt werden können. Auf der Quellcodeebene sind C++-Programme jedoch weitgehend portierbar, sofern nicht einige betriebssystemspezifische Funktionen verwendet werden. Und die Verfügbarkeit von Compilern, Bibliotheken und Entwicklungstools für fast alle gängigen Plattformen ermöglicht es Ihnen, denselben C++-Quellcode in Anwendungen für diese Plattformen zu kompilieren.

Im Gegensatz zu C können Sie mit der Sprache C++ Anwendungen in einem objektorientierten Stil schreiben und ein Programm als Sammlung von Klassen und Objekten darstellen, die miteinander interagieren. Dies vereinfacht die Erstellung großer Anwendungen.

Hauptstadien der Entwicklung

1979-80 entwickelte Bjarne Stroustrup eine Erweiterung der C-Sprache – „C with Classes“. 1983 wurde die Sprache in C++ umbenannt.

Im Jahr 1985 erschien die erste kommerzielle Version der Sprache C++ sowie die Erstausgabe des Buches „The C++ Programming Language“, das die Erstbeschreibung dieser Sprache in Ermangelung eines offiziellen Standards darstellte.

Wurde 1989 veröffentlicht eine neue Version C++ 2.0-Sprache, die eine Reihe neuer Funktionen enthielt. Danach entwickelte sich die Sprache bis 2011 relativ langsam. Doch gleichzeitig wurde 1998 der erste Versuch unternommen, die Sprache durch die ISO-Organisation (International Organization for Standardization) zu standardisieren. Der erste Standard hieß ISO/IEC 14882:1998, kurz C++98. Anschließend wurde im Jahr 2003 eine neue Version des C++03-Standards veröffentlicht.

Im Jahr 2011 wurde der neue C++11-Standard veröffentlicht, der viele Ergänzungen enthielt und die C++-Sprache um eine Vielzahl neuer Funktionalitäten bereicherte. Daraufhin wurde 2014 eine kleine Ergänzung des Standards, auch bekannt als C++14, veröffentlicht. Und eine weitere wichtige Veröffentlichung der Sprache ist für 2017 geplant.

Compiler und Entwicklungsumgebungen

Um Programme in C++ zu entwickeln, benötigen Sie einen Compiler – er übersetzt den Quellcode in C++ in eine ausführbare Datei, die Sie dann ausführen können. Aber im Moment gibt es viele verschiedene Compiler. Sie können sich in verschiedenen Aspekten unterscheiden, insbesondere in der Umsetzung von Standards. Eine grundlegende Liste von Compilern für C++ finden Sie auf Wikipedia. Für die Entwicklung wird empfohlen, diejenigen Compiler auszuwählen, die die neuesten Standards entwickeln und implementieren. Daher werden wir in diesem Tutorial hauptsächlich den frei verfügbaren g++-Compiler verwenden, der vom GNU-Projekt entwickelt wurde.

Sie können zum Erstellen von Programmen auch IDEs wie Visual Studio, Netbeans, Eclipse, Qt usw. verwenden.

Mehrere Links und Zitate zu den ersten Compilern C, B, BCPL, AED-0, Bootstrap Compiler; und wie der erste Compiler neuer Sprachen kompiliert wurde



Geschichte des BCPL- und AED-0-Compilers

BCPL wurde Mitte der 1960er Jahre von Martin Richards entworfen, als er das MIT besuchte, und wurde Anfang der 1970er Jahre für mehrere interessante Projekte verwendet, darunter das Betriebssystem OS6 in Oxford und Teile der bahnbrechenden Alto-Arbeit bei Xerox PARC. Wir wurden damit vertraut, weil das MIT CTSS-System, an dem Richards arbeitete, für die Multics-Entwicklung verwendet wurde. Der ursprüngliche BCPL-Compiler wurde von Rudd Canaday und anderen bei Bell Labs sowohl zu Multics als auch zum GE-635 GECOS-System transportiert; Während der letzten Lebensphasen von Multics bei Bell Labs und unmittelbar danach war es die Sprache der Wahl für die Gruppe von Menschen, die sich später mit Unix beschäftigten.

BCPL sollte portabel sein. Portabilität wird durch mehrmaliges Bootstrapping des Laufzeitsystems erreicht, damit es schließlich die Ausgabesprache des Compilers implementiert. Diese Sprache heißt OCODE. OCODE ähnelt einer Assemblersprache auf hoher Ebene … und ist auch so definiert, dass dies der Fall ist in die Maschinensprache der meisten Prozessoren übersetzt werden.…
Im Buch über BCPL definieren Richards und Whitby-Strevens eine zweite Low-Level-Intermediate-Sprache namens Intcode. Intcode ist eine äußerst einfache Sprache, die zum Bootstrap von OCODE verwendet werden kann.… Das BCPL-System wurde in OCODE-Form verteilt.

Um den BCPL-Compiler auszuführen, der in OCODE-Codes verteilt war und Programme mit BCPL in OCODE kompilierte, war daher ein OCODE-Übersetzer erforderlich. Der OCODE-Übersetzer ist in Intcode geschrieben, und Intcode ist bereits einfach genug, um ohne Hochsprachen implementiert zu werden (ein paar Tage für den Assembler und den Intcode-Interpreter auf einem neuen Computer; obwohl die Implementierung von Intcode auf BCPL selbst auch möglich ist). Jetzt muss nur noch der erste BCPL-Compiler kompiliert werden, geschrieben in BCPL in OCODE https://www.bell-labs.com/usr/dmr/www/bcpl.html:


Richards erster BCPL-Compiler wurde mit dem 6-Bit-BCD-Zeichensatz auf CTSS geschrieben und kurz darauf angepasst, um die auf den IBM „Golfball“-Terminals 1050 und 2741 verfügbaren Zeichen zu verwenden.

BCPLCTSS enthält die Version des BCPL-Compilers, wie er im Juni 1968 auf CTSS im MIT-Projekt MAC lief. Es enthält auch eine Modifikation dieses Compilers, die unter dem aktuellen 64-Bit-Cintcode-BCPL-System läuft. Klicken Sie auf BCPLCTSS.html, um eine Kopie zu erhalten .
Ich habe den Quellcode aus der IBM-Golfballliste des Compilers aus der Zeit zwischen Februar und Juni 1968 eingegeben.

BCPL ähnelte ursprünglich dieser Teilmenge von CPL, die bei der Codierung des CPL-Compilers verwendet wurde. Ein Überblick über die Hauptfunktionen von BCPL erschien erstmals 1966 in meiner Doktorarbeit, wurde jedoch erst Anfang des folgenden Jahres vollständig entworfen und implementiert, als ich am Project MAC des Massachussetts Institute of Technology arbeitete. Die erste Implementierung wurde in Ross‘ Algol Extended for Design (AED-0) geschrieben, der damals einzigen Sprache, die auf CTSS, dem Time-Sharing-System bei Project MAC, verfügbar war, abgesehen von LISP, das eine Rekursion ermöglichte.

Es gibt etwas Geschichte von AED-0 unter http://groups.csail.mit.edu/mac/projects/studentaut/DR%20HK%20Bio.htm und Compiler Construction. LNCS 21, ISBN 3662215497 Seite 470 (1974) – Der AED-0-Compiler wurde erst gegen Ende 1964 in die AED-0-Sprache umgeschrieben, und 1963 wurde der ursprüngliche AED-0-Compiler für den IBM 7094 (Foto) geschrieben eine nicht näher bezeichnete „Bootstrap“-Compilersprache wurde in Betrieb genommen“


Er begann im Juli 1952 mit dem Programmieren auf dem Whirlwind-Computer des MIT und entwickelte später durch die Zusammenarbeit seines MIT Computer-Aided Design Project mit dem Project Mac des MIT das bahnbrechende „Compatible Time-Sharing System“ (CTSS).… 1962 – 1969: MIT Computer-Aided Designprojekt (mit Project MAC), erste Software-Engineering-Sprache (AED, Algol Extended for Design)

AED-0 ist eine hochentwickelte Sprache des M.I.T. Computergestütztes Designprojekt. Es basiert auf ALGOL60 und zielt darauf ab, eine praktische und effektive Sprache für die Erstellung spezialisierter computergestützter Designsysteme für eine Vielzahl von Anwendungsbereichen bereitzustellen. Der ursprüngliche AED-0-Compiler, der in einer Bootstrap-Compilersprache geschrieben war, wurde 1963 auf einer IBM 709-Maschine betriebsbereit. Anschließend wurde er zum CTSS des M.I.T. verschoben. Projekt MAC läuft auf einem IBM 7094. Dieses System wurde weiterentwickelt, um bis Ende 1964 eine ziemlich stabile Sprache zu erzeugen. Zu diesem Zeitpunkt existierte der Compiler in seiner eigenen Sprache und alle weiteren Systemänderungen und -verbesserungen wurden in AED-0 durchgeführt selbst.


… Teil 1 des Handbuchs beschreibt die eigentliche AED-0-Sprache, einschließlich Beschreibungen mehrerer Unterprogrammpakete, die die Funktionen der Sprache über die von der Algol-60-Syntax abgeleiteten Formen hinaus erweitern.

Die Ideen, die zur Entwicklung des AED führten, werden von Ross in Richard L. Wexelblat beschrieben. Geschichte der Programmiersprachen. Kapitel VI APT-Sitzung. „Ursprünge der apt-Sprache für automatisch programmierte Werkzeuge“, 1978


Ein wenig über AED-0 finden Sie im MAC-Projektbericht „VERBAL AND GRAPHICAL LANGUAGE FOR THE AED SYSTEMI A PROGRESS REPORT“ MAC-TR-4
http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-004.pdf#page=8


DER AED-0-COMPILER
Es stellte sich heraus, dass kein vorhandener Compiler eine effiziente Mechanisierung des Plex-Konzepts ermöglichen konnte, sodass sich das Projekt im Frühjahr 1963 daran machte, einen Compiler zu konstruieren, der die für das Computer-Aided Design System selbst vorgeschlagenen Techniken als ersten großen Schritt zur Verwirklichung des Systems einbezog Ziele des Projekts. Zuvor wurde die Plex-Programmierung mit einem experimentellen Compiler namens Bootstrap Compiler durchgeführt, der ebenfalls vom Projekt geschrieben wurde, sowohl für Bildungszwecke als auch als experimentelles Werkzeug. Der AED-0-Compiler wurde ursprünglich in der Bootstrap-Compiler-Sprache geschrieben, aber vor kurzem wurde das resultierende System vom binären Maschinencode zurück in die FAP-Assemblersprache zerlegt und es wurden zahlreiche Änderungen und Verbesserungen am AED-0-Compiler vorgenommen, so dass er jetzt verfügbar ist Es ist als öffentlicher Befehl im Project MAC Time-Sharing System verfügbar. Die AED-0-Sprache besteht derzeit aus Algol-60, wobei einige Funktionen weggelassen und andere für die Plex-Programmierung hinzugefügt wurden. Der Compiler ist sehr effizient und flexibel und kompiliert in den meisten Fällen sehr guten Maschinencode. Der Compiler basiert direkt auf den oben beschriebenen Plex-Konzepten.

Zur Bootstrap-Compiler-Sprache gibt es noch weniger Informationen als zu AED-0. Es gibt separate Erwähnungen in http://www.dtic.mil/dtic/tr/fulltext/u2/681342.pdf Project MAC Progress Report IV (Juli 1966 bis Juli 1967) und ein Interview mit Ross
http://conservancy.umn.edu/bitstream/handle/11299/107611/oh178dtr.pdf?sequence=1 Ein Interview mit DOUGLAS T. ROSS, 1989:


… AED-Releases, und auch von Anfang an war AED ein maschinenunabhängiger Software-Engineering-Auftrag. Tatsächlich haben wir parallel mit dem 709 und dem TX-0 begonnen, bevor überhaupt an MAC gedacht wurde. Das war eigentlich der Bootstrap-Compiler, in dem wir AED zum ersten Mal geschrieben haben. Dann war es der erste AED-Compiler, den wir hier innerhalb von zwei Wochen nach der Eröffnung des Projekts MAC in Betrieb genommen hatten.…
Ich bin von der theoretisch schönen und sauberen Art und Weise, wie wir ursprünglich AED-Code generiert haben, abgerückt und habe das gesamte Compiler-Backend neu gestalten lassen. Wir führten eine sogenannte Demontage durch. Wir nahmen den Maschinencode des Compilers selbst (im Wesentlichen nur eine Bitmap des Speichers) und gingen zurück, als ob er in der FAP-Assemblersprache geschrieben worden wäre, kamen dann wieder heraus und setzten das Ganze wieder zusammen, so dass es so wäre einfacher, Patches durchzuführen. Dann haben wir den gesamten Codegenerierungsteil des Compilers geändert, um den Standard (das sogenannte BBS-Format der maschinensprachlichen Darstellung) zu generieren, sodass alles, was von unserem Compiler kam, in die Standards passte, die sie für Project MAC übernommen hatten .

Nicht alle Compiler haben als Compiler angefangen:
http://en.wikipedia.org/wiki/History_of_compiler_construction#First_compilers
http://en.wikipedia.org/wiki/Bootstrapping_(compilers%29


Der erste Compiler wurde 1952 von Grace Hopper für die A-0-Systemsprache geschrieben. Der Begriff Compiler wurde von Hopper geprägt. Der A-0 fungierte eher als Loader oder Linker als nach der modernen Vorstellung eines Compilers. Der erste Autocode und sein Compiler wurden 1952 von Alick Glennie für den Mark-1-Computer an der Universität Manchester entwickelt und werden von manchen als die erste kompilierte Programmiersprache angesehen. Dem FORTRAN-Team unter der Leitung von John W. Backus bei IBM wird allgemein zugeschrieben, dass es 1957 den ersten vollständigen Compiler eingeführt hat. Die Erstellung des ersten FORTRAN-Compilers dauerte 18 Personenjahre.
Der erste ALGOL 58-Compiler wurde Ende 1958 von Friedrich L. Bauer, Hermann Bottenbruch, Heinz Rutishauser und Klaus Samelson für den Z22-Computer fertiggestellt. Bauer et al. hatte in den vergangenen Jahren an der Compilertechnologie für die Sequentielle Formelübersetzung gearbeitet.…
Der COBOL-Compiler für den UNIVAC II war wahrscheinlich der erste, der von einem Team unter der Leitung von Grace Hopper in einer Hochsprache, nämlich FLOW-MATIC, geschrieben wurde.

Und gleich unten sehen Sie ein Beispiel für einen Sprachcompiler, der in derselben Sprache geschrieben und auf dem Sprachinterpreter gestartet wurde:


Das Erstellen eines selbsthostenden Compilers ist ein Bootstrapping-Problem, d. h. Der erste derartige Compiler für eine Sprache muss entweder handgeschriebener Maschinencode sein oder von einem Compiler kompiliert werden, der in einer anderen Sprache geschrieben ist, oder kompiliert werden, indem der Compiler in einem Interpreter ausgeführt wird.…
Ein weiterer früher selbsthostender Compiler wurde 1962 von Tim Hart und Mike Levin am MIT für Lisp geschrieben. Sie schrieben einen Lisp-Compiler in Lisp und testeten ihn in einem vorhandenen Lisp-Interpreter. Nachdem sie den Compiler so weit verbessert hatten, dass er seinen eigenen Quellcode kompilieren konnte, war er selbsthostend.…
Forth ist ein Beispiel für einen selbsthostenden Compiler. Die Selbstkompilierungs- und Cross-Kompilierungsfunktionen von Forth werden häufig mit Metakompilierung und Metacompilern verwechselt.