Ergebnis 1 bis 12 von 12

Thema: Script(ing) Engine

  1. #1
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.997
    Renommee
    283

    Script(ing) Engine

    Moin,

    ich möchte ganz gerne eine eigene Script(ing)-Sprache schreiben.

    So wie ich das sehe, sollte ich in meinen Feldern (Hashtables für Klassen) z.B. Funktionen "registrieren", die dann auf Funktionen
    der Träger-Programmiersprache verweisen. ... nun möchte ich aber nicht jede meiner eigenen Funktionen so laufen lassen: wenn
    ich nur eine gute Basis auswähle, so können sich ja meine eigenen Funktionen auch auf sich selbst beziehen (also so, wie in Java-
    Script entweder eine "Function.toString()" deren Aufbau ausgibt, oder eben:
    Code:
    function replace() { [native code] }
    Das heißt, ich suche im Prinzip die wichtigsten Funktionen, um mit möglichst minimaler Basis alle meine Funktionen ohne ständige
    Rückbezugnahme auf die "nativen" arbeiten lassen zu können.

    Was wäre der beste Weg, diese zu finden?

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  2. #2
    Registered User
    Registriert seit
    Aug 2000
    Beiträge
    1.079
    Renommee
    448

    AW: Script(ing) Engine

    bau erstmal einen parser, der buchstabe für buchstabe verarbeitet und dann erkennt, was anweisung, variable, werte und kontrollstrukturen / schleifen, etc. sind. danach kannst du dich per eval anderer sprachen der ausführung bedienen, solltest du nicht einen eigenen maschinencodegenerator bauen wollen.

    OffTopic:
    diese übung soll dir der einschätzung des aufwandes / nutzen dienen
    Signatur sowie alle persönlichen Informationen entfernt.

  3. #3
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.997
    Renommee
    283

    AW: Script(ing) Engine

    Keine Sorge, ich kann das schon, so ist das nicht. Auch AST ist mir nicht unbekannt o.ä. Parser (ob nun Protokolle oder UPN o.ä.).

    Meine Überlegung war bloß, dass ich gerne so viel wie möglich in meiner eigenen Sprache codieren würde, damit diese möglichst
    umfangreich völlig neu arrangiert werden kann.

    Meine Überlegung ist, dass im Grunde String-Verschiebungen das wichtigste sein sollten. Nya~ mal sehen.

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  4. #4
    Registered User
    Registriert seit
    Aug 2000
    Beiträge
    1.079
    Renommee
    448

    AW: Script(ing) Engine

    eigene programmiersprache - eigentlich immer eine schlechte idee. was ist mit debugging?

    Deine Problemstellung erschließt sich mir nicht. Vielleicht helfen KOMPAKT und MINIMAL gehaltene Beispiele, was du erreichen möchtest, damit man dir vielleicht etwas anderes raten kann.
    Signatur sowie alle persönlichen Informationen entfernt.

  5. #5
    Moderator
    Registriert seit
    Jul 2000
    Beiträge
    3.763
    Renommee
    1214

    AW: Script(ing) Engine

    klingt nach einer reimplementierung von lisp.
    kuchen ist dumm, weil er nur labert und nicht wirklich lernen oder verstehen will.

  6. #6
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.997
    Renommee
    283

    AW: Script(ing) Engine

    Neee... ich wollte bloß ganz allgemein darauf hinaus, dass es doch wohl Funktionen geben muss, welche als absolute Grundlage vorgehen,
    aus welchen heraus sich alle weiteren Funktionen implementieren lassen (gewissermaßen sowas wie die Basis-Logik-Gatter, aus denen sich
    alle weiteren Gatter konstruieren lassen). Und das hatte ich mir erhofft in String-Verschiebungen v.a.

    Jedenfalls bin ich jetzt so weit gekommen, dass ich einfach eine Art JavaScript-Preprozessor verwende, indem ich jedem Objekt die eigenen
    Operatoren v.a. implementiere. Also ( Object.prototype['='] ) bspw. und dann eine einfache Umwandlung zu nativem JavaScript, so dass z.B.
    Object.prototype.assign(left, right) daraus wird. Oder auch ( Object.prototype['$'] ) für Variablen mit eigenem '$'-Prefix, wobei es auch weitere
    Prefixe wie z.B. ['#'] zur Umsetzung der Elemente-Menge geben kann oder ( Object.prototype['&'] ) zur (Adress-)Referenzierung.

    Im Prinzip reduziere ich alles auf eine Art "Faltung" vs. "Entfaltung" von kompaktem, eigenen Code zu größerem JavaScript mit der Angabe
    jeweils entsprechender, äquivalenter Funktionen. Wobei ich dabei an Prefix- sowie Postfix-Operatoren v.a. denke. ... damit erwirke ich quasi
    die Anwendbarkeit eigener "getValue()"-Funktionen etc., ohne dass ich deren String-Key-Names umständlich [groß] codieren müsste. ... ich
    meine auch fast, es gibt bereits ähnliche Software. Preprozessoren gibt's ja sogar schon für CSS etc. ...

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  7. #7
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.997
    Renommee
    283

    AW: Script(ing) Engine

    Ich frage mich dazu bloß, welche die effizienteste bzw. sauberste Form wäre, das zu parse()'n.

    Davon ab sei angemerkt, dass ich natürlich ein paar Erweiterungen mit einbinden möchte; d.h. ich füge größere Funktionalität hinzu,
    wie bspw. Echtzeit-Objekt-Synchronisation mit einer Datenbank sowie im Netzwerk-Verbund einiger, paralleler Server. Und absolute
    Event-PUSH-Grundlage sowie ein 3D-Kontext (siehe PSYC "_context" hierzu). *g*

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  8. #8
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    403
    Renommee
    270

    AW: Script(ing) Engine

    Meine erste Empfehlung wäre, dass du Julia lernst: https://julialang.org/

    Ist quasi sowas wie Lisp auf bunten Pilzkuchen

    Via LLVM wird das meiste gejittet, so ist es fast so schnell wie C. Auch kannste den AST manipulieren etc., dynamischer als JavaScript, aber dafür halt nicht Browser-mäßig zu gebrauchen, die Sprache kannste nicht mal so eben sandboxen... und die Sprache ist fast komplett in sich selbst geschrieben. So kannst du die von innen heraus, über REPL, noch weiterentwickeln.

    Kannst du ausführen, was du mit Object.prototype['='] meinst? Haste sowas wie Operatorüberladung? Das fehlt mir auch in JavaScript und da gibts ja verschiedene Ansätze, z.B. von Paper.js: http://scratchdisk.com/posts/operator-overloading

    Wäre auch interessant, wenn du deine eigene Sprache im Browser entwickelst. Du kannst deine eigene JIT-Sprache in modernen Browser entwickeln. WebAssembly-Module sind sowas wie DLL's, die man zusammenlinken kann.

    Vorteile wären natürlich die hohe Verbreitung leistungsfähiger Browser und eine der besten REPL-Consolen auf Knopfdruck zum Debuggen (F12). Dazu gibt es zig Parser in JavaScript zur Auswahl.

    Was meinst du mit 3D-Kontext? Arbeitest du mit WebGL? Arbeite auch damit seit ein paar Monaten, inklusive WebAssembly, um C++ Bibliotheken im Browser laufen zu lassen, im Verbund mit der JavaScript Game Engine PlayCanvas: https://github.com/playcanvas/engine

    Das geile im Browser ist, dass du hardwarebeschleunigte Composingfähigkeiten hast. D.h. du kannst die HTML-Nodes einfach transparent machen und z.B. die WebGL-Kontexte rendern einfach übereinander. So kannst du dann via transparentem HTML-Layer alles im Hintergrund debuggen.
    Über das neue Zeitalter der Gehirne eines Menschen!
    echo 'main() { char z[] = "ping "; for(;printf(z);z[1]^=6); }' > a.c; gcc a.c -o a; ./a # 16.11.2011 02:51

  9. #9
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.997
    Renommee
    283

    AW: Script(ing) Engine

    Ich arbeite - mehr oder minder - an meinem eigenen 3DScript.

    Der Name basiert auf dem Gedanken, dass die Erreichbarkeit von Variablen, also der Kontext (den ich im MUD(-Raum) als (PSYC-)"_context" im Netz synchronisiere),
    Sache einer "3D-Betrachtung" ist. Sprich, warum sollten Variablen nur innerhalb von Funktionen gültig bleiben, wenn doch eigentlich jede Sub-Funktion wie ein '{}'-Code-
    Bereich eine (nur eben Laufzeit-)Verschachtelung ist? Sprich, wenn man z.B. folgendes schreibt,

    Code:
    var max = this.length;
    for(var i = 0; i < this.length; i++)
    {
            max--;
    }
    ... so bleibt "max" ja auch erreichbar in diesem '{}'-Bereich der Schleife. Das gilt bei mir nun auch für alle Sub-Funktionen.

    Und das Ganze noch so weit "async" im PUSH-System (siehe PSYC wieder mal ;-)´, dass die Veränderung dieser höheren
    Variablen eine Art Event-Feuerung erzeugt, damit an allen diese Variable referenzierenden Stellen dies propagiert wird - in
    Echtzeit also durch Verwendung von MUD-Räumen (vorstellbar als IRC-Räume für jede(s) verwendete Objekt(-Instanz)). ...

    Weitergehend möchte ich nicht alles immer nur durch Referenzen erreichbar halten, sondern so weit zusammen mit einer
    Software-Datenbank (Dateisystem als/für Tabellen) arbeiten, dass man sich alle jeweils verwendeten, konkreten Objekte in
    einem DB-Query heraus sucht. Bspw.

    OffTopic:
    Zum Schluss noch die Abzählung von Abständen zwischen gleichen Codes bzw. Funktionen usw. - nicht nur für's neuronale
    Netze, sondern auch dazu, eine Berechnungs-Basis zu haben, inwieweit zeitliche (oder räumliche..) Abstände zwischen meinen
    Funktionen sich reduzieren lassen auf eine Betrachtung von "Nebenläufigkeit". D.h. (zusammen mit Event-(Observer-)Pattern)
    eine automatische Code-Parallelisierung erreichen.

    PS: Das Result, also die Relationierung aller gezählten Raumzeit-Differenzen, entspricht ungefähr dem, was die Raumzeit eines
    Universums ausmacht. Um kurz zu einem anderen meiner Postings zu dir zu kommen. Das ist die Abstraktion dessen, was sonst
    eigentlich im multi-dimensionalen [Geist] bzw. der Software selbst statt findet. Abgebildet auf nur wenige Dimensionen (und somit
    eine hohe Menge konkreter Inhalte - gibt ja dieses "Gesetz" oder so, dass bei der Verwendung höhere Dimensionen exponentiell
    oder so eine Abnahme von Koordinatne-Werten geschieht, bzw. die Verteilung oder vielmehr DICHTE der z.B. Punkte im Raum).

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  10. #10
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.997
    Renommee
    283

    AW: Script(ing) Engine

    Zitat Zitat von gruena
    Kannst du ausführen, was du mit Object.prototype['='] meinst?
    Ich möchte meinen div. Klassen jeweils ihre eigenen Operatoren so implementieren. Je nachdem Object.prototype['='] oder Array.prototype['*'],
    um letzteres z.B. zu einer Umformung von "Array.prototype.split()" zu machen.

    Das wollte ich, was das eigentliche Thema anfangs war, so weit in meiner eigenen Sprache "überladbar" machen wie nur möglich. Im Kern ist
    es der Gedanke, dass ich nur ein unbedingtes Minimum zu Anfang vorgeben, um dann die gesamte, restliche Sprache in sich selbst zu imple-
    mentieren (quasi wie der Bootstrap beim Compiler-Baum).

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  11. #11
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.997
    Renommee
    283

    AW: Script(ing) Engine

    Zitat Zitat von gruena
    Das geile im Browser ist, dass du hardwarebeschleunigte Composingfähigkeiten hast. D.h. du kannst die HTML-Nodes einfach transparent machen und [...]
    Ich wollte sowieso alles im "<canvas>" selbst zeichnen. Zusammen mit eigener ""Web.Forms"-API u.a. und mit "Web.Socket" direkt in Echtzeit vom Server push()'ed.

    Sinn und Zweck ist u.a. (neben der Ästhetik allein schon ;-] eine evtl. mögliche Reduzierung vom "Reverse Engineering". Ich würde meine Software von meiner eigenen Cloud aus
    laufen lassen. Wenn jeder Client lediglich alle grafischen Daten erhält (die von "Web.Forms" bis zu 3D-Spielen [@ MUD-Engine] gehen sollten), so können sie nichts mit "SoftIce",
    "OllyDbg" o.ä. unternehmen.

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  12. #12
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.997
    Renommee
    283

    AW: Script(ing) Engine

    OffTopic:
    PS: Raum und Zeit als gegensätzlich polarisierte Energie/Bewegung/... Raum und Zeit beschreiben den Unterschied zwischen positiv polarisierter Zukunft (also (+) Zahlen) und negativ polarisierter Vergangenheit (d.h. (-) negative Zahlen),
    oder anders gesagt, zur SW passend, dass alles rückwärtige bzw. früher statt findende gegen alles später auftretende gesetzt wird. Oder noch anders evtl. sogar Links vs. Rechts (Zuweisung gegen Abruf bzw. Aufruf vs. Rückgabe im Prozess).

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. 2D - Engine
    Von ChickenInvader im Forum Algorithmen und sonstige Programmiersprachen
    Antworten: 3
    Letzter Beitrag: 06.08.2006, 11:52
  2. HTML Engine
    Von TMoS im Forum Pascal / Delphi
    Antworten: 12
    Letzter Beitrag: 12.10.2005, 14:48
  3. Engine und 3DSM
    Von holzhacker im Forum C / C++
    Antworten: 8
    Letzter Beitrag: 13.08.2003, 18:45
  4. [3D-Engine][veraltet][siehe 3D Engine aktive Projekte]
    Von ChaosAngel im Forum Nicht abgeschlossene Projekte
    Antworten: 23
    Letzter Beitrag: 20.05.2002, 22:12
  5. 3d-Engine
    Von tobi im Forum VisualBasic / VBScript
    Antworten: 1
    Letzter Beitrag: 22.10.2001, 19:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •