الخلاصة

  • حدّد كتاب Adele Goldberg وDavid Robson الصادر عام 1983 الواجهة بين صورة Smalltalk-80 الافتراضية والآلة الافتراضية الخاصة بكل مضيف: ذاكرة الكائنات، والـ bytecodes، وسياقات التنفيذ، وإرسال الرسائل، والعمليات البدائية.
  • جعلت Goldberg المواصفة تخضع لتنفيذ حقيقي. بنت Apple وDEC وHewlett-Packard وTektronix نسخًا منقولة، وشاركت الفروق مع Xerox PARC، وقارنت السلوك بمسارات تنفيذ مرجعية.
  • أثبت ذلك قابلية النقل داخل حدّ معيّن. لم يثبت تساوي الإنتاجية أو فترات التوقف أو مقاييس الخطوط أو النوافذ أو الإدخال أو الملفات أو جودة التفاعل.

مواصفة كان عليها أن تعمل فعلًا

لم يكن Smalltalk-80 لغة يكفي نقل قواعدها. كان بيئة عمل مستمرة تعيش فيها الفئات والمترجم والمتصفح والمصحح والرسوم والواجهة معًا ككائنات داخل صورة محفوظة. نقل النظام إلى حاسوب آخر كان يعني إبقاء ذلك العالم قيد التشغيل، لا مجرد قبول نص مصدر صحيح.

في Smalltalk-80: The Language and Its Implementation صاغت Adele Goldberg وDavid Robson فصلًا واضحًا. احتوت الصورة الافتراضية كائنات النظام وأدواته العليا. وتحتها قدمت آلة افتراضية مخصصة للمضيف المفسر وذاكرة الكائنات والعمليات البدائية التي تصل الصورة بالحساب والتخزين والشاشة وجهاز التأشير والملفات. تُترجم الطرق المصدرية إلى تعليمات bytecode من ثمانية بتات، وينفذها مفسر قائم على المكدس، فيما تمثل السياقات الحسابات الجارية.

كان اتفاق النقل ضيقًا وفعّالًا: على كل منصة أن تبني نواة أصغر مرتبطة بعتادها على نحو صحيح، ثم تحمّل الصورة المشتركة. لم يستبدل Blue Book البرمجيات بالنثر، بل جعل السلوك القابل للملاحظة دقيقًا بما يكفي كي يعيد فريق خارجي بناء الطبقة الدنيا من دون الاعتماد على معرفة ضمنية داخل PARC.

وأضافت Goldberg شرطًا حاسمًا: لن يقرر مؤلفو الوثيقة وحدهم ما إذا كانت كافية؛ ستقرر ذلك فرق مضطرة إلى تشغيلها على آلات أخرى.

كانت الفرق الخارجية جزءًا من أداة القياس

في التاريخ الشفهي الذي سجلته عام 2010 لدى Computer History Museum، شرحت Goldberg أنها حصلت أولًا على إذن مؤسسي بالنشر. وبدعم من Bert Sutherland أشركت Tektronix وHewlett-Packard وDEC وApple. اشترطت المشاركة وجود فريق برمجيات داخلي يعمل مع فريق العتاد. لم يكن السؤال: هل تعجبكم اللغة؟ بل: ما الذي يفعله العتاد بأداء النظام؟

يعرض فصل الإصدار في Smalltalk-80: Bits of History, Words of Advice الآلية بتفصيل أكبر. دُعيت ست شركات، ودخلت أربع منها مرحلة التنفيذ. وافقت على تبادل عيوب المواصفة والنصح التصميمي. سلّمت Xerox صورًا متعاقبة ومذكرات عن مؤشرات الكائنات وفضاء الكائنات والسياقات والطرق المترجمة والفئات، وأتاحت اتصالًا مباشرًا عندما اختلف النص عن النظام العامل.

وهكذا صار كل نقل اختبارًا للوثيقة. ما بدا طبيعيًا على Alto أو Dorado انكشف افتراضًا محليًا حين لم يستطع مهندسو DEC أو HP أو Tektronix أو Apple إعادة إنتاجه. لم يكن اختلاف العتاد تشويشًا؛ كان وسيلة لفصل الالتزام القابل للنقل عن مصادفة المضيف.

ولم تكن الشركات مجرد مصادِقين على نص مكتمل. تغيّرت تعيينات العمليات البدائية وكبرت الصورة. وناقش مؤتمر المنفذين الأول العد المرجعي وجمع النفايات وذاكرات البحث عن الطرق. تسجل Goldberg أن معظم محاولة الكتاب السابقة أُهملت وأعيدت كتابتها، بينما بقيت المواصفة الرسمية للآلة الافتراضية بعد تصحيحها عبر التنفيذ.

حدّدت المسارات معنى المطابقة

لم تكن شاشة مألوفة كافية. وزعت Xerox مسارات تنفيذ بمستويات تفصيل مختلفة. أظهر أدقها مراجع الذاكرة والتخصيص والـ bytecodes وإرسال الرسائل والعودة واستدعاء العمليات البدائية. غطت مسارات أطول تنفيذًا أكبر بتفاصيل أقل. بذلك استطاع فريق جديد مقارنة التسلسل الفعلي لآلته بالتسلسل المتوقع.

فصل Blue Book في ذاكرة الكائنات بين الوصول إلى المؤشرات والكلمات والبايتات. وحدد كيف يجد المفسر الفئة والطريقة، وينشئ سياقًا، ويدير المكدس، ويتعامل مع فشل البحث ويرسل doesNotUnderstand:. وجمّع الـ bytecodes في الدفع والتخزين والإرسال والعودة والقفز. وغطت العمليات البدائية الحساب والمجموعات والذاكرة والتحكم والإدخال والإخراج وخدمات النظام.

أظهرت الرسوم موضع الوصلة بوضوح. كان كثير من BitBlt والنص وتركيب العرض موجودًا في كائنات الصورة، لكن المؤشر ولوحة المفاتيح وشاشة الـ bitmap والملف تلتقي في النهاية بآلة مادية. تعبر العمليات البدائية هذا الحد. ويمكن لمضيفين مختلفين الاستجابة لطلب الصورة نفسه بوحدات عرض أو تخطيطات ذاكرة أو تعليمات آلة مختلفة.

كان معيار النجاح تشغيليًا ومحدودًا: أن تستطيع الآلة الافتراضية «قراءة الصورة الافتراضية واعتمادها» وإعادة إنتاج السلوك المتوقع. وعندما حمّلت التطبيقات الناجحة الإصدار الرابع من الصورة من دون تعديل الآلة الافتراضية، كان ذلك دليلًا قويًا على استقرار الواجهة. لم يكن دليلًا على أن الحواسيب أصبحت متساوية.

انتهى التوافق قبل تطابق التجربة

يفصل سرد Goldberg بين اعتماد الصورة ومقياس آخر أكثر ذاتية: الأداء الفعلي على عتاد كل شركة. تنتج الصورة المشتركة استمرارية لافتة؛ توجد الفئات نفسها وتُترجم الطرق نفسها وتفتح أدوات متشابهة. لكن كل ما يقع تحت الحد وحوله ما زال يغيّر التجربة.

قد يستخدم البحث عن الطرق cache مختلفًا. وقد تستعيد الذاكرة المساحة بالعد المرجعي أو التتبع أو مزيج بينهما. وقد تكون العملية البدائية microcode أو assembly أو دالة أبطأ للمضيف. يغيّر الجدولة وفحص الإدخال زمن الاستجابة. وتغيّر هندسة الشاشة وتخطيط الـ bitmap والخطوط والمؤشر وخدمات الملفات طريقة العرض. يمكن لآلتين افتراضيتين صحيحتين حفظ معنى الكائنات مع إظهار توقفات وسرعات إعادة رسم مختلفة جدًا.

حتى مجموعة المحارف كشفت كلفة. تذكرت Goldberg أن المجموعة اضطرت إلى ASCII القياسي لأن المشاركين لم يكونوا جميعًا يسيطرون على الخطوط. وسّعت قابلية النقل عدد الآلات الممكنة، لكنها ضيّقت هذا السطح التعبيري إلى الحد المشترك الموثوق.

وأقر Blue Book بأن عتاد ذلك الوقت لم يكن قادرًا على تحقيق كل الطموح التفاعلي. يستطيع العقد تعريف معنى إرسال رسالة أو جلب كائن، لكنه لا يجعل معالجًا ضعيفًا يبدو مثل Dorado، ولا يوسع الشاشة، ولا يلغي كل توقف لجمع النفايات.

لهذا يجب قراءة دليل التوافق في الطبقة التي يقيسها. نجاح تحميل الصورة ومسار الـ bytecodes يثبت اتفاق Image/VM. ولا يثبت تلقائيًا تطابق الزمن أو الخط أو النوافذ أو الأجهزة الطرفية أو تجربة المستخدم الكاملة.

لم يكن الإصدار كتابًا واحدًا

قدّم عدد BYTE الخاص في أغسطس 1981 مدخلًا عامًا إلى Smalltalk-80. وربط كتاب Goldberg وRobson عام 1983 اللغة بمواصفة الآلة الافتراضية. ووصف Smalltalk-80: The Interactive Programming Environment عام 1984 طريقة العمل داخل البيئة. وحرر Glenn Krasner المجلد الذي روى فيه المنفذون خبراتهم.

نظمت Goldberg وRobson كتاب اللغة معًا. وروت Goldberg أنها وDan Ingalls كانا يعرضان المسائل الخلافية على المجموعة ويتخذان القرار، بينما استمع Robson إلى الاعتراضات بصفته وسيطًا. وذكر Ingalls لاحقًا أن Robson أنجز معظم المفسر المرجعي. كان على النص والنموذج التنفيذي وحوكمة القرار أن تتقارب.

ولا يصح اختزال السلالة في مخترع واحد. أثرت Simula وSketchpad في رؤية Alan Kay، وصاغ Kay اتجاه الحوسبة الشخصية القائمة على الرسائل. بنى Dan Ingalls المفسرات والآلة الافتراضية وطورها. أسهمت Diana Merry في عرض النص والتحرير الذي يمزج النص والصورة. عمل Ted Kaehler على الرسوم ثم على الذاكرة. شارك Larry Tesler في Notetaker والبيئة. منح David Robson الكتاب والمفسر المرجعي دقتهما. وجعلت فرق PARC الأوسع وفرق النقل الخارجية العقد قابلًا للتنفيذ.

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

بقي العقد لأن الآلية استطاعت أن تتغير

انحدرت بعض أنظمة Smalltalk من صور مرخصة، وكُتبت أنظمة أخرى من الوثائق. في Apple عدّل Ingalls الواجهة لتناسب فأرة وشاشات مختلفة، وغيرت وحدة معالجة أسرع وشاشة أكبر الإحساس بالنظام من دون قطع استمراريته الفكرية.

بدأ Squeak من المفسر المرجعي المنشور وصورة APDA، ثم استبدل الفريق جدول الكائنات بمؤشرات مباشرة، واعتمد جمع نفايات جيليًا، وولّد C من مجموعة فرعية من Smalltalk. أعاد Ted Kaehler وIngalls بناء الذاكرة، وكتب John Maloney المترجم، وأعاد Scott Wallace ترتيب الوصول إلى الملفات. تغيّرت الآلية وبقيت الاستمرارية المفيدة.

يحمي العقد المحمول الجيد وصلة نافعة، لا كل طريقة تاريخية. يتيح تغيير الطبقة الدنيا ويوفر اختبارًا يبيّن متى يكسر التغيير الطبقة العليا. يعرض Smalltalk Zoo لدى Computer History Museum هذا التنوع اليوم. أتاح Blue Book لـ Smalltalk أن ينتقل لأنه حدد ما يجب أن يعبر الحد وما يمكن أن يبقى محليًا.

المصادر