Wann ist eine Sprache eine Programmiersprache?



  • ... 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 in wihle umbenannt wurde. Ist Z erst dann eine Programmiersprache, wenn ich eine Textersetzung für wihle 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.


Anmelden zum Antworten