Squeak이 Java가하지 않는 방식으로 플랫폼에서 "비밀 적으로"실행된다는 것은 무엇을 의미합니까?

StackOverflow https://stackoverflow.com/questions/662681

문제

앨런 케이 지적 "Java와는 달리 [Squeak]는 모든 기계에서 비교적으로 실행됩니다. 우리는 20 년 전에 발명했습니다." 그만큼 Wikipedia 페이지 이것도 언급합니다.

Squeak은 많은 플랫폼에서 사용할 수 있으며 하나의 플랫폼에서 제작 된 프로그램은 다른 모든 플랫폼에서 비교적으로 실행됩니다.

명령어 세트가 다른 기계는 분명히 비교적 프로그램을 기본적으로 실행할 수 없기 때문에 Squeak이 다른 기계에서 비교적 프로그램을 실행한다고 말하면 Java가하지 않는 방식으로 무엇을 의미합니까?

나는 편집 된 Java 클래스가 JVM의 모든 컴퓨터에서 동일하게 실행된다는 인상을 받고 있습니다. 그렇지 않습니까?

도움이 되었습니까?

해결책

명백한 해석은 동일한 입력을 가진 다른 기계에서 동일한 이미지를 실행하면 동일한 비트 패턴을 통해 이미지가 진화하게된다는 것입니다. Squeak의 부동 소수점 수학에 관한이 게시물 부동 소수점은 다른 플랫폼에서 동일한 표현을 가지고 있음을 의미합니다. Java는 시맨틱이 플랫폼간에 동일하지만 비정규 표현을 허용해야합니다. 라이브러리 Squeak은 플랫폼 전체의 비교적 부동 소수점이 Sun 's One이되도록하는 데 사용합니다. Sun JVM은 컴파일러 설정으로 추가 제한을 언급하지만 Sun JVM도 사용합니다.

다른 팁

Bit-identical이라는 용어는 기본 코드를 참조 할 수있을뿐만 아니라 데이터 운영 처리 방법도 참조합니다. 플랫폼에서 플랫폼마다, 예를 들어 플로팅 포인트 유닛의 다른 하드웨어 구현으로 인해 부동 소수점 수의 가장 중요한 숫자에서는 하위 타일 차이가 있습니다.

따라서 비트 동시성은 또한 그러한 회절이 제거되고 모든 단일 명령어가 모든 하드웨어에서 동일한 결과를 비트 단위로 비트로 반환한다는 것을 의미 할 수 있습니다. 이를 통해 이것은 일부 하드웨어의 사용을 금지하며 에뮬레이션이 필요합니다. THI가 수용 가능한 비용으로 실현 가능한지 또는이를 달성 할 좋은 트릭이 있는지 확실하지 않습니다.

비트 동일은 Squeak 이미지 자체가 소스 코드뿐만 아니라 많은 플랫폼에서 실행될 수 있음을 의미합니다.

SmallTalk Image는 즉 코드 (바이트 코드 형식)와 라이브 객체 모두에 대한 저장소입니다. 코드는 중간 바이트 코드 형식으로 제공되며 VM은 플랫폼 특정 기계 코드로 컴파일됩니다.

문서에서 java.lang.math:

클래스 strictmath의 숫자 방법 중 일부와 달리, 클래스 수학의 동등한 함수의 모든 구현은 비 비트 동일한 결과를 반환하도록 정의되지 않습니다. 이 완화는 엄격한 재현성이 필요하지 않은 경우 더 나은 성능 구현을 허용합니다.

Wikipedia의 다음 문장에 명시된대로 가상 머신에서 실행됩니다. :)

Java와 비교하여 "비트 동일"부분이 무엇을 의미하는지 잘 모르겠습니다. Java도 가상 시스템에서 실행되기 때문에 동일한 클래스 파일이 다른 컴퓨터에서 실행될 수 있다는 인상입니다.

Alan이 실에 뛰어 들어 우리를 위해 이것을 정리하기를 바라고 있습니다!

내가 생각할 수있는 유일한 것은 그가 Java가 종종 (그리고 C#이 항상)라는 사실을 언급하고 있다는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top