آلان كاي لم يخترع الأشياء

لا يزال الناس يجادلون بأن اللغات الحديثة وجوه المنحى هي في الواقع "ليست وجوه المنحى تماما" لأنها لا تفي بتعريف OOP آلان كاي. في رأيي ، هذا منطقي ، رغم أنني لا أتفق مع الاستنتاج. لقد قابلت مؤخرًا أشخاصًا يقولون إن كاي هو الذي اخترع الأشياء. هذا في الواقع ليس صحيحا.


آلان كاي لم يخترع الأشياء. كانوا في سيمولا ، مما يؤدي إلى سمولتك 72 كمصدر رئيسي للإلهام (ص 117). في عام 1981 صدر عن مجلة Byte ، وهي مجلة شعبية شاع سمولتك و OOP ، أن "الفكرة الأساسية للأشياء والرسائل والطبقات أتت من SIMULA." تقول أن Simula يسمح للمستخدمين بإنشاء "أنظمة موجهة للكائنات" ، والتي قد تكون أكثر من اللازم ، ولكن مع ذلك. كان فريق Smalltalk يعرف نظام Simula للأشياء بشكل جيد واستمد الإلهام منه.


أحد الأسباب وراء بقاء هذه الأسطورة على قيد الحياة هو ما قاله كاي نفسه في عام 1998 :


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

وفي هذه المقابلة ، يواصل:


يعني اخترع مصطلح "الأشياء". منذ أن صنعنا الأشياء أولاً ، لم تكن هناك أشياء أخرى لتطرف ذلك.

توقف في وقت لاحق عن قول هذا ، لكن لا يزال الناس يواصلون استخدام هذا الاقتباس كحقيقة.


اخترع آلان كاي مصطلح "البرمجة الموجهة للكائنات"


هذا صحيح تماما.


كان OOP في الطبقات والكائنات


في الآونة الأخيرة ، لا يزال الكثيرون يجادلون بأن OOP ليس في الواقع في الفصول والأشياء ، وفي الحقيقة ، فإن أهم الرسائل هي. في مقال نشر عام 1998 ، بعد أن قال كاي إنه يأسف لـ "الأشياء" ، يقول أيضًا أن "الفكرة الرائعة هي المراسلة". يكتب كذلك:


OOP بالنسبة لي هو مجرد رسائل ، وعقد محلي والحماية ، وإخفاء الدولة وبعد ذلك ربط كل شيء. يمكن القيام بذلك في Smalltalk وفي LISP. ربما هناك أنظمة أخرى يكون ذلك ممكنًا ، لكنني لا أعرف عنها.

في أوائل OOP ، كانت الرسائل تعتبر مهمة إلى حد كبير ، في المقام الأول لمرافق الخدمة. إليك كيف يشرح Don Ingalls OOP في مقدمته لـ Smalltalk-76 :


Smalltalk أكثر توجهاً للكائنات بدلاً من التوجه نحو الوظائف ، وهذا غالبًا ما يربك الأشخاص ذوي الخبرة في علوم الكمبيوتر. على سبيل المثال ، يعني <someobject>+4 إرسال +4 الكائن كرسالة. الفرق الرئيسي هو أن كل شيء يتم التحكم فيه بواسطة الكائن ، وليس + . إذا كان <someobject> عددًا صحيحًا 3 ، فالنتيجة هي عدد صحيح من 7. ومع ذلك ، إذا كان <someobject> هو السلسلة 'Meta' ، فقد تكون النتيجة Meta4 . وبالتالي ، فإن الحمل الدلالي يتوافق مع كائنات النظام ، ويظل الرمز نموذجًا مجردة ، ببساطة يوجه تدفق الرسائل.

في Microelectronics والكمبيوتر الشخصي ، تتحدث كاي عن نظام الرسائل إلى الفعل الذي "ينتمي فيه كل إجراء إلى عائلة" ، ويتحدث عن توسيع الأنشطة في "وجهة نظر" علاقات الكائن كحدود مستقبلية. في دليل Smalltalk-72 ، يكتب (ص 18):


الفكرة الأساسية عند كتابة برامج المحادثة الصغيرة هي تحديد الفئات التي تتعامل مع العلاقات بين الكائنات في البيئة التي تم إنشاؤها.

عند عرض المصادر المبكرة ، تتشكل الصورة التي يتكون منها OOP من ثلاث أفكار رئيسية: الفئات التي تحدد البروتوكول والتنفيذ ، والأشياء كحالات للفئات والرسائل كوسيلة للاتصال. فكرة أن الطبقات والكائنات كانت ثانوية في الرسائل جاءت بعد ذلك بكثير.


كان Smalltalk أول لغة وجوه المنحى الحقيقي


قدمت ACM عرض Turing Premiere إلى Dahl و Nyugor ، ووصفتهما بأنه "مؤلفان مشاركان لمنظمة التحرير الفلسطينية". كتب بايت أيضًا أن Simula كان موجهًا للكائنات ، وفي مقالته "لم يحدث ثورة الكمبيوتر بعد" ، يطلق كاي على Sketchpad "شديد التوجّه". في رأيي ، هذا لا يعترف بشكل كاف بمزايا Smalltalk. على عكس النظم الأخرى ، في Smalltalk:


  • لم تكن هناك بدائل لا هدف لها: كانت الأرقام كائنات ، كانت أخطاء كائنات ، فئات كانت كائنات ، رسائل كانت أشياء.
  • يمكنك تمرير رسالة إلى أي كائن ، بما في ذلك الرسائل الأخرى.
  • ارتبطت الطرق والتطبيقات بالكائنات ، وليس بالجلسة.

النقطة الأخيرة هي الأكثر صعوبة وربما الأكثر أهمية ، على الرغم من أن لا أحد يفسر حقيقة ما يجعلها مميزة للغاية. في Simula ، يؤدي استدعاء طريقة مفقودة إلى حدوث خطأ. هذا جزء من مواصفات Simula. في Smalltalk-80 ، إذا لم تتطابق أي طريقة مع الرسالة ، فإن الكائن الافتراضي يُرجع رسالة doesNotUnderstand . يمكن للمتصل الرد عليه أو تمرير رسالة أو الإشارة إلى خطأ. يمكن للفصل أيضًا تجاوز الإجراء الافتراضي والقيام بشيء آخر غير إرجاع doesNotUnderstand .


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


كان Smalltalk سياق المحيطة


الناس لا يخترعون الأدوات بشكل تلقائي. لديهم مواقف ومهام محددة ، ويحاولون إيجاد حل لهذه المشاكل. الابتكارات في Smalltalk و OOP ليست استثناء.


كان آلان كاي مهتمًا بموضوع أجهزة الكمبيوتر الشخصية. يعتمد عمله على FLEX و Dynabook و Smalltalk على هذا. في رأيه ، كان يجب أن يكون الكمبيوتر تحت السيطرة الكاملة للمستخدم ؛ كل شيء ، من منطق قلب النظام إلى تقديم الرسومات ، يمكن إعداده واستكشافه أثناء التشغيل. رسالة عابرة ومتأخرة ملزمة حل عدد من المشاكل. إذا قام أحد الأطفال بتثبيت لعبة جديدة ، فهل أحتاج إلى إعادة ترجمة نظام التشغيل بالكامل لاستخدام البرنامج الجديد؟ لا: اجعل من الممكن إرسال رسالة تعسفية إلى أي كائن والاعتماد على معالجة البروتوكول أثناء العمل لإكمال المهمة. (*) إذا انتهك شخص ما منطق نظام الصوت ، فهل يسقط نظام التشغيل بالكامل؟ بالطبع لا ، لذلك دع الكائنات تقرر كيفية معالجة الرسائل بأنفسهم. الكائنات أداء جيدا هنا.


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


فمن الذي استخدم الأشياء "بشكل صحيح"؟ هذا سؤال غير معقول. لقد فعلوا أشياء مختلفة لأن لديهم مهام مختلفة. إن فكرتنا الحديثة في OOP هي مزيج من جميع أفكارهم ، وكذلك أفكار أديل جولدبرج ، باربرا ليسكوف ، ديفيد بارناسوس ، برتراند ماير ، جول أغ وغيرها الكثير. لكن لا يمكن لأي منهم أن يقول ما هو "OOP". المفاهيم تتطور ، وكذلك المهام.


د


المقابلات التي أجريت قبل أكثر من 30 عامًا ليست مصادر جيدة.




* ربما هذا يجعل بوويرشيل الوريث الروحي لـ Smalltalk.

Source: https://habr.com/ru/post/ar455638/


All Articles