[PHP] Neue Programmiersprache - Konzept

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Murdoc, 18. Oktober 2012 .

Schlagworte:
  1. 18. Oktober 2012
    Zuletzt bearbeitet: 19. August 2013
    Hallo Leute,

    ich entwerfe in meiner Freizeit eine eigene Programmiersprache unter dem Projektnamen "PHS".

    Bevor ihr euch an den Kopf packt:
    Ich habe nicht vor eine eigene VM oder gar eine Maschinennahe Sprache zu erstellen!

    Ich dachte eher an einen Dialekt, der sich nach PHP übersetzen lässt.
    Mit dem Unterschied, dass die Sprache AOT ("Ahead Of Time" -> bevor der Code ausgeführt wird) übersetzt wird. Man kann das ganze natürlich auch zur Laufzeit übersetzten lassen und entsprechend Speichern.

    Das hat den Vorteil, dass der Code gründlich untersucht werden kann um ein optimales Ergebnis zu produzieren (= der PHP Code).

    Folgende Dinge habe ich auf meiner TODO-Liste:
    • Kompatibel zu vorhandenem PHP-Code
    • Eigenes Template-Format
    • Lexical Scope für Variablen
    • First-Class Funktionen
    • Macros
    • Prototyping
    • Div. Syntax Zucker

    Kompatibel zu vorhandenem PHP-Code
    Ein Ziel ist es, komplett kompatibel mit vorhandenem PHP-Code zu bleiben ohne eine zusätzliche Runtime zu implementieren.

    D.h.: Ein Script erstellt mit dieser Sprache soll ohne Einschränkungen vollen Zugriff auf Klassen, Variablen, Konstanten und auch Funktionen* haben.

    * Siehe auch "Probleme mit vorhandenen Funktionen"

    Eigenes Template-Format
    Verworfen

    Lexical Scope für Variablen
    Variablen und Funktionen werden an den aktuellen Geltungsbereich statt an den Kontext gebunden - bzw. es wird während der Übersetzung überprüft was sinnvoller ist (z.b. bei Referenzen innerhalb von verschachtelten Funktionen).

    First-Class Funktionen
    Funktionen sind Variablen und können entsprechend angesprochen (z.b. als Parameter) und zur Laufzeit auch wieder gelöscht werden. Siehe dazu weiter unten "Probleme mit vorhandenen Funktionen".

    Macros
    Verworfen

    Prototyping
    • Klassen können im Quelltext (natürlich nur während der Übersetzung) an mehreren Stellen einfach erweitert werden.
    • Funktionen können jederzeit überschrieben werden.

    Div. Syntax Zucker
    • "$" fliegt raus
    • "\" wird zu "::"
    • ":" statt "extends", "~" statt "implements"
    • "public:" "protected:" "private:" wie z.b. in C++
    • "use other::Klass;" fungiert zusätzlich als import/autoloader
    • + Operator für Zeichenketten**
    • [0..10] als substr/array_slice***
    • Reguläre Audrücke als Sprachfeature /foo/
    • "this" wird Optional
    • "parent::xyz()" in eine Methode mit dem selben Namen wird zu "super()"
    • getter/setter
    • schlagt was vor!

    ** Bestimmte Operatoren zu überladen ist in PHP schwer umzusetzen ohne Performance-Einbußen während der Laufzeit.

    *** Siehe das Problem unter "**" - Es ist aber möglich diesen Operator auf einen bestimmten Typ zu begrenzen (also entweder Array oder Zeichenkette)

    Es wäre aber auch möglich das ganze für alle Typen zu realisieren, man braucht dazu nur einen umfangreichen Spurensucher (Trace).

    Die Sprache wird statisch typisiert!

    Probleme mit vorhandenen Funktionen
    Da alle von PHP definierten Funktionen eben keine First-Class Funktionen sind, muss eine Lösung her diese während der Übersetzung dennoch als eben solche zu nutzen.

    Ich dachte da eine "extern" Deklaration bzw. "use extern ...".
    D.h. vordefinierte Funktionen wären zu jeder Zeit vorhanden, benötigen aber vorher eine Deklaration (ähnlich wie in C/C++ .c/.h) damit der Compiler Bescheid weiß.


    Vorhandene Variablen, Konstanten, Funktionen, Klassen, Interfaces und Traits müssen mit `extern` bekannt gemacht werden.
    Dazu wird es eine umfangreiche stdlib geben.



    Wer das ganze verfolgen will oder vielleicht sogar Lust hat später ein wenig zu helfen:
    Repo TBA
     
    2 Person(en) gefällt das.
  2. 5. November 2012
    AW: Eigene Programmiersprache - Konzept

    Hey,

    habe mir dein Konzept mal in Ruhe angeschaut.

    Sieht auf jedenfall sehr Interessant aus und auch durchaus sehr durchdacht!

    Allerdings weiß ich nicht was du dir davon versprichst? Für wen soll diese neue Sprache gut sein? Wer soll damit arbeiten? Oder geht es rein um den Spaß daran soetwas zu konzipieren?

    Und welche genauen Vorteile versprichst du dir davon?


    Grüße Blackb!rd
     
  3. 5. November 2012
    AW: Eigene Programmiersprache - Konzept

    Hab gar nicht mitbekommen, dass du das noch aktiv verfolgst. Vom Konzept her gefällt mir das so weit sehr gut.

    Sollte mir irgendwas zu dem "Funktionen-Problem" einfallen melde ich mich. An sich ein interessantes Problem ?(

    Man sollte den Lerneffekt bei solchen Aufgaben nicht unterschätzen. Allein der ist es mMn wert.
     
  4. 19. August 2013
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    AW: Eigene Programmiersprache - Konzept

    Kleines Update:

    Die Grammatik ist soweit implementiert und ich habe einen funktionsfähigen Parser dafür.

    Ich arbeite nun an einem Analyzer/Verifier und Compiler (Transcompiler).

    Wenn jemand Interesse und vielleicht ein wenig Ahnung von Compilerbau hat wäre es super wenn ihr euch meldet.

    Jabber: murdoc@jabber.ccc.de
    Oder direkt im Channel #rr-coding@conference.jabber.ccc.de

    Wer Hilfe bezüglich Jabber braucht:
    Jabber Chatroom/Konferenz betreten/config mit Miranda / Trillian / QIP - RR:Board

    Hier meine YACC-Grammatik (Ohne Context, daher sieht TypeName ein bisschen komisch aus):
    http://putc.me/etc/phs/grammar.y

    Nicht wundern, die Datei wandert vorm übersetzen durch eine precompiler.
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.