Eigene Programmiersprache



  • DirkB schrieb:

    @Ethon und Pi
    Überlegt euch dann mal einen guten Namen.
    Piethon hört sich gut an 😃

    😃 👍



  • Ethon schrieb:

    @pumuckl: Okay, danke. Welches Framework würde sich anbieten? Als C++ler wohl Boost.Spirit oder?

    Mit Spirit hättest du dann gleich die große Panzerhaubitze für deinen Spatzen am Start (falls es denn ein Spatz ist) 😉
    Die Einarbeitungszeit für Spirit ist nicht zu unterschätzen, vielleicht tuts auch fürs Erste sowas wie Bison.



  • pumuckl schrieb:

    Ethon schrieb:

    @pumuckl: Okay, danke. Welches Framework würde sich anbieten? Als C++ler wohl Boost.Spirit oder?

    Mit Spirit hättest du dann gleich die große Panzerhaubitze für deinen Spatzen am Start (falls es denn ein Spatz ist) 😉
    Die Einarbeitungszeit für Spirit ist nicht zu unterschätzen, vielleicht tuts auch fürs Erste sowas wie Bison.

    Kann ich ja kaum glauben. Ich kenne Spirit allerdings auch nicht besonders gut. Spirit ist ja kein Parsergenerator, also vermutlich eher weniger mächtig als Bison. Dafür ist es C++, also für jemanden mit ausreichenden C++-Kenntnissen direkt zu benutzen und zu verstehen, während man für Bison eine eigene Notation lernen und die Theorie des LR-Parsers zumindest grundlegend verstehen muss.

    BTW scheint mir die Sprache nicht gerade ein Spatz zu sein.



  • Es gibt einen Artikel im Forum, wo du die auch einige Anregungen holen kanns



  • pumuckl schrieb:

    Wenn deine Sprache etwas komplexer ist, wird ein Parserframework dir auf jeden Fall viel Arbeit abnehmen. Wenn dich die Materie rund um den Compilerbau interessiert, wirst du ums dragon book kaum herumkommen - ist aber auch keine Schande, der Klotz ist gut angelegtes Geld 😉

    Compilers | ISBN: 9780321486813

    Sorry, aber diese Buch ist imho Müll. Didaktisch mieserabel aufgebaut, übermäßig kompliziert und letztendlich findet man darin auch kaum mehr relevante Informationen als in Büchern, die nur halb so dick sind. Mag ja sein, dass das Buch in den 80ern ganz toll war, von dem Ruhm zehrt es wohl heute noch.
    Wenn man tiefer in der Materie steckt, ist es vielleicht sinnvoll das Ding als Standardwerk zur Hand zu haben, aber zum Einstieg einfach vollkommen unbrauchbar.



  • maximAL schrieb:

    Didaktisch mieserabel aufgebaut,

    Fand ich jetzt nicht so. Gemessen an der Komplexität des Themas finde ich es didaktisch recht gut gelöst.

    übermäßig kompliziert

    imo kein bisschen.

    Wenn man tiefer in der Materie steckt, ist es vielleicht sinnvoll das Ding als Standardwerk zur Hand zu haben, aber zum Einstieg einfach vollkommen unbrauchbar.

    Wenn man nur an der Oberfläche kratzen will ist es sicher zu umfangreich und umfassend. Hätte ich vielleicht dazu schreiben sollen. Hab ich aber irgendwie auch gemeint mit "wenn dich die Materie interessiert". Vielleicht gehts nur mir so, aber wenn ich mehr als einen oberflächlichen Einstieg haben möchte, hole ich mir gleich die handfeste Literatur, anstatt mich für die ersten Tage mit einem leichteren Einsteigerbuch für die Bushaltestellenlektüre abzugeben.



  • sinnvoller wäre ja, erstmal ein neues Programmierparadigma zu definieren.

    Und dann eine Syntax erfinden, die das neue Paradigma in möglichst eleganter Form realisiert. Ungefähr so entstehen Brillanten wie Lisp, Smalltalk, ML, Prolog, APL, Forth, Self und Algol.

    Wir brauchen eher neue Paradigmata (hä?), denn von immer neuen Sprachen mit alten Paradigmata gibt es genug (hunderte, wenn nicht tausende)



  • Ich versuch es mit modgrammar für Python. Echt super und richtig einfach damit etwas auf die Beine zu stellen. 😉



  • Hm, also da sind schon gewaltige unterschiede zwischen unseren Vorstellungen.

    Meine Sprache baut auf einem Modulsystem auf. Ein Modul ist eine Codedatei und besteht (optional) aus Namespaces, die wiederum Funktionen und Variablen enthalten. (Klassen heb ich mir für später auf.)

    Was die genaue Syntax angeht, habe ich mir noch keine Gedanken gemacht. Ich weiß nur, dass man den Typ von Variablen nirgens explizit hinschreibt.

    Beispiel:

    let x = 42;
    let y = "blah";
    let z = 'c';
    

    usw.

    Funktionen sind entweder normale Funktionen, oder aber überladene Operatoren:

    let f(x) = x < 42 ? 666 : x;
    let operator pow 5 (a, b) = b ? a * (a pow (b-1)) : 1; # binärer operator, priorität 5
    let operator ! 123 (a) = a ? false : true; # unärer operator
    

    Konstrukte wie if, for, while, do-while, etc. gibt es nicht.



  • 314159265358979 schrieb:

    Was die genaue Syntax angeht, habe ich mir noch keine Gedanken gemacht. Ich weiß nur, dass man den Typ von Variablen nirgens explizit hinschreibt.

    Dein Ansatz erinnert mich stark an F#.



  • 314159265358979 schrieb:

    Hm, also da sind schon gewaltige unterschiede zwischen unseren Vorstellungen.

    Meine Sprache baut auf einem Modulsystem auf. Ein Modul ist eine Codedatei und besteht (optional) aus Namespaces, die wiederum Funktionen und Variablen enthalten. (Klassen heb ich mir für später auf.)

    Was die genaue Syntax angeht, habe ich mir noch keine Gedanken gemacht. Ich weiß nur, dass man den Typ von Variablen nirgens explizit hinschreibt.

    Beispiel:

    let x = 42;
    let y = "blah";
    let z = 'c';
    

    usw.

    Funktionen sind entweder normale Funktionen, oder aber überladene Operatoren:

    let f(x) = x < 42 ? 666 : x;
    let operator pow 5 (a, b) = b ? a * (a pow (b-1)) : 1; # binärer operator, priorität 5
    let operator ! 123 (a) = a ? false : true; # unärer operator
    

    Konstrukte wie if, for, while, do-while, etc. gibt es nicht.

    Quasi einfach eine weitere 0815 funktionale Sprache, die niemand braucht.



  • FSharp schrieb:

    Dein Ansatz erinnert mich stark an F#.

    F# kenne ich nicht mal 😉

    Realerr schrieb:

    Quasi einfach eine weitere 0815 funktionale Sprache, die niemand braucht.

    Es interessiert mich herzlich wenig, ob das jemals jemand braucht.



  • 314159265358979 schrieb:

    (Klassen heb ich mir für später auf.)

    Ah da freu ich mich dann schon auf das explizite self wie bei Python und weglassen liefert natürlich keinen Syntaxfehler, Warnung oder so, sondern geht erst beim Aufrufen in die Hose 😡

    Klassen nachzufrickeln ging schon bei Python schief, bitte nicht nachmachen, sondern aus deren Fehler lernen.



  • 314159265358979 schrieb:

    Realerr schrieb:

    Quasi einfach eine weitere 0815 funktionale Sprache, die niemand braucht.

    Es interessiert mich herzlich wenig, ob das jemals jemand braucht.

    Wenn die Sprache niemand braucht, also auch du nicht, was ist dann deren Existenzgrundlage?

    Und warum müsst ihr beiden auch so kranke Syntaxen ausdenken? Wie wäre es mit etwas lesbarem?



  • Wenn die Sprache niemand braucht, also auch du nicht, was ist dann deren Existenzgrundlage?

    Lernen und Spaß an der Entwicklung?

    Und warum müsst ihr beiden auch so kranke Syntaxen ausdenken? Wie wäre es mit etwas lesbarem?

    So "krank" finde ich weder meine Syntax noch die von Pi. Zumindestens wenn man nicht gerade Basic als Messlatte nimmt ...



  • Tippgeber schrieb:

    Ah da freu ich mich dann schon auf das explizite self wie bei Python und weglassen liefert natürlich keinen Syntaxfehler, Warnung oder so, sondern geht erst beim Aufrufen in die Hose 😡

    Klassen nachzufrickeln ging schon bei Python schief, bitte nicht nachmachen, sondern aus deren Fehler lernen.

    Sorry, aber Python kann ich nicht. Was ist da so schlimm?



  • Danke er meint dass du immer ein self (ist wie this in C++) vor einen Zugriff schreiben musst, auch wenn die Variable/Funktion standardmäßig in der Klasse definiert ist. Angesichts der Tatsache dass du in Python aber auch lustig zur Runtime neue Variablen/Funktionen in eine Klasse stopfen kannst, finde ich das garnicht mal so tragisch.



  • Wurden Klassen in Python wirklich nachträglich reingefrickelt? In welcher Python-Version gabs denn noch keine Klassen?



  • Bashar schrieb:

    Wurden Klassen in Python wirklich nachträglich reingefrickelt? In welcher Python-Version gabs denn noch keine Klassen?

    http://python-history.blogspot.com/2009/02/adding-support-for-user-defined-classes.html



  • ein Objektmodell draufklatschen und ein bisschen was funktionales, map reduction und lambda etwa, ist heute ein Muß :xmas2:

    Warum programmiert ihr nicht was Schönes Neues in Erlang oder Prolog oder helft sonstwie einer existierenden Sprache in die Zukunft, die es verdient hat ?


Anmelden zum Antworten