mikrocontroller.net

Forum: PC-Programmierung Womit wird ein Compiler gebaut?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Anfaenger (Gast)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
Hi,

es gibt ja Assemblerprogramme und C-Programme oder auch welche aus 
Fortran, Kobol, Pascal, Basic usw.

Dann gibt es ja Compiler. Sind Compiler selbst in Assembler geschrieben 
oder schreibt man die gegenseitig - z.B. einen C-Compiler mit Fortran 
oder so?

: Gesperrt durch Moderator
Autor: MaWin (Gast)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
Man schreibt sogar C Compiler in C, durch bootstrapping, aber vor allem 
verwendet man vorgefertigte Parser und Optimizer die man nur noch mit 
der gewünschten Syntax und Befehlsoutput füttert und die damit den 
Compiler bilden.

Aber klar, der allererste Compiler wurde in Assembler geschrieben, der 
letzte in Assembler war eohl Turbo Pascal für CP/M.

Autor: A. K. (prx)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Anfaenger schrieb:
> Dann gibt es ja Compiler. Sind Compiler selbst in Assembler geschrieben
> oder schreibt man die gegenseitig - z.B. einen C-Compiler mit Fortran
> oder so?

C Compiler werden in C geschrieben und mit C Compilern übersetzt.

Ein Problem gab es nur beim ersten C Compiler. Der war nicht in C 
geschrieben, sondern in NB, weil Ritche mit B nicht recht glücklich war. 
Aber der Compiler für NB war in B geschrieben. B wiederum war in B 
geschrieben.

: Bearbeitet durch User
Autor: Anfaenger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Man schreibt sogar C Compiler in C, durch bootstrapping,

cool, danke fuer die schnelle Antwort. Da hab ich gleich ein paar Dinge, 
die ich mal lernen kann - bootstrapping hab ich noch nie gehoert, klingt 
aber total spannend :-)

Stimmt es auch, dass z.B. Python selber in C/C++ auch geschrieben wurde, 
da das ja eine Interpretersprache ist?

Autor: Fabiano S. (fabiano)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der grösste Teil von CPython ist in Python selbst implementiert, aber 
Kernfunktionalität wie der Opcode Dispatcher und Code, der direkt auf 
nativen Code zugreift, ist in C implementiert. Allerdings gibt es auch 
reine Python-Implementierungen wie PyPy.

Autor: dings (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: C. A. Rotwang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist ein yacc!

https://de.wikipedia.org/wiki/Yacc

yacc wurde 1975 publiziert und zuerst in B geschrieben.

Autor: C. A. Rotwang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfaenger schrieb:
> Hi,
>
> es gibt ja Assemblerprogramme und C-Programme oder auch welche aus
> Fortran, Kobol, Pascal, Basic usw.

Nicht "aus" sondern "in"
Nicht "Kobol" sondern "Cobol" (genauer COBOL60)


Aber echte Programmierer schreiben ohnehin in Hex, oder in 
Schmetterlingen
https://xkcd.com/378/
https://johntopley.com/2005/02/09/the-truth-about-real-programmers/

Autor: Thomas W. (thomas_v2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:

> C Compiler werden in C geschrieben und mit C Compilern übersetzt.
>
> Ein Problem gab es nur beim ersten C Compiler. Der war nicht in C
> geschrieben, sondern in NB, weil Ritche mit B nicht recht glücklich war.
> Aber der Compiler für NB war in B geschrieben. B wiederum war in B
> geschrieben.

Und Ken Thompson hat in den ersten C Compiler seinen Hack eingebaut, der 
sich bis heute weiterverbreitet hat.

http://wiki.c2.com/?TheKenThompsonHack

Autor: C. A. Rotwang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas W. schrieb:

> Und Ken Thompson hat in den ersten C Compiler seinen Hack eingebaut, der
> sich bis heute weiterverbreitet hat.
>
> http://wiki.c2.com/?TheKenThompsonHack

Quatsch Hack, alles nur ein Witz:
" Brian und ich experimentierten zu diesem Zeitpunkt mit einer frühen 
Pascal-Version von Professor Niklaus Wirth vom ETH-Laboratorium in der 
Schweiz und waren beeindruckt von seiner Einfachheit und Mächtigkeit. 
Dennis hatte gerade "Der Herr der Klinge" gelesen, eine spöttische 
Parodie auf Tolkins große Trilogie "Der Herr der Ringe". Im Übermut 
beschlossen wir, Parodien zur Multics-Umgebung und zu Pascal zu 
verfassen"

nach:
http://schreier.free.fr/pages/texte/witz/unix_c.html

Autor: imonbln (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gefühlt, versucht jede Programmiersprache, einen Compiler in der eigenen 
Sprache zu verfassen. Ist ja vielleicht auch Logisch, wenn Ich mich für 
$Programmiersprache interessiere, glaube ich das die irgendwas besser 
kann als andere, dann möchte man nicht mit einer anderen Sprache 
arbeiten müssen um die Eigene noch besser zu machen.

Autor: Dirk B. (dirkb2)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Der erste Compiler ist in Ermangelung eines Compilers, in einer anderen 
Sprache verfasst.
Dieser kann evtl. aber auch nur eine Miniversion der neuen Sprache 
unterstützen.
Ausreichend, um einen Compiler zu bauen.

Autor: Bauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Compiler die in sich selbst geschrieben sind nennt man "self-hosted"

https://en.wikipedia.org/wiki/Self-hosting_(compilers)

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
imonbln schrieb:
> Gefühlt, versucht jede Programmiersprache, einen Compiler in der eigenen
> Sprache zu verfassen.

Bei vorwiegend interpretierten Sprachen ist das relativ selten.

> Ist ja vielleicht auch Logisch, wenn Ich mich für
> $Programmiersprache interessiere, glaube ich das die irgendwas besser
> kann als andere, dann möchte man nicht mit einer anderen Sprache
> arbeiten müssen um die Eigene noch besser zu machen.

Nicht alle Programmiersprachen addressieren ein Aufgabensprektrum, das 
sie für den Bau von Compilern prädestiniert.

Autor: vn n. (wefwef_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
imonbln schrieb:
> Gefühlt, versucht jede Programmiersprache, einen Compiler in der eigenen
> Sprache zu verfassen. Ist ja vielleicht auch Logisch, wenn Ich mich für
> $Programmiersprache interessiere, glaube ich das die irgendwas besser
> kann als andere, dann möchte man nicht mit einer anderen Sprache
> arbeiten müssen um die Eigene noch besser zu machen.

Wie im Nachbarthread bereits besprochen, gibt es dafür verschiedene 
Gründe: Wie auch von dir bereits angeführt, ist es in erster Linie 
natürlich sinnvoll, wenn ich schon eine neue Sprache erfinde, diese auch 
zu nutzen (immerhin halte ich sie ja für besser als die existierenden, 
also warum sollte ich eine schlechtere Sprache verwenden?).
Zudem ist so ein Compiler natürlich eine nette Demoanwendung, dass die 
neue Sprache offensichtlich funktioniert. Aufgrund der relativ hohen 
Komplexität eines Compilers lässt sich da gleich gut zeigen, dass die 
ganzen tollen Konzepte die man sich ausgedacht hat, auch funktionieren. 
Man merkt auch selbst gleich, wenn irgendwas in der Praxis doch nicht so 
toll funktioniert wie man es sich vorgestellt hat, testet also die 
Sprache gleich mit.
Und es zeigt halt auch, dass man seiner eigenen Sprache offenbar genug 
vertraut, um damit vergleichsweise komplexe Software zu schreiben. Wenn 
es in einer Sprache hingegen nur ein "Hello World" und irgendwelche 
0815-Apps gibt, woher soll ich dann Wissen, dass sie auch die Werkzeuge 
bietet, um aufwendige Programme performant zu bauen?

A. K. schrieb:
> Bei vorwiegend interpretierten Sprachen ist das relativ selten.

Gegenbeispiele: TypeScript, Python.

: Bearbeitet durch User
Autor: A. K. (prx)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
vn n. schrieb:
> Und es zeigt halt auch, dass man seiner eigenen Sprache offenbar genug
> vertraut, um damit vergleichsweise komplexe Software zu schreiben.

Würdest du es für sinnvoll erachten, einen Labview Compiler in Labview 
zu schreiben? Oder einen Prolog Compiler in Prolog, einen APL Compiler 
in APL, ...?

Was wäre damit bewiesen, wenn man es schafft, eine Sprache für eine 
Aufgabe einzusetzen, für die sie nicht geschaffen wurde? Telefonzellen 
wurden fürs Telefonieren geschaffen, nicht um 18 Leute reinzuquetschen.

: Bearbeitet durch User
Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Bei vorwiegend interpretierten Sprachen ist das relativ selten

http://flexiblebird.bplaced.net/basic.htm

Autor: vn n. (wefwef_s)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
A. K. schrieb:
> vn n. schrieb:
>> Und es zeigt halt auch, dass man seiner eigenen Sprache offenbar genug
>> vertraut, um damit vergleichsweise komplexe Software zu schreiben.
>
> Würdest du es für sinnvoll erachten, einen Labview Compiler in Labview
> zu schreiben? Oder einen Prolog Compiler in Prolog, einen APL Compiler
> in APL, ...?
>
> Was wäre damit bewiesen, wenn man es schafft, eine Sprache für eine
> Aufgabe einzusetzen, für die sie nicht geschaffen wurde? Telefonzellen
> wurden fürs Telefonieren geschaffen, nicht um 18 Leute reinzuquetschen.

Ich bin davon ausgegangen, dass es selbstverstänlich ist, dass sich das 
nur auf Sprachen bezieht, wo dies sinnvoll ist.
Leider stelle ich gerade fest, dass man diese geistige Leistung nicht 
von jedem erwarten kann.

Autor: Dirk B. (dirkb2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Bei vorwiegend interpretierten Sprachen ist das relativ selten.

Das sind Interpreter. Es geht aber um Compiler.

Autor: Ursel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vn n. schrieb:
> Wie auch von dir bereits angeführt, ist es in erster Linie
> natürlich sinnvoll, wenn ich schon eine neue Sprache erfinde, diese auch
> zu nutzen (immerhin halte ich sie ja für besser als die existierenden,
> also warum sollte ich eine schlechtere Sprache verwenden?).

Nur wieso sollte es auch zwingend notwendig sein, sie zum Bau eines 
Compilers zu nutzen? Ganz besonders wenn die Endanwendung der Sprache 
rein gar nichts damit zu tun hat, z.B. eine Sprache, die für mobile 
GUI-Applikationen gedacht ist.

Autor: A. K. (prx)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Dirk B. schrieb:
> A. K. schrieb:
>> Bei vorwiegend interpretierten Sprachen ist das relativ selten.
>
> Das sind Interpreter. Es geht aber um Compiler.

Für diverse traditionell interpretierte Sprachen gibt es auch Compiler. 
Ein paar Sprachen hatte ich genannt. Labview wiederum ist nicht 
interpretiert.

: Bearbeitet durch User
Autor: Ursel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Dieser Thread-Zweig bezog sich auf "jede Programmiersprache", nicht jede
> geeignete. Viele Leute nehmen mangels Kontakt nur die übliche Sprachen
> der C- und Pascal-Familien wahr (oder merken es nicht).

Außerdem wurde ja explizit der Nachbarthread über Swift angesprochen, 
und dort haben ein paar C++ Fanboys Swift genau dafür kritisiert.

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfaenger schrieb:
> MaWin schrieb:
>> Man schreibt sogar C Compiler in C, durch bootstrapping,
>
> cool, danke fuer die schnelle Antwort. Da hab ich gleich ein paar Dinge,
> die ich mal lernen kann - bootstrapping hab ich noch nie gehoert, klingt
> aber total spannend :-)

Da wird erstmal eine relativ einfache Version des Compilers gebaut, die 
reicht, um den Compiler selbst wieder komplett zu übersetzen, was dann 
auch gemacht wird. So macht es GCC. Der ist dann also mit sich selbst 
gebaut. Für den ersten Step braucht man aber natürlich trotzdem erstmal 
einen C-Compiler.

> Stimmt es auch, dass z.B. Python selber in C/C++ auch geschrieben wurde,
> da das ja eine Interpretersprache ist?

Das originale Python ist in C geschrieben. Es gibt aber auch 
Python-Implementierungen, die in anderen Sprachen geschrieben sind, z.B. 
IronPython oder Jython.

A. K. schrieb:
> imonbln schrieb:
>> Gefühlt, versucht jede Programmiersprache, einen Compiler in der eigenen
>> Sprache zu verfassen.
>
> Bei vorwiegend interpretierten Sprachen ist das relativ selten.

Macht ja auch wenig Sinn, in einem Interpreter nochmal einen Interpreter 
für die selbe Sprache laufen zu lassen.

Autor: vn n. (wefwef_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ursel schrieb:
> Nur wieso sollte es auch zwingend notwendig sein, sie zum Bau eines
> Compilers zu nutzen? Ganz besonders wenn die Endanwendung der Sprache
> rein gar nichts damit zu tun hat, z.B. eine Sprache, die für mobile
> GUI-Applikationen gedacht ist.

Ich zitiere mich mal selbst:

vn n. schrieb:
> Ich bin davon ausgegangen, dass es selbstverstänlich ist, dass sich das
> nur auf Sprachen bezieht, wo dies sinnvoll ist.
> Leider stelle ich gerade fest, dass man diese geistige Leistung nicht
> von jedem erwarten kann.

Der TS bezieht sich im Startposting ja schon explizit auf Sprachen, 
deren Compiler in der Zielsprache verfasst ist. Da frage ich mich ja 
schon, wie man da nun irgendwelche GUI-Sprachen oder Labview ins Spiel 
bringen kann...

Ursel schrieb:
> Außerdem wurde ja explizit der Nachbarthread über Swift angesprochen,
> und dort haben ein paar C++ Fanboys Swift genau dafür kritisiert.

Interessant, was einen nun schon alles zu einem Fanboy macht.

Autor: Ursel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vn n. schrieb:
> Der TS bezieht sich im Startposting ja schon explizit auf Sprachen,
> deren Compiler in der Zielsprache verfasst ist.

Der von dir erwähnte Nachbarthread allerdings nicht. Oder habe ich den 
verwechselt?

vn n. schrieb:
> Interessant, was einen nun schon alles zu einem Fanboy macht.

Scheinargumente zu erfinden ist der Klassiker.

Autor: vn n. (wefwef_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ursel schrieb:
> Der von dir erwähnte Nachbarthread allerdings nicht. Oder habe ich den
> verwechselt?

Wir sind hier aber nicht im Nachbarthread. Vielleicht ist dir das 
entgangen.

Ursel schrieb:
> vn n. schrieb:
>> Interessant, was einen nun schon alles zu einem Fanboy macht.
>
> Scheinargumente zu erfinden ist der Klassiker.

Man ist also C++-Fanboy, weil man Swift kritiert.
Kling absolut logisch.

Autor: Hugo H. (hugohurtig1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfaenger schrieb:
> Dann gibt es ja Compiler. Sind Compiler selbst in Assembler geschrieben
> oder schreibt man die gegenseitig - z.B. einen C-Compiler mit Fortran
> oder so?

Compiler übersetzen eine Syntax in Befehle. Das können Assembler-Befehle 
für eine M(CPU) sein oder auch andere Befehle. Ich habe mal einen 
Compiler geschrieben, welcher Pseudo-Code in Plotter-Befehle zur 
Erzeugung von Flussdiagrammen erzeugt hat (lange her).

Ein Compiler kann in jeder möglichen Programmiersprache geschrieben 
werden (in meinem Fall war es PL/1).

Beitrag #5992137 wurde von einem Moderator gelöscht.
Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfaenger schrieb:

> es gibt ja Assemblerprogramme und C-Programme oder auch welche aus
> Fortran, Kobol, Pascal, Basic usw.
>
> Dann gibt es ja Compiler. Sind Compiler selbst in Assembler geschrieben
> oder schreibt man die gegenseitig - z.B. einen C-Compiler mit Fortran
> oder so?

Kommt auf die Situation an.

Die Wurzel von allem ist natürlich der allererste Assembler. Der wurde 
nicht in irgendeiner Sprache programmiert, sondern einfach so in 
Maschinencode umgesetzt. Keine Ahnung, ob das direkt in Hardware 
geschehen ist oder ob dabei schon irgendwelche Hilfsprogramme involviert 
waren, die etwa Lochkarten lesen und als Binary des Assemblercodes 
speichern konnten (vermutlich war es aber so).

Alles, was danach kam, basiert direkt oder indirekt auf diesem 
allerersten Assembler. Möglich (sogar wahrscheinlich) ist allerdings 
auch, dass die Geschichte der Programmiersprachen ein Wald ist, dieser 
fundamentale Schöpfungsakt also mehrmals stattfand.

Wie auch immer: alles danach basiert auf dem/den ersten Assembler(n). 
Das schließt allerdings nicht aus, dass es verschlungene Wege in der 
weiteren Entwicklung gab. Ich selber habe beispielsweise einen 
6502-Assembler in Atari-BASIC geschrieben, weil mir die damals 
verfügbaren Assembler nicht zusagten. Und das erste, was ich dann mit 
dem funktionierenden Assembler tat, war erneut denselben zu schreiben, 
nur halt in Assembler. Und dann wiederum ein neues BASIC für meinen 
Atari800XL...

So ungefähr sind alle Entwickler von Programmiersprachen gestrickt, seit 
Anbeginn der Zeit. Man benutzt, was halt gerade verfügbar ist, um die 
erste Inkarnation des Compilers/Assemblers der neuen Sprache zu 
schreiben. Und dann ist oft der erste Test für die Tauglichkeit der 
Implementierung, damit eine funktionierende Version dessen zu schreiben, 
womit es selber übersetzt wurde, was sich daran zeigt, das wieder ein 
funktionierender Assembler/Compiler rauskommt...

Autor: chris (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Rolf M.
>Da wird erstmal eine relativ einfache Version des Compilers gebaut, die
>reicht, um den Compiler selbst wieder komplett zu übersetzen, was dann
>auch gemacht wird. So macht es GCC. Der ist dann also mit sich selbst
>gebaut. Für den ersten Step braucht man aber natürlich trotzdem erstmal
>einen C-Compiler

Es gibt übrigens eine interessante Analogie: Werkzeugmaschinen werden 
mit Hilfe von Werkzeugmaschinen gemacht.
Über die Jahrhunderte findet aber eine Evolution statt. Mit einfachen 
Werkzeugmaschinen baut man komplexere.
Um das anschaulich zu machen, empfehle ich ein Besuch im Deutschen 
Museum in München. Dort sind unten alte Fabrikräume mit 
Werkzeugmaschinen mit Riemenantrieb gebaut. Da sieht man schön, wie sich 
die Maschinen im Laufe der Zeit entwickelt haben.
Käme die Menschheit in die Situation, dass alle Maschinen weg sind und 
von Null angefangen werden müsste, wäre das echt ein langer Weg ( 
ungeachtet des gesammelten Know-Hows ).

Das Ziel des RepRap ist übrigens RepRaps herzustellen.

Autor: Ursel (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
chris schrieb:
> Es gibt übrigens eine interessante Analogie: Werkzeugmaschinen werden
> mit Hilfe von Werkzeugmaschinen gemacht.

Nur ein kleiner Teil der Werkzeugmaschinen kann man mit 
Werkzeugmaschinen bauen.

Das ist so als würdest du versuchen, einen Compiler zu bauen - ohne 
Computer.

Autor: Hugo H. (hugohurtig1)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
chris schrieb:
> Über die Jahrhunderte findet aber eine Evolution statt. Mit einfachen
> Werkzeugmaschinen baut man komplexere.

Der Vergleich hinkt. Software <> Hardware.

Autor: Hugo H. (hugohurtig1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Die Wurzel von allem ist natürlich der allererste Assembler. Der wurde
> nicht in irgendeiner Sprache programmiert, sondern einfach so in
> Maschinencode umgesetzt.

Und wie genau? Einfach so ... geht ja wohl nicht - oder?

Autor: Dirk B. (dirkb2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hugo H. schrieb:
> c-hater schrieb:
>> Die Wurzel von allem ist natürlich der allererste Assembler. Der wurde
>> nicht in irgendeiner Sprache programmiert, sondern einfach so in
>> Maschinencode umgesetzt.
>
> Und wie genau? Einfach so ... geht ja wohl nicht - oder?

Schalter (zur Eingabe der Binärwerte) oder Lochstreifen bzw. -karten.

: Bearbeitet durch User
Autor: Zeno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ursel schrieb:
> Nur ein kleiner Teil der Werkzeugmaschinen kann man mit
> Werkzeugmaschinen bauen.

Womit sonst? Schon mal bei einem Maschinenbauer rein geschaut? - 
offensichtlich nicht.

Autor: Ursel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeno schrieb:
> Womit sonst? Schon mal bei einem Maschinenbauer rein geschaut? -
> offensichtlich nicht.

Dann zeig mal, wie du die Chips der Steuerungselektronik mit einer 
Werkzeugmaschine herstellen kannst.

Autor: C. A. Rotwang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ursel schrieb:
> Zeno schrieb:
>> Womit sonst? Schon mal bei einem Maschinenbauer rein geschaut? -
>> offensichtlich nicht.
>
> Dann zeig mal, wie du die Chips der Steuerungselektronik mit einer
> Werkzeugmaschine herstellen kannst.

Hast Dich wohl nie für Technikgeschichte und Grundlagen der 
Datenverarbeitung interessiert?! Steuerung funktioniert auch ohne Chips 
und Halbleiter:

http://www.analogmuseum.org/library/hamburg_hoelzer.pdf
https://www.deutschlandfunk.de/vom-webstuhl-zum-computer.871.de.html?dram:article_id=126687

Selbst Raumschiffe kann man mit einem "Uhrwerk" steuern:
https://vostoksupersite.weebly.com/

Mach Dich schlau, sonst stirbst Du dumm.

Beitrag #5992645 wurde von einem Moderator gelöscht.
Beitrag #5992651 wurde von einem Moderator gelöscht.
Beitrag #5992660 wurde von einem Moderator gelöscht.
Autor: Boris (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Typischer µCNet-Thread - einfach nur trostloses Gerangel von den 
üblichen Schwätzern und Nichtskönnern.

Wer sich dennoch für den Compilerbau interessiert, dem sei das 
"Drachenbuch" empfohlen:

https://www.amazon.de/Compilerbau-Tle-Tl-1-Alfred-Aho/dp/3486252941/

Beitrag #5992664 wurde von einem Moderator gelöscht.
Autor: A. S. (achs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Die Wurzel von allem ist natürlich der allererste Assembler. Der wurde
> nicht in irgendeiner Sprache programmiert, sondern einfach so in
> Maschinencode umgesetzt. Keine Ahnung, ob das direkt in Hardware
> geschehen ist oder ob dabei schon irgendwelche Hilfsprogramme involviert
> waren, die etwa Lochkarten lesen und als Binary des Assemblercodes
> speichern konnten (vermutlich war es aber so).
>
> Alles, was danach kam, basiert direkt oder indirekt auf diesem
> allerersten Assembler. Möglich (sogar wahrscheinlich) ist allerdings
> auch, dass die Geschichte der Programmiersprachen ein Wald ist, dieser
> fundamentale Schöpfungsakt also mehrmals stattfand.

Keine Ahnung, was Du mit Assembler meinst, aber Assembler (sprache) ist 
auch nur eine Programmiersprache von vielen, und sicher kein Ursprung.

Verbreitet, ja, alt, ja, Low Level, ja. Aber so individuell wie der 
Prozessor..

: Bearbeitet durch User
Autor: Stefan S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Boris schrieb:
> "Drachenbuch" empfohlen:

Das Buch von Wirth soll auch sehr gut sein, nun als PDF:

https://news.ycombinator.com/item?id=10764672

Beitrag #5992683 wurde von einem Moderator gelöscht.
Beitrag #5992689 wurde von einem Moderator gelöscht.
Beitrag #5992693 wurde von einem Moderator gelöscht.
Beitrag #5992695 wurde von einem Moderator gelöscht.
Beitrag #5992697 wurde von einem Moderator gelöscht.
Beitrag #5992703 wurde von einem Moderator gelöscht.
Beitrag #5992705 wurde von einem Moderator gelöscht.
Beitrag #5992712 wurde von einem Moderator gelöscht.
Beitrag #5992719 wurde von einem Moderator gelöscht.
Beitrag #5992722 wurde von einem Moderator gelöscht.
Beitrag #5992724 wurde von einem Moderator gelöscht.
Beitrag #5992732 wurde von einem Moderator gelöscht.
Beitrag #5992735 wurde von einem Moderator gelöscht.
Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
@Ursel:

Jetzt krieg dich mal wieder ein, so dass der Thread wieder zu seinem
ursprünglichen Thema zurückfinden kann.

Chris hat oben nichts weiter geschrieben als:

chris schrieb:
> Es gibt übrigens eine interessante Analogie: Werkzeugmaschinen werden
> mit Hilfe von Werkzeugmaschinen gemacht.
> Über die Jahrhunderte findet aber eine Evolution statt. Mit einfachen
> Werkzeugmaschinen baut man komplexere.

Er hat überhaupt nicht behauptet, dass man ausschließlich eine
Werkzeugmaschine braucht, um eine neue herzustellen. Das hast du ihm
(völlig sinnloserweise) in den Mund gelegt.

Ich finde den Vergleich mit den Werkzeugmaschinen sehr treffend, um
damit das Bootstrapping zu erklären. Lies dir einfach noch einmal seinen
Beitrag durch, vielleicht wirst du es dann verstehen.

Übrigens ist auch im Compilerbau ein bereits bestehender Compiler oder
Assembler alleine nicht hinreichend, um damit einen neuen Compiler zu
kreieren. Man braucht dazu mindestens noch einen Lochstreifen- oder
Lochkartenstanzer oder einen Texteditor, um den Quelltext einzugeben.


PS: Die Feststellung im Nachbarthread, dass Swift nicht self-hosted ist,
stammt überigens nicht von Dr. Sommer, sondern von mir. Entgegen deiner
Behauptung habe ich diese Tatsache auch nicht als Nachteil hingestellt
(das habe ich sogar explizit angemerkt), sondern mich nur etwas
verwundert darüber geäußert, da Swift sehr wohl geeignet wäre, damit
einen Compiler zu schreiben. Auch sein Vorgänger, Objective-C wäre dafür
ein guter Kandidat gewesen. Stattdessen wurde bei Apple entschieden, C++
zu verwenden.

Diese Tatsache hat nun zur Folge, dass ich urplötzlich von einem
C++-Skeptiker zu einem C++-Fanboy mutiert bin. Ja, so schnell kann es
gehen ;-)

: Bearbeitet durch Moderator
Beitrag #5992753 wurde von einem Moderator gelöscht.
Beitrag #5992758 wurde von einem Moderator gelöscht.
Beitrag #5992759 wurde von einem Moderator gelöscht.
Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Ursel schrieb im Beitrag #5992758:
> Der Thread wurde nur gesprengt, weil sich hier Leute von meiner Meinung
> persönlich angegriffen fühlen.

Ist die Beschimpfung als Fanyboy aus deiner Sicht etwa kein persönlicher
Angriff? Erst dadurch wurde die Streiterei ausgelöst, vorher war die
Diskussion sehr sachlich, obwohl auch da schon gegensätzliche Meinungen
aufeinandergestoßen sind.

Versuchen wir jetzt also, wieder auf die sachliche Ebene zurückzukommen.

: Bearbeitet durch Moderator
Beitrag #5992775 wurde von einem Moderator gelöscht.
Beitrag #5992780 wurde von einem Moderator gelöscht.
Beitrag #5992782 wurde von einem Moderator gelöscht.
Beitrag #5992789 wurde von einem Moderator gelöscht.
Beitrag #5992795 wurde von einem Moderator gelöscht.
Beitrag #5992812 wurde von einem Moderator gelöscht.
Beitrag #5992824 wurde von einem Moderator gelöscht.
Beitrag #5992831 wurde von einem Moderator gelöscht.
Beitrag #5992840 wurde von einem Moderator gelöscht.
Beitrag #5992849 wurde von einem Moderator gelöscht.
Beitrag #5992852 wurde von einem Moderator gelöscht.
Beitrag #5992865 wurde von einem Moderator gelöscht.
Beitrag #5992874 wurde von einem Moderator gelöscht.
Beitrag #5992885 wurde von einem Moderator gelöscht.
Beitrag #5992887 wurde von einem Moderator gelöscht.
Beitrag #5992892 wurde von einem Moderator gelöscht.
Beitrag #5992896 wurde von einem Moderator gelöscht.
Beitrag #5992899 wurde von einem Moderator gelöscht.
Beitrag #5992908 wurde von einem Moderator gelöscht.
Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
5 lesenswert
nicht lesenswert
Nochmal: Ob man zum Bau einer neuen Werkzeugmaschine mit bestehenden
Werkzeugmaschinen auskommt oder darüberhinaus noch weitere Hilfsmittel
benötigt, ist für den oben von Chris gezogenen Vergleich völlig
irrelevant.

Wenn ihr weiter über Werkzeugmaschinen philosophieren wollt, dann tut
das bitte in einem eigenen Thread in "Mechanik & Werkzeug".

Falls der TE noch weitere Fragen zum eigentlichen Thema (Compilerbau)
hat, möge er dafür bitte ebenfalls einen neuen Thread starten.

Dieser Thread ist damit an seinem Ende angelangt.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.