Wann ist eine Sprache eine Programmiersprache?
-
Die Wortmenge mag die gleiche sein, aber erst dein Compiler setzt das Theoriekonstrukt (eine *formale* Sprache) in ein praktisches um (eine *Programmier*sprache). Dahinter steht vielleicht das alte formale Konzept, aber eine Programmiersprache ist das (formale Konstrukt) doch deswegen noch lange nicht.
-
Compiler übersetzen keine Sprachen, sondern in einer Sprache geschriebene Texte.
Edit: Vielleicht habe ich dich da auch falsch verstanden. Meinst du also, dass alle von einem Compiler akzeptierten Texte eine Programmiersprache bilden? Warum muss der Compiler denn dann von jemandem geschrieben worden sein? Nimm einen theoretischen Compiler, für den du das Verhalten spezifizierst, und schon bist du wieder bei formalen Sprachen.
-
Michael E. schrieb:
Compiler übersetzen keine Sprachen, sondern in einer Sprache geschriebene Texte.
Compiler ersetzen Wörter der Quellsprache in Wörter der Zielsprache.
Wow, was für eine sinnlose Unterhaltung.
-
Bist du "Naja" und "Im..." oder ist das jetzt ein Einwurf von einem gelangweilten Zuschauer?
-
Michael E. schrieb:
Edit: Vielleicht habe ich dich da auch falsch verstanden. Meinst du also, dass alle von einem Compiler akzeptierten Texte eine Programmiersprache bilden? Warum muss der Compiler denn dann von jemandem geschrieben worden sein? Nimm einen theoretischen Compiler, für den du das Verhalten spezifizierst, und schon bist du wieder bei formalen Sprachen.
... ich ma weg... mein vorredner (ich mag lolalter!) hat das zu genüge ausgeführt.
Was du mit diesem Geistigen Erguss allerdings versuchst zu beschreiben versteh ich auch beim 5. durchlesen nicht.
Natürlich ist der Compiler in einer (Programmier-)Sprache geschrieben. Diese wurde natürlich wiederrum von einer anderen (Programmier-)Sprache geschrieben usw. bis der letzte Compiler (der Assembler) in Maschinencode bzw. gleich in der Hardware (Übersetzungstabelle, Lookup und Ausführung auf CPU) direkt geschrieben ist.
In der Theorie hat das alles allerdings überhaupt nix zu suchen. Da gibt es nur die Chomsky Hirachie und einen Haufen Algorithmen/Beweise die Parser beschreiben oder erklären warum es keinen "Do-what-I-want"-Button geben kann...
Gruß
Der König
-
<ich halte mich besser raus>
-
... der einzig wahre König
Naja = lolalter!
-
Ich... schrieb:
... der einzig wahre König
Naja = lolalter!
Nein. "Naja" schreibt da oben auch nichts sinnvolles. ("Compiler setzt das Theoriekonstrukt (eine *formale* Sprache) in ein praktisches um (eine *Programmier*sprache)")
-
... falsch is dir Denke doch gar nicht, oder?
-
... ich natürlich, nicht "dir"...
-
Doch die Denke ist falsch.
Es gibt eine Quellsprache und es gibt eine Zielsprache.
Ein Compiler übersetzen alle Wörter von der Quelle zum Ziel. Fertig.Quelle darf C++, Jave, Delphi, Klingonisch und Plattdeutsch sein.
Ziel darf Basic, C++, Assembler, Hochdeutsch und UML sein.
Und jeweils jedes andere erdenkliche Konstrukt.Für einen Compiler ist "nur" wichtig, dass die Transformation eindeutig und Semantikerhaltend ist. Wenn schon so auf formalen Sprachen bestanden wird (reine Syntax!), frage ich mich wo die formale Semantik bleibt. Genau: Die ist in der Praxis viel zu schwierig zu notieren und zu gewährleisten.
Keine von beiden muss über eine Grammatik formal definiert sein. (Obwohl das im Sinne robuster Parser wohl empfehlenswert ist).
Jede von beiden darf aber natürlich auch streng formal definiert sein.Der Begriff "praktisch" mit "Programmiersprache" gleichzusetzen ist ein Nullsatz. Was soll das bedeuten?
-
Für mich sollte eine Programmiersprache mindestens Turing-vollständig sein (womit Maschinencode noch nicht ausgeschlossen wäre). Um Maschinencode auszuschließen, müsste man wohl subjektive/ungenaue Definitionen einsetzen, z.B. deren Einsatzzweck.
-
wxSkip schrieb:
Für mich sollte eine Programmiersprache mindestens Turing-vollständig sein
Das ist auch die einzig sinnvolle Definition.
Eine geschickt konstruierte Anlage in Minecraft, die bedingte Sprünge zu Labels, einfachste Arithmetik und Variablen realisiert, wäre schon eine Programmiersprache.
-
Wie? Wir sind schon auf Seite 4 und kein Java vs C++ Flame?
Kein Systemsprachen-vs-Highlevel-Spachen-Gedöhns?Echt schwach.
-
Assembly muss ja eine Programmiersprache sein, weil man damit den Prozessor mit Zeichen und Buchstaben programmieren kann.
Meine 2 Cent zu diesem Thema
-
wxSkip schrieb:
Für mich sollte eine Programmiersprache mindestens Turing-vollständig sein (womit Maschinencode noch nicht ausgeschlossen wäre). Um Maschinencode auszuschließen, müsste man wohl subjektive/ungenaue Definitionen einsetzen, z.B. deren Einsatzzweck.
ACK
Und ich wundere mich gerade sehr dass es bei dieser Fragestellung über 3 Seiten gedauert hat bis der Begriff Turing-vollständig gefallen ist.
-
hustbaer schrieb:
wxSkip schrieb:
Für mich sollte eine Programmiersprache mindestens Turing-vollständig sein (womit Maschinencode noch nicht ausgeschlossen wäre). Um Maschinencode auszuschließen, müsste man wohl subjektive/ungenaue Definitionen einsetzen, z.B. deren Einsatzzweck.
ACK
Und ich wundere mich gerade sehr dass es bei dieser Fragestellung über 3 Seiten gedauert hat bis der Begriff Turing-vollständig gefallen ist.
Weil es langweilig ist, nur Bücherwissen nachzuplappern. Eine universelle Turingmaschine gibt es sowieso nicht.
-
lalalalaa schrieb:
Weil es langweilig ist, nur Bücherwissen nachzuplappern. Eine universelle Turingmaschine gibt es sowieso nicht.
-
Also für mich ist eine Programmiersprache eine Sprache die hauptsächlich zum programmieren gedacht ist. Und wenn es eine spezielle Sprache zum programmieren meines Toasters gäbe, dann wäre das auch eine Programmiersprache, auch wenn sie nicht Turing-vollständig wäre.
-
Den... schrieb:
Was du mit diesem Geistigen Erguss allerdings versuchst zu beschreiben versteh ich auch beim 5. durchlesen nicht.
Nehmen wir mal an, ich denke mir eine C-ähnliche Sprache Z aus mit Turingvollständigkeit und allem Drum und Dran. Das ist, wenn es nach dir geht, noch keine Programmiersprache, weil es keinen Compiler dafür gibt.
Dann beschreibe ich bis ins kleinste Detail, wie Z-Code in C-Code übersetzt werden soll. Immer noch keine Programmiersprache.
Dann mal ich lustige UML-Bildchen für meine obige Übersetzungsbeschreibung. Immer noch keine Programmiersprache.
Dann setze ich diese UML-Bildchen in C-artigen Pseudocode um. Immer noch keine Programmiersprache.
Aber wenn ich nun diesen Pseudocode in echten C-Code übersetze und damit einen kompilierbaren Compiler habe, zählst du Z auf einmal zu den Programmiersprachen? Das erscheint mir äußerst willkürlich, vor allem da sich an Z überhaupt nichts geändert hat.
Edit: Oder um es noch deutlicher zu machen: Z unterscheide sich von C nur darin, dass das Schlüsselwort
while
inwihle
umbenannt wurde. Ist Z erst dann eine Programmiersprache, wenn ich eine Textersetzung fürwihle
geschrieben habe?wxSkip schrieb:
Für mich sollte eine Programmiersprache mindestens Turing-vollständig sein
Sehe ich nicht so, denn ich möchte LOOP auch als Programmiersprache bezeichnen.