ماذا يعني أن Squeak يدير "بجانبية" عبر المنصات ، بطريقة لا جافا؟

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

سؤال

آلان كاي يشير الى على عكس Java ، [Squeak] يدير بعض الشيء على كل آلة-اخترعنا هذا قبل 20 عامًا ". ال صفحة ويكيبيديا يذكر هذا أيضا:

Squeak متاح للعديد من المنصات ، والبرامج التي تم إنتاجها على منصة واحدة Run-Handical على جميع المنصات الأخرى.

نظرًا لأن الآلات ذات مجموعات تعليمات مختلفة من الواضح أنها لا يمكنها تشغيل برامج متطورة قليلاً ، فماذا يعني ذلك عندما يقول أحدهم أن Squeak يدير برامج متطورة جدًا على أجهزة مختلفة ، بطريقة لا تُعد Java؟

أنا تحت الانطباع بأن فصول Java التي تم تجميعها تعمل بشكل متطابق على أي جهاز على أي JVM ، أليس كذلك؟

هل كانت مفيدة؟

المحلول

التفسير الواضح هو أن تنفيذ نفس الصورة على أجهزة مختلفة مع نفس المدخلات سيؤدي إلى تطور الصورة من خلال نفس أنماط البت. هذا المنشور حول الرياضيات العائمة في Squeak يعني أن النقطة العائمة لها تمثيل متطابق على منصات مختلفة. تتطلب Java أن تكون الدلالات هي نفسها بين المنصات ، ولكنها تسمح بتمثيلات غير طبيعية. تستخدم المكتبة Squeak لضمان نقطة عائمة متطابقة عبر النظام الأساسي هي Sun ، والتي تستخدمها Sun JVM أيضًا ، على الرغم من أنها تذكر تقييدها مع إعدادات البرمجيات.

نصائح أخرى

لا يمكن أن يشير مصطلح Bit-INTUCTICTICAL إلى عدم وجود رمز أصلي فحسب ، بل يشير أيضًا إلى كيفية معالجة عمليات البيانات. من منصة إلى أخرى ، يوجد فرق فرعي ، على سبيل المثال في الأرقام الأقل أهمية لأرقام النقاط العائمة بسبب تطبيقات الأجهزة المختلفة لوحدة النقطة العائمة.

لذلك يمكن أن تعني البطيئة أيضًا أنه تتم إزالة مثل هذه الاختلافات وأن كل تعليمات واحدة تُرجع قليلاً بنفس النتيجة على كل أجهزة. AD HOC هذا يحظر استخدام بعض الأجهزة وسيتطلب مضاهاة. لست متأكدًا مما إذا كان Thi ممكنًا بتكاليف مقبولة أو إذا كانت هناك خدعة جيدة لتحقيق ذلك.

مما يعني أنه مماثل يعني أن صورة Squeak نفسها يمكن أن تعمل في العديد من المنصات ، وليس فقط رمز المصدر الصرير.

صورة SmallTalk هي متجر لكل من الكود (بتنسيق Bytecode) والكائنات الحية. يتوفر الكود بتنسيق Bytecode الوسيط ، والذي يتم ترجمة VM ثم ترجمة رمز الجهاز المحدد على المنصة أثناء الطيران.

من توثيق java.lang.math:

على عكس بعض الأساليب الرقمية للطبقة الصارمة ، لا يتم تعريف جميع تطبيقات الوظائف المكافئة للرياضيات الفئة لإرجاع النتائج نفسها. يسمح هذا الاسترخاء بتطبيقات أفضل أداء حيث لا يلزم استنساخ صارم.

يعمل على جهاز افتراضي ، كما هو مذكور في الجملة التالية على ويكيبيديا. قون

لست متأكدًا مما يعنيه الجزء "البطيء" ، مقارنة بجافا. انطباعي هو أن ملفات الفئة نفسها يمكن أن تعمل على أجهزة مختلفة ، لأن Java تعمل أيضًا على جهاز افتراضي.

هنا يأمل أن يقفز آلان في الخيط ويزيل هذا الأمر بالنسبة لنا!

الشيء الوحيد الذي يمكنني التفكير فيه هو أنه يشير إلى حقيقة أن Java غالبًا ما تكون (و C# دائمًا) "فقط في الوقت المناسب" تم تجميعها على الجهاز المستهدف إلى الكود الأصلي ، قبل تشغيله.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top