Programmiersprache für self-modifying-code?

  • Ich bin vor kurzem denken über das schreiben selbst modifizierende Programme, ich denke, es kann kraftvoll sein und Spaß machen. Also ich bin derzeit auf der Suche nach einer Sprache, können Sie ein Programm den eigenen code problemlos.
  • Habe ich gelesen, C# (als Weg ringsherum) und die Möglichkeit zum kompilieren und ausführen von code in der runtime, aber das ist zu verletzen.
  • Ich denke auch über Montage. Es ist einfacher, es zu ändern, ausführen von code, aber es ist nicht sehr mächtig (sehr roh).

Können Sie vorschlagen, eine mächtige Sprache oder feature unterstützt das ändern von code in der runtime?

Beispiel

Dass das, was ich meine, indem geändert wird, code in der runtime:

  Start:
  a=10,b=20,c=0;
  label1: c=a+b;
  ....
  label1= c=a*b;
  goto label1;

und erstellen eine Liste von Anweisungen:

  code1.add(c=a+b);
  code1.add(c=c*(c-1));
  code1. execute();
  • Wollen Sie zum kompilieren/ausführen von code zur Laufzeit, oder wollen Sie zum ändern der ausführbaren Datei selbst, während es in den Speicher geladen werden: das sind zwei sehr verschiedene Dinge. (In der Regel "selbst-ändern" heißt der zweite)
  • Danny Pflughoeft: ich bin interessiert in der zweiten.. Der erste ist gemeint, wenn das zweite nicht möglich ist oder nicht zur Verfügung ...
  • Ich pflegte zu denken, über self-modifying code viel. Ich habe nie viel Verwendung für Sie, nachdem ich erfuhr, function-Pointer und Objekt-orientierten Sprachen. Sie haben keine Reale Verwendung dafür?
  • bbbb: ich will eine solche Sprache zu lernen, zu entdecken der realen Welt genutzt!
  • dynamische Programmierung ist eine Familie von minimzation/Maximierung Techniken. Es ist nichts mit dynamischen Sprachen/Eingabe. Irgendwie ein Nomenklatur problem...
  • Nathan: tut mir Leid ich werde es beheben
  • Redcode (vyznev.net/corewar/guide.html) , viele der besten Krieger sind self-modifing...
  • Bei der Interpretation Sprachen, es ist weit von Hexenwerk - bauen Sie das Programm als generator der code und die eval()-es. Die Dinge sind weit mehr interessante und komplexe, die in kompilierten Sprachen. Sie müssen wissen, zugrunde liegende Schicht (Zusammenbau oder Besondere byte-code), um es zu manipulieren. Ich bin mir nicht sicher, aber vielleicht alternative sind erwähnenswert, z.B. indem Sie eine Logik in DLLs (oder COM-Server) und erstellen Sie den Programmablauf als die Reihe von entsprechenden invokations. PS: Sind nicht Sie denken, polymorphe Viren? man bekommt ziemlich viel interessante und schwierige Sachen auf, die Angelegenheit durch googeln

InformationsquelleAutor Betamoo | 2010-06-16
Schreibe einen Kommentar