Wann ist eine Sprache eine Programmiersprache?



  • inflames2k schrieb:

    Weil was nun einmal alle Programmiersprachen gemeinsam haben ist, dass sie irgendwann in Maschinencode übersetzt werden

    Zählen dann LOOP und WHILE nicht als Programmiersprachen, weil ich keine konkrete Maschine mit "Maschinencode" dahinterstehen habe?



  • ... praktischen Sinne nicht, da es sich dabei lediglich um abstrakte Konstrukte aus der Theorie handelt, wie z.B. Pseudocode oder Struktogramme



  • Im... schrieb:

    ... praktischen Sinne nicht, da es sich dabei lediglich um abstrakte Konstrukte aus der Theorie handelt, wie z.B. Pseudocode oder Struktogramme

    Und wenn ich einen Compiler für die Sprachen schreibe, werden sie auf einmal Programmiersprachen?

    Note to self: Vielleicht sollte ich nicht mehr so viel mit rhetorischen Fragen arbeiten.



  • 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.


Anmelden zum Antworten