Erweiterung der ausgezeichneten Antwort von Bert Freudenberg.
1) Ist das (dh Objekt Fähigkeit, ihren eigenen Quellcode serialisieren) ein genaues Verständnis?
Nein. Wie Bert darauf hingewiesen hat, ist ein Smalltalk-Bild einfach ein Speicher-Snapshot. Die Single-of-Truth-Eigenschaft von Smalltalk-Objekten und Smalltalk-Programmen ist ihre Speicherdarstellung. Dies ist ein großer Unterschied zu anderen Sprachen, in denen Programme als Textdateien dargestellt werden.
2) Was ist die Herausforderung, diese Fähigkeit zu modernen Sprachen in dem Hinzufügen (Nicht-Lisp, natürlich)?
Technisch gesehen sollte Bootstrapping einer Anwendung von einem Speicher-Snapshot für die meisten Sprachen möglich sein. Wenn ich mich nicht irre, gibt es Lösungen, die diesen Ansatz verwenden, um die Startzeiten für Java-Anwendungen zu beschleunigen. Sie müssen sich jedoch auf eine kanonische Speicherrepräsentation einigen, und Sie müssen beim Neustart des Programms sorgfältig darauf achten, native Ressourcen neu zu initialisieren. In Smalltalk werden beispielsweise geöffnete Dateien und die Netzwerkverbindung erneut geöffnet. Und es gibt auch einen Startup-Hook, um die Endlichkeit von Zahlen zu beheben.
3) Ist "Serialisierung" das richtige Wort? Was ist der richtige Jargon?
Ruhezustand ist der Begriff.
Beachten Sie, dass dies gut funktioniert, da Smalltalk in einer eigenen VM ausgeführt wird, so dass es seinen eigenen Speicherstatus organisiert und selbst verwaltet. Wenn Sie dies mit einem C-Programm versuchen, das nicht dafür gebaut wurde, würde es wahrscheinlich die meiste Zeit in Ordnung sein, aber Eckfälle könnten sich verschlimmern. – Marcin
Was die Snapshot-Funktion unterstützt, ist, dass der Ausführungsstatus (z. B. Prozesse, Stapelrahmen) Teil des normalen Objektspeichers ist. Dies macht es besonders einfach, den laufenden Code zu speichern und wieder aufzunehmen. –