wielang hat bei euch die entwicklung einer einfachen programmiersprache gedauert?



  • __-- schrieb:

    ich wollts mit den optimierungen nicht übertreiben, wichtig wären mir für den anfang sowas wie constant folding und inline funktionen, denk das wird schwer genug 😞

    Constant Folding musste ich nachschlagen, bin kein Informatiker. Vielleicht werd ich irgendwann mal einer. Ich denke, wenn du alles richtig machst, sollten diese Optimierungen prinzipiell recht einfach machbar sein. Damit meine ich nicht, dass es einfach ist, Kandidaten für das Inlining zu erkennen, aber die Umsetzung der beiden am Baum sollte nicht allzu schwierig sein.

    Ob es sich lohnen würde, daraus ein Projekt im Projekte-Forum zu machen? Sicherlich würden dann einige bedenkliche Leute mitreden, aber vielleicht zahlt es sich aus. Wäre eine nette Sache, wenn man das entspannt angeht, und trotzdem genug guten Code zusammenträgt, um was ordentliches zu bauen. Spaghetticode dürfte dann aber nicht dabei sein.
    🙂



  • Bei einem reinen Interpreter würd ich mir solche Optimierungen sparen, was bringt das denn?



  • mngbd schrieb:

    Ob es sich lohnen würde, daraus ein Projekt im Projekte-Forum zu machen? Sicherlich würden dann einige bedenkliche Leute mitreden, aber vielleicht zahlt es sich aus. Wäre eine nette Sache, wenn man das entspannt angeht, und trotzdem genug guten Code zusammenträgt, um was ordentliches zu bauen. Spaghetticode dürfte dann aber nicht dabei sein.
    🙂

    ja, ist ne überlegung wert. denk aber dafür ists noch ein bischen zu früh (müsst erstmal aufräumen und paar spaghettis rausziehen 🤡 (bischen funktionalität bräucht sie auch noch...)).

    Bashar schrieb:

    Bei einem reinen Interpreter würd ich mir solche Optimierungen sparen, was bringt das denn?

    naja also ohne interpreter kann ich ja die optimierungen nicht durchführen, oder? btw. ich find die schon wichtig, sonst lässt sie sich ja gar so schlecht nutzen und eigentlich wollt ich sie dann schon mal gelegentlich produktiv einsetzen 😋



  • Ich hab ehrlich gesagt keine Ahnung, was du mir mitteilen willst.



  • Bashar schrieb:

    Ich hab ehrlich gesagt keine Ahnung, was du mir mitteilen willst.

    int mul(int x,int y){
      return x*y;
    }
    

    muß ich doch interpretieren, wie soll ich sonst rausfinden was "mul(2,4)" rausgibt? wenns fertig ist würd ichs schon mal gern verwenden, das wär dann der teil "spaß" (sonst geht der ja iwie ab) 😃

    @edit: evtl. fehlt auch der teil, dass ich es im anschluß an den interpreter auch mal ganz gern nativ compilieren würde. 😕



  • Ja Spaß hin oder her, aber ich sehe nicht, wieso da jetzt Optimierungen zwingend notwendig sind, um das produktiv einsetzen zu können? Zumal die, wie ich schon sagte, nicht so viel bringen wie bei einem Compiler. Oder anders gesagt: Die beste Optimierung für einen Interpreter ist, daraus einen Compiler zu machen 😉



  • ich würd dem c-compiler ganz gern gutes ausgangsmaterial übergeben, evtl. brauchts ihn ja dann iwann nicht mehr 🤡



  • Vicious Falcon schrieb:

    Ich habe vor einiger Zeit einmal einen "Assembler-Interpreter"( 🙄 ) gebaut. Er liest aus einer Datei die nötigen Anweisungen, natürlich ohne .data Abschnitte zu beachten.
    Sowohl "Register" als auch einige Befehle wie add, mul etc. sind vorhanden. PUSH und POP sind ebenfalls vorhanden...

    Das ist sehr geil; ich erinnere mich, wie ich vor vielen Jahren in den Ferien an einem sehr, sehr langweiligen Tag einen "Assembler-Interpreter" unter DOS mit PowerBasic geschrieben habe. Gewisse Befehle wie Interrupts wurden dabei direkt wieder in Maschinencode umgesetzt. Zeitaufwand für einen dummen, aber hartnäckigen Jungen: 6-8 Stunden.

    Was war das für eine Freude, als spät am Abend die ersten Grafiken gezeichnet werden konnten, nachdem folgende Zeilen "interpretiert" wurden:

    mov al, 13h
    xor ah, ah
    int 10h
    

    Und was hat es mir am Ende gebracht? Sehr viel, denn wie sinnlos die Entwicklung einer eigenen Programmiersprache auch sein mag, sie vermittelt einem das ganze Repertoir an Techniken und Abstraktion, die man als Entwickler auch sonst immer wieder brauchen wird.





  • _-- schrieb:

    ich würd dem c-compiler ganz gern gutes ausgangsmaterial übergeben, evtl. brauchts ihn ja dann iwann nicht mehr 🤡

    Verwendest du C als Zielsprache?



  • mngbd schrieb:

    _-- schrieb:

    ich würd dem c-compiler ganz gern gutes ausgangsmaterial übergeben, evtl. brauchts ihn ja dann iwann nicht mehr 🤡

    Verwendest du C als Zielsprache?

    ja, hatte ich ursprünglich geplant. denk die performance wird dann besser als bei einem der asm erzeugt (da indirekt die ganzen optimierungen des compilers angewendet werden)?



  • __-- schrieb:

    ja, hatte ich ursprünglich geplant. denk die performance wird dann besser als bei einem der asm erzeugt (da indirekt die ganzen optimierungen des compilers angewendet werden)?

    Ja klar, das machen einige, die C als Zielsprache verwenden. Wenn du dich für einen speziellen C-Compiler entscheidest, kannst du den Code so generieren, wie er ihn gerne hat. Wobei ein Könner in der betreffenden Maschinensprache das wahrscheinlich händisch besser machen würde.

    Der andere Vorteil von C als Zielsprache ist die Portabilität, und natürlich die Tatsache, dass man die Maschinensprache nicht beherrschen muss. Für mich wäre das wichtiger als die Performance. volkard hat recht, wenn er sagt, dass man Performance viel eher duch Verzichten als durch Aufpropfen von Features erreicht. Und durch Verzichten erhält man imho auch am ehesten ein einfaches und klares Design.

    Ich kann deine Vorgehensweise nicht beurteilen, aber ich fürchte, dass du Gefahr läufst, dich in Details zu verlieren, bevor die Fundamente fest stehen.
    🙂


Anmelden zum Antworten