Was bedeutet es, dass Squeak "bit-identisch" plattformübergreifend läuft, so wie es Java nicht tut?

8

Alan Kay weist darauf hin , dass "Anders als Java, [Squeak] auf jeder Maschine Bit-identisch läuft - haben wir das vor 20 Jahren erfunden ". Die Wikipedia-Seite erwähnt dies auch:

  

Squeak ist für viele verfügbar   Plattformen und Programme produziert auf   Eine Plattform läuft Bit-identisch auf allen   andere Plattformen.

Da Maschinen mit verschiedenen Befehlssätzen natürlich bit-identische Programme nativ nicht ausführen können, was bedeutet es, wenn Squeak Bit-identische Programme auf verschiedenen Rechnern ausführt, so wie es Java nicht tut?

>

Ich habe den Eindruck, dass kompilierte Java-Klassen auf jedem Rechner in jeder JVM identisch laufen, ist das nicht so?

    
Andrey Fedorov 14.06.2015, 09:52
quelle

6 Antworten

7

Die offensichtliche Interpretation ist, dass das Ausführen desselben Bildes auf verschiedenen Maschinen mit den gleichen Eingaben dazu führt, dass sich das Bild durch die gleichen Bitmuster entwickelt. Dieser Beitrag über Squeaks Gleitkomma-Mathematik impliziert, dass der Fließkomma-Punkt auf verschiedenen Plattformen identisch dargestellt wird. Java erfordert, dass die Semantik zwischen den Plattformen gleich ist, erlaubt aber denormalisierte Darstellungen. Die Bibliothek Squeak verwendet, um sicherzustellen, Bit-identische Gleitpunkt über Plattform ist Suns, die die Sun JVM auch verwendet, obwohl sie erwähnen, weiter mit Compiler-Einstellungen beschränken.

    
Pete Kirkham 19.03.2009, 16:10
quelle
3

Der Begriff Bit-Identisch kann sich nicht nur auf keinen systemeigenen Code beziehen, sondern auch darauf, wie mit Datenoperationen umgegangen wird. Von Plattform zu Plattform gibt es subtile Unterschiede, zum Beispiel in den niedrigstwertigen Ziffern von Fließkommazahlen aufgrund unterschiedlicher Hardwareimplementierungen der Gleitkommaeinheit.

So Bit-identisch könnte auch bedeuten, dass solche Unterschiede entfernt werden und jeder einzelne Befehl Bit für Bit das gleiche Ergebnis auf jeder Hardware zurückgibt. Ad hoc verhindert dies die Verwendung einiger Hardware und würde eine Emulation erfordern. Ich bin mir nicht sicher, ob dies zu akzeptablen Kosten machbar ist oder ob es einen guten Trick dafür gibt.

    
Daniel Brückner 19.03.2009 16:20
quelle
2

Bit identisch bedeutet, dass Squeak-Image selbst auf vielen Plattformen laufen kann, nicht nur Squeak-Quellcode.

Smalltalk-Bild ist nämlich ein Speicher für sowohl Code (im Bytecode-Format) als auch Live-Objekte. Der Code ist im Intermediate-Bytecode-Format verfügbar, und die VM kompiliert dann im laufendem Betrieb zu plattformspezifischem Maschinencode.

    
Janko Mivšek 19.03.2009 16:10
quelle
2
___ answer662822 ___

Bit identisch bedeutet, dass Squeak-Image selbst auf vielen Plattformen laufen kann, nicht nur Squeak-Quellcode.

Smalltalk-Bild ist nämlich ein Speicher für sowohl Code (im Bytecode-Format) als auch Live-Objekte. Der Code ist im Intermediate-Bytecode-Format verfügbar, und die VM kompiliert dann im laufendem Betrieb zu plattformspezifischem Maschinencode.

    
___ answer662901 ___

Der Begriff Bit-Identisch kann sich nicht nur auf keinen systemeigenen Code beziehen, sondern auch darauf, wie mit Datenoperationen umgegangen wird. Von Plattform zu Plattform gibt es subtile Unterschiede, zum Beispiel in den niedrigstwertigen Ziffern von Fließkommazahlen aufgrund unterschiedlicher Hardwareimplementierungen der Gleitkommaeinheit.

So Bit-identisch könnte auch bedeuten, dass solche Unterschiede entfernt werden und jeder einzelne Befehl Bit für Bit das gleiche Ergebnis auf jeder Hardware zurückgibt. Ad hoc verhindert dies die Verwendung einiger Hardware und würde eine Emulation erfordern. Ich bin mir nicht sicher, ob dies zu akzeptablen Kosten machbar ist oder ob es einen guten Trick dafür gibt.

    
___ answer662858 ___

Die offensichtliche Interpretation ist, dass das Ausführen desselben Bildes auf verschiedenen Maschinen mit den gleichen Eingaben dazu führt, dass sich das Bild durch die gleichen Bitmuster entwickelt. Dieser Beitrag über Squeaks Gleitkomma-Mathematik impliziert, dass der Fließkomma-Punkt auf verschiedenen Plattformen identisch dargestellt wird. Java erfordert, dass die Semantik zwischen den Plattformen gleich ist, erlaubt aber denormalisierte Darstellungen. Die Bibliothek Squeak verwendet, um sicherzustellen, Bit-identische Gleitpunkt über Plattform ist Suns, die die Sun JVM auch verwendet, obwohl sie erwähnen, weiter mit Compiler-Einstellungen beschränken.

    
___ antwort663066 ___

Aus der Dokumentation von java.lang.Math :

  

Im Gegensatz zu einigen numerischen Methoden der Klasse StrictMath sind alle Implementierungen der äquivalenten Funktionen der Klasse Math nicht so definiert, dass sie bit-zu-bit-gleiche Ergebnisse liefern. Diese Relaxation ermöglicht leistungsfähigere Implementierungen, bei denen keine strikte Reproduzierbarkeit erforderlich ist.

    
___ qstnhdr ___ Was bedeutet es, dass Squeak "bit-identisch" plattformübergreifend läuft, so wie es Java nicht tut? ___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123smalltalk ___ Smalltalk ist eine der ältesten objektorientierten Programmiersprachen. Es war wegbereitend für viele Aspekte, die moderne Entwickler für selbstverständlich halten: Virtuelle Maschinen (Smalltalk war eine interpretierte Sprache) IDEs Reiner Objektansatz (keine Primitive oder Schlüsselwörter) Verschlüsse (Blöcke genannt) Ein Bild (d. H. Nicht dateibasierte Sprache) Fortgeschrittene Debugging-Techniken (ständiges Anhalten von Programmen, inspektionieren, Schreiben oder Ändern von Code während des Betriebs) ___ qstntxt ___

Alan Kay weist darauf hin , dass "Anders als Java, [Squeak] auf jeder Maschine Bit-identisch läuft - haben wir das vor 20 Jahren erfunden ". Die Wikipedia-Seite erwähnt dies auch:

  

Squeak ist für viele verfügbar   Plattformen und Programme produziert auf   Eine Plattform läuft Bit-identisch auf allen   andere Plattformen.

Da Maschinen mit verschiedenen Befehlssätzen natürlich bit-identische Programme nativ nicht ausführen können, was bedeutet es, wenn Squeak Bit-identische Programme auf verschiedenen Rechnern ausführt, so wie es Java nicht tut?

>

Ich habe den Eindruck, dass kompilierte Java-Klassen auf jedem Rechner in jeder JVM identisch laufen, ist das nicht so?

    
___ answer662695 ___

Es läuft auf einer virtuellen Maschine, wie es im nächsten Satz auf Wikipedia steht. :)

Nicht sicher, was der "bit-identische" Teil im Vergleich zu Java bedeutet. Mein Eindruck ist, dass dieselben Klassendateien auf verschiedenen Rechnern laufen können, da auch Java auf einer virtuellen Maschine läuft.

Hier hofft Alan wird in den Thread springen und dies für uns aufräumen!

    
___ tag123vmimplementation ___ Design und Implementierung von virtuellen Maschinen, Interpretern, Automaten, Turing-Maschinen. ** Verwenden Sie dieses Tag NICHT für virtualisierte Computer (VirtualBox, VMWare, ...), es sei denn, die Frage betrifft die Implementierung solcher Tools. ___ answer662793 ___

Das Einzige, woran ich denken kann, ist, dass er sich darauf bezieht, dass Java oft (und C # ist immer) "Just-in-time" auf dem Zielrechner auf nativen Code kompiliert wird, bevor es ausgeführt wird.

>     
___ tag123jvm ___ Die Java Virtual Machine (JVM) ermöglicht einer Reihe von Computersoftwareprogrammen und Datenstrukturen, ein virtuelles Maschinenmodell für die Ausführung anderer Computerprogramme und Skripts zu verwenden. Verwenden Sie dieses Tag für Fragen zu Tools, die von einer JVM bereitgestellt werden, oder zur Funktionsweise in einem bestimmten Szenario. ___
Dan Berindei 19.03.2009 17:02
quelle
1

Es läuft auf einer virtuellen Maschine, wie es im nächsten Satz auf Wikipedia steht. :)

Nicht sicher, was der "bit-identische" Teil im Vergleich zu Java bedeutet. Mein Eindruck ist, dass dieselben Klassendateien auf verschiedenen Rechnern laufen können, da auch Java auf einer virtuellen Maschine läuft.

Hier hofft Alan wird in den Thread springen und dies für uns aufräumen!

    
unwind 19.03.2009 15:37
quelle
0

Das Einzige, woran ich denken kann, ist, dass er sich darauf bezieht, dass Java oft (und C # ist immer) "Just-in-time" auf dem Zielrechner auf nativen Code kompiliert wird, bevor es ausgeführt wird.

>     
James Curran 19.03.2009 15:56
quelle