Wurde dir Programmiersprache C++ wirklich in C geschrieben!?
4 Stimmen
4 Antworten
C++ ist aus C with Classes hervorgegangen, das zu Demonstrationszwecken mit einem Transpiler kam. Dieser war entsprechend in C geschrieben.
Die Programmiersprache ist natürlich erstmal nur ein abstraktes Ding, die Tollchain, um dann C++ Code zu ausführbarem Code (o.ä.) zu übersetzen ist heute tyypischerweise in C++ geschrieben,
Eine Programmiersprache ist nur ein Konzept. Sie kann und muss nicht programmiert werden.
Du kannst ein Stück Papier und einen Stift nehmen, und darauf C++ schreiben. Ganz ohne dass ein Programm läuft, denn es ist ja nur Papier. Dennoch hast du gültigen C++-Code vor dir. C++ kann also ohne jegliche Programme oder Computer existieren. Wie jede andere Sprache eben auch.
Der Sinn hinter einer Programmiersprache ist allerdings, es uns einfacher zu machen, einem Computer zu sagen, was er tun soll. Und der Schlüssel dafür ist ein Compiler oder Interpreter, der eine Programmiersprache in Maschinencode für den Computer übersetzt.
Bei den ersten Computern, damals noch riesige Apparate, gab es keine Programmiersprachen. Da musste man in Handbüchern Zahlencodes nachschlagen, und diese dann entweder als Lochkarte stanzen oder über ein Nummernfeld eingeben. Das bedeutet, ein Programm war einfach nur eine Reihe an Nummern. Jede Nummer hat andere Schaltkreise im Computer aktiviert, sodass man eben je nach dem, welche Nummern man eingegeben hat, z.B. eine Addition oder Subtraktion ausgelöst hat.
Die Computerpionierin Grace Hopper war die erste, die feststellte, dass es ziemlich kompliziert und unverständlich ist, wenn man nur eine lange Liste an Nummern hat, von denen niemand alle auswendig kennt, und man ständig im Handbuch nachschlagen muss. Also hatte sie die Idee, diese Nummern durch Wörter zu ersetzen, die für Menschen lesbar und einfacher zu merken sind. Daher schrieb sie ein Programm (logischerweise dieses Mal noch mit den Zahlencodes), das bestimmte Wörter in die entsprechenden Zahlencodes übersetzte. Und so sind der erste Compiler und die erste Programmiersprache entstanden.
Computer heutzutage funktionieren aber immer noch genau so, sie verstehen nur numerische Codes, mit denen man als Mensch wenig anfangen kann. Also haben wir Programmiersprachen, die wir lesen können (aber ein Computer nicht), und übersetzen diese dann mit einem Compiler oder Interpreter in Maschinencode. Der Maschinencode, der dabei herauskommt, ist von der Programmiersprache unabhängig, denn er ist durch den Prozessor vorgeben. Für den Prozessor gibt es kein C, C++, Python, JavaScript, oder sonst irgendwas. Dem ist völlig egal, womit ein Programm geschrieben wurde, denn der bekommt am Ende in jedem Fall seinen Maschinencode, den er versteht.
Daher kann man auch einen Compiler oder Interpreter in einer beliebigen Programmiersprache schreiben. Es handelt sich dabei vereinfacht gesagt lediglich um ein Übersetzungsprogramm, das zu jedem Begriff aus der Programmiersprache den richtigen Zahlencode für den Prozessor ermitteln muss. Daher kann man einen Compiler oder Interpreter in einer beliebigen Programmiersprache schreiben, denn etwas zu übersetzen ist an sich nicht sonderlich kompliziert. (Der komplizierte Part ist, es effizient zu übersetzen, aber auch das ist reine Theorie bzw. Computerwissenschaft).
Man kann einen Compiler in jeder beliebigen Programmiersprache schreiben. Du könntest also auch einen C++-Compiler in C++ schreiben, sofern bereits ein C++-Compiler existiert. Du könntest auch einen C++-Compiler in JavaScript schreiben. Oder Python. Oder in Minecraft mit Redstone bauen.
Es existieren verschiedene Compiler für C++, da kannst du schauen, worauf die aufbauen:
https://en.wikipedia.org/wiki/List_of_compilers#C.2B.2B_compilers
Du meinst vermutlich C++-Compiler; eine Programmiersprache wird nicht in irgendeiner anderen Programmiersprache geschrieben.
Und ja, das war am Anfang sehr viel so. Da wurde C++-Code automatisiert in C-Code übersetzt und der dann mit einem normalen C-Compiler compiliert. Dabei gab es vor allem bei Microsoft richtig üble Bugs bei der Verwendung von Templates, wenn du automatisch generierten Typbezeichnungen zu lang wurden: Wenn die ersten 256 Zeichen übereinstimmten, konnte der C-Compiler die Typen nicht auseinander halten.
Gut, dass diese Zeiten vorbei sind.
ich hab ein problem mit der formulierung. die sprache wurde nicht in einer anderen sprache geschrieben. c++ ist eine erweiterung von c.
https://bmu-verlag.de/warum-ist-c-plus-plus-so-beliebt/
programmiersprachen sind ja einfach nur für den menschen verständliche computerbefehle. diese werden dann mittels compiler in binärcode umgewandelt - was der computer versteht.
du kannst die IDE in einer sprache entwickeln, du kannst auch den compiler in einer sprache entwickeln. und die meisten c-kompiler sind auch in c geschrieben.