Heim > Backend-Entwicklung > C++ > Geschichte von C und C. Teil eins: Entstehung und Standardisierung der C-Sprache. C mit Klassen wird zu C

Geschichte von C und C. Teil eins: Entstehung und Standardisierung der C-Sprache. C mit Klassen wird zu C

Linda Hamilton
Freigeben: 2024-11-25 10:36:10
Original
255 Leute haben es durchsucht

C und C sind ikonische Sprachen, in denen eine große Menge Code geschrieben wird. Welchen Weg haben sie zurückgelegt, um solche zu werden? Dieser Artikel behandelt die Entstehung von C und den Beginn seiner offiziellen Standardisierung. Außerdem erfahren Sie etwas über C mit Klassen und seine eventuelle Umwandlung in C.

History of C and C  . Part one: emergence and standardization of C language. C with Classes becomes C

1969 – 1973. C wird in die Welt geboren

1969. Apollo 11 besucht den Mond. AT&T Bell Labs entwickelt eine Sprache, die wir heute alle als C kennen. Derzeit befindet sich ein Unix-Betriebssystem in einem frühen Entwicklungsstadium.

Tatsächlich hat die C-Sprache die Hauptfunktionen von der B-Sprache übernommen. Sowie der Ursprung seines Namens. Unix war ursprünglich in Assemblersprache implementiert und verfügte nicht einmal über einen Compiler für Hochsprachen. Die Entwicklung dieses Projekts ist einer der Gründe für die Entwicklung der C-Sprache.

1971 wurden der Compiler und einige Dienstprogramme in C in die zweite Version von Unix aufgenommen. Und 1973 wurde der Unix-Kernel größtenteils in C geschrieben.

1978. Das Buch wird zur ersten Spezifikation

Dennis Ritchie und Brian Kernighan veröffentlichten am 22. Februar 1978 die erste Ausgabe von „The C Programming Language“. Dieses Buch war das erste allgemein verfügbare Material zur C-Sprache.

History of C and C  . Part one: emergence and standardization of C language. C with Classes becomes C

Abbildung N1 – Cover der ersten Ausgabe des Buches „C Programming Language“

Vom Zeitpunkt seiner Veröffentlichung bis zur ersten offiziellen Sprachzertifizierung ist es zum Standard für die C-Entwicklung geworden. Der „Standard“ hieß K&R – nach den Anfangsbuchstaben der Nachnamen der Autoren.

In diesem Buch wurde das Programm „Hello World“ als Beispiel für ein minimal funktionierendes Programm vorgestellt. Nach 1978 kam dieses Codebeispiel in fast allen Büchern über Programmiersprachen nicht mehr aus. Heutzutage ist es eine lange Tradition, „Hello World“ als erstes Programm anzuzeigen.

#include <stdio.h>

main()
{
    printf("Hello, World\n");
}
Nach dem Login kopieren
Nach dem Login kopieren

K&R präsentierte mehrere Sprachfeatures. Zum Beispiel Strukturen – eine Menge mehrerer Variablen, die zur leichteren Referenzierung unter einem einzigen Namen gruppiert sind, sowie die Datentypen long int und unsigned int.

Additions-/Subtraktionsoperatoren mit Zuweisung haben sich auch in K&R C geändert. Um einen Wert um eins zu erhöhen, musste man bisher a = 1 schreiben, aber solche Operatoren verwirrten den C-Compiler. Außerdem sah der Unterschied zwischen a = 1 (Erhöhung um eins) und a = 1 (Zuordnung) aus menschlicher Sicht eher fragil aus. In K&R C wurden diese Operatoren zu bekannten Operatoren – a = 1.

Die Codebeispiele im Buch wurden in einem einheitlichen Stil gestaltet, der auch nach den Anfangsbuchstaben der Nachnamen der Ersteller benannt wurde. Der K&R-Stil zeichnet sich durch die Verwendung von acht Leerzeichen als Haupteinzug aus (obwohl vier Leerzeichen häufiger verwendet werden). Er wird auch „Kernel-Stil“ genannt, da der Unix-Kernel in diesem Stil geschrieben ist.

#include <stdio.h>

main()
{
    printf("Hello, World\n");
}
Nach dem Login kopieren
Nach dem Login kopieren

1979. C mit Klassen

Im Mai 1979 begann der Mitarbeiter von Bell Labs, Bjarne Stroustrup, mit der Entwicklung eines Systems, das der erste Unix-Cluster werden sollte. Mit anderen Worten begann er mit der Entwicklung eines verteilten Computersystems, das mit einem gemeinsamen Netzwerk mehrerer Computer verbunden war.

Das Problem war das Fehlen eines geeigneten Toolkits dafür. Unter den vorhandenen Programmiersprachen gab es zwei Optionen, die zur Lösung dieses Problems beitragen könnten, aber beide hatten Nuancen. Die BCPL-Sprache war schnell, aber für große Projekte ungeeignet, da sie den Low-Level-Sprachen recht nahe kam. Die objektorientierte Programmiersprache Simula hingegen war für die Aufgabe geeignet, aber recht langsam. Also machte sich Stroustrup daran, seine eigene C-basierte Sprache zu implementieren.

Bereits im Oktober 1979 war der CPRE-Präprozessor fertig, der Klassen zu C hinzufügte. Die Sprache hieß C mit Klassen. Man könnte den Programmcode schreiben und ihn an den Präprozessor übergeben. Es wurde jedoch immer noch als Erweiterung von C.

angesehen

Zusätzlich zu den Klassen enthielt die erste Version von C mit Klassen Folgendes:

  • abgeleitete Klassen, aber noch ohne virtuelle Funktionen;
  • Zugriffskontrolle;
  • Konstruktoren und Destruktoren;
  • Freundekurse;
  • Kontrolle und Umwandlung von Funktionsargumenttypen.

1983. ANSI C

Die Sprache erfreute sich wachsender Beliebtheit:

  • C begann, Basic als führende Sprache für die Programmierung von Mikrocomputern zu verdrängen;
  • Neue Compiler erschienen. Darüber hinaus wurden sie von Leuten geschrieben, die nicht direkt an der Sprachentwicklung beteiligt waren.

Aber trotz dieser Popularität hatte C nur den unausgesprochenen Standard von K&R. Die Entwickler der Compiler führten viele nicht standardmäßige Änderungen an der Sprache ein. Zu diesem Zeitpunkt begann sich das Problem der Code-Portabilität zu verschärfen. Angesichts dieser Problematik entstand der erste C-Standard.

Im Jahr 1983 bildete das American National Standards Institute (ANSI) ein Komitee zur Ausarbeitung der Spezifikation. Der Standardisierungsprozess endete erst 1989, als der erste Standard für die Sprache als „ANSI X3.159-1989: Programming Language C“ ratifiziert wurde. Im selben Jahr erschien die zweite Auflage des Buches „The C Programming Language“, das die Sprache so beschreibt, wie sie im Standard erscheint. Innerhalb eines Jahres wurde dieser Standard mit geringfügigen Änderungen von der Internationalen Organisation für Normung (ISO) genehmigt.

History of C and C  . Part one: emergence and standardization of C language. C with Classes becomes C

Abbildung N2 – Cover der zweiten Auflage des Buches „C Programming Language“

Zusätzlich zu einem Rückschlag durch Änderungen an der Sprache seit K&R enthielt der Standard völlig neue Funktionen, wie Funktionsprototypen und einen ausgefeilteren Präprozessor. Der Standard enthielt auch eine Beschreibung der Standardbibliothekszusammensetzung. Darüber hinaus wurden einige zuvor nicht definierte Mittel genauer definiert.

1983. C mit Klassen C

Im Jahr 1982 begann Bjarne Stroustrup mit der Arbeit an Änderungen, die C mit Klassen aus dem Staat bringen sollten, was sein Schöpfer als „mittleren Erfolg“ bezeichnete. Von diesem Moment an dauerte die Entwicklung eines Compilers ein Jahr. Cfront kam 1983 heraus.

Das Hauptmerkmal war, dass es C mit Klassen in C-Code konvertierte. Anschließend wurde der konvertierte Code an den C-Compiler übergeben. Diese Funktion ermöglichte es mehr Benutzern, den Compiler zu verwenden und ihn auch auf einer vorhandenen Unix-Infrastruktur zu verwenden.

Im Zuge der Weiterentwicklung der Sprache änderte sich ihr Name mehrmals. Zuerst hieß es C84, weil die Community es einfach C nannte. Allerdings war der Name auch irreführend, da es sich eher um einen neuen C-Standard als um eine Teilmenge der Sprache handelte. Und bei dem Problem des vorherigen Namens hat es eigentlich nicht geholfen. Schließlich wurde die Sprache als C bekannt, das heißt C und der Inkrementoperator.

Beim Wechsel von C mit Klassen zu C erschienen weitere neue Funktionen in der Sprache:

  • virtuelle Funktionen;
  • Funktionsname und Operatorüberladung;
  • Referenzen;
  • Konstanten;
  • verbesserte Typprüfung;
  • Benutzergesteuerte Free-Store-Speichersteuerung.

Der Kommentarstil, der auch heute noch verwendet wird, hat sich genau in dieser Phase der Sprachentwicklung etabliert. Der Stil wird auch in anderen Sprachen verwendet.

So lebte C vor der offiziellen Zertifizierung. Stroustrup reagierte ziemlich schnell auf die Anfragen der Programmierer-Community. Er veröffentlichte Werke, die die Standardbeschreibungen der Sprache darstellten. Die Sprache wurde also hauptsächlich dank der Bemühungen ihres Schöpfers beibehalten.

1985. „Die Programmiersprache C.“

Im Februar 1985 wurde die erste vertreibbare Version von C veröffentlicht. Im Oktober desselben Jahres veröffentlichte der Sprachschöpfer Bjarne Stroustrup die erste Ausgabe des Buches „The C Programming Language“.

History of C and C  . Part one: emergence and standardization of C language. C with Classes becomes C

Abbildung N3 – Cover der ersten Ausgabe des Buches „The C Programming Language“

Es wurde zum ersten stillschweigenden Standard für die C-Sprache, genau wie das Buch „The C Programming Language“ von Kernighan und Ritchey. Es dauerte bis zum ersten offiziellen Standard.

In dem Buch behandelte Stroustrup die Sprachfunktionen sowie Designprobleme aus der C-Perspektive und verfeinerte jeden Punkt mit zahlreichen Codebeispielen.

Seitdem wurde das Buch noch dreimal nachgedruckt, jedes Mal mit Sprachaktualisierungen. Zum Zeitpunkt des Verfassens dieses Artikels enthält die aktuellste 4. Ausgabe den C 11-Standard.

1989. C 2.0

Im Juli 1989 wurde der Cfront 2.0-Compiler veröffentlicht. Sie wurde im Vergleich zur Vorgängerversion wesentlich überarbeitet und brachte auch Neuerungen in die C-Sprache.

Vorlagen sind mittlerweile bereits in aller Munde. Niemand zweifelte daran, dass sie umgesetzt würden, da es sich um ein realistisches Ziel handele. Eine weitere potenziell herausragende Funktion – die Mehrfachvererbung – war eine echte Herausforderung für die Entwickler aus der Programmiergemeinschaft. Viele haben gesagt, dass die Implementierung einer Mehrfachvererbung in C unmöglich ist. In Simula beispielsweise wurde ein ähnlicher Vorschlag aufgrund der unvermeidlichen Komplexität des Garbage Collectors abgelehnt. Allerdings war die Mehrfachvererbung dringend erforderlich, da sie die Entwicklung von Bibliotheken erheblich vereinfachen würde, deren Code ohne sie recht umständlich wäre.

Aus diesem Grund wurde in Cfront 2.0 doch die Mehrfachvererbung hinzugefügt. Diese Ergänzung der Sprache hat Kontroversen ausgelöst. Einige haben beispielsweise argumentiert, dass die Smalltalk-Sprache, der Inbegriff der objektorientierten Programmierung, keine Mehrfachvererbung hat. Deshalb sollte C es auf keinen Fall übernehmen. Der Sprachschöpfer ging davon aus, dass eine solche Reaktion darauf zurückzuführen ist, dass man die Mehrfachvererbung zu ernst nimmt.

Die obige C-Version führte außerdem Folgendes ein:

  • Zeiger auf Mitglieder, die das Erstellen von Zeigern auf nicht statische Felder und Funktionen ermöglichten;
  • statische und const Mitgliedsfunktionen;
  • Zugriffsmodifikator protected;
  • typsichere Verknüpfung;
  • Abstrakte Klassen;
  • neu und löschen klassenspezifisch;

1990. Borland C

1990 veröffentlichte Borland die integrierte Entwicklungsumgebung Borland C für die Entwicklung von C- und C-Programmen (was für eine Wendung, nicht wahr?). Es war ursprünglich für die Entwicklung unter DOS gedacht, später wurde jedoch auch Windows-Unterstützung eingeführt.

History of C and C  . Part one: emergence and standardization of C language. C with Classes becomes C

Abbildung N4 – Screenshot von Borland C

Historisch gesehen war Borland C ein Nachkomme von Turbo C, enthielt jedoch die Merkmale von C – Unterstützung der objektorientierten Programmierung.

Jede Version der Umgebung verfügte über einen eigenen Compiler, der ihre eigenen Standards unterstützte. Im Laufe der Zeit erhielt Borland C viele spezialisierte Bibliotheken für eine schnelle Anwendungsentwicklung.

Die letzte Borland C IDE-Version wurde 1997 veröffentlicht und danach durch die Borland C Builder-Serie ersetzt. Das Finale von Borland C kam im Jahr 2000 mit der Veröffentlichung von Borland C 5.5, das mit einem Compiler geliefert wurde.

Borland C war ein netter, gemütlicher Editor für DOS. Es gab sogar eine Art Syntaxfärbung.

Yuri Minaev, der Architekt von C und C-Kern des PVS-Studio-Analysators

Vier Jahre nach Borland veröffentlichte Microsoft seine integrierte Entwicklungsumgebung Visual C.

1990. Vorlagen und Ausnahmebehandlungsmechanismus in C

1986 schrieb Bjarne Stroustrup einen Artikel „Was ist objektorientierte Programmierung?“ in dem er drei Mängel von C äußerte:

  • mangelnde Unterstützung für parametrisierte Typen;
  • ein Mangel an Standardmechanismen zur Ausnahmebehandlung;
  • ein Mangel an Mehrfachvererbung.

Mehrfachvererbung wurde 1989 mit C 2.0 eingeführt und die restlichen Mängel wurden 1990 mit neuen Sprachfunktionen behoben. Sie wurden von Stroustrup im Buch „Annotated C Reference Manual“ beschrieben.

Vorlagen und Ausnahmebehandlung erschienen bald nacheinander. Vorlagen wurden im Juli in Seattle genehmigt, und der Ausnahmebehandlungsmechanismus wurde im November in Palo Alto genehmigt. Ihre knappen Veröffentlichungen sind auf die Tatsache zurückzuführen, dass beide Innovationen ähnliche Probleme angehen. Laut dem Ersteller der Sprache selbst können Sie mit Vorlagen die Anzahl der Fehler bei der Programmausführung reduzieren, indem Sie die Fähigkeiten des statischen Typsystems erweitern. Während Ausnahmen es Ihnen ermöglichen, die verbleibenden Fehler zu behandeln.

Parametrierte Typen wurden bereits in der ersten Ausgabe von C berücksichtigt. Sie mussten jedoch verschoben werden, da die Zeit für eine ausreichende Untersuchung der Design- und Implementierungsfragen fehlte. Aus dem gleichen Grund wurden auch Ausnahmen verschoben. Und es war nicht umsonst. Ihr Design dauerte von 1984 bis 1989.

Das „Annotated C Reference Manual“ führte außerdem Namespaces und die Möglichkeit ein, Typen zur Laufzeit zu identifizieren.

Generische Programmierung begann zu diesem Zeitpunkt an Dynamik zu gewinnen. C mit Templates war kein Pionier. Bei der Erstellung der Vorlagen haben die Ersteller Ideen aus den Programmiersprachen ML, CLU und Ada herangezogen.

Man kann jedoch mit Sicherheit sagen, dass C dieses Paradigma gefördert hat. Mithilfe von Vorlagen war es in vielen Fällen möglich, Code ohne Makros zu schreiben, was die Wahrscheinlichkeit verringerte, sich selbst ins Bein zu schießen. Hier kommt ein Wermutstropfen: Die voll funktionsfähige Funktionalität, die die Arbeit mit generischer Programmierung vereinfacht, erschien erst bei C 20. Aber selbst das hielt Programmierer nicht davon ab, als sie erfuhren, dass Vorlagen Berechnungen in der Kompilierungsphase ermöglichen können ...

Andererseits sind Ausnahmen in C nicht so eindeutig. Leider haben sie im Vergleich zu früheren Ansätzen nicht alle Fehlerbehandlungsprobleme gelöst. Der Kontrollfluss wird durch die Verwendung von Ausnahmen nicht trivial. Es gibt unzählige Möglichkeiten, sich damit selbst ins Bein zu schießen, wie zum Beispiel das private Erben von Ausnahmen, das Abfangen von Ausnahmen nach Wert oder das Anordnen von Catch-Blöcken in der falschen Reihenfolge usw. Daher verbieten einige Codierungsstandards ihre Verwendung, wie beispielsweise Google C-Code-Stil.

Philipp Khandelyants, Teamleiter des C- und C-Entwicklungsteams bei PVS-Studio

Das „Annotated C Reference Manual“ ist zu einer Art Vorläufer der offiziellen C-Standardisierung geworden. Es beschrieb alle Neuerungen, die bald zum Standard der Sprache werden würden.

In der nächsten Serie...

In diesem Artikel haben wir Ereignisse in der Geschichte von C und C von 1969 bis 1990 behandelt. Im nächsten Artikel werden wir uns mit der Geschichte von C von 1991 bis heute befassen:

  • Bjarne Stroustrups Buch über die Entstehung von C;
  • C 98 ist der erste offizielle Standard;
  • C99 – C bleibt in Bewegung;
  • Technischer Bericht 1 – neue C-Funktionen auf Papier;
  • Viva64-Veröffentlichung, später – PVS-Studio;
  • C zeichnet auf, was erreicht wurde (C99, C11) und C gewinnt an Dynamik (C 11, C 17);
  • C 20 und C 23.

Das obige ist der detaillierte Inhalt vonGeschichte von C und C. Teil eins: Entstehung und Standardisierung der C-Sprache. C mit Klassen wird zu C. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage