20/7/2013 - مدرستا Simula و Smalltalk في البرمجة كائنية التوجّه (Object-Oriented Programming)




(أو : لماذا Objective-C مُختلفه؟)

إذا أمعنّا النظر في لغات البرمجة الحالية التي تدعَم البرمجة كائنية التوجه (Object-Oriented Programming) سنجدها مُتشابهه إلى حد كبير، مثلاً إذا قارنّا C++ و Java و C# و PHP و غيرها من اللغات، سنجد إن البرمجة بإستخدام الكائنات مُتشابهه فيها إلى حد كبير، و إن إختلفت فإنها قد تختلف في بعض التفاصيل الصغيرة و التي لا تنفي التشابه بينها بشكل عام.

بعدما إنتقل التوجّه في كتابة البرامج إلى برامج الهواتف إزداد إنتشار لغة Objective-C و التي تُستخدم بشكل أساسي لتطوير برامج نظام التشغيل iOS، ولمن عمل سابقاً في لغات البرمجة كائنية التوجه الأخرى سيجد فرقاً كبيراً بين Objective-C و اللغات الأخرى المعروفه حتى لو كان مروره على Objective-C مرور الكرام، لذا نتسائل يا تُرى ما هو الفرق بين Objective-C و اللغات الأخرى على الرغم من إنها جميعها تستخدم أسلوب البرمجة كائنية التوجّه؟

ظَهر مفهوم البرمجة كائنية التوجه (Object-Oriented Programming) في بداية الستينيات من القرن الماضي، و أول لغة برمجة قدّمت مفاهيم البرمجة كائنية التوجه هي Simula 67 و التي ظهرت كذلك في الستينيات من القرن الماضي، فيما بعد وتحديداً في عالم 1972 ظَهرت لغة أخرى وهي Smalltalk و التي كانت متأثره بأفكار لغة Simula 67 و مع لغة Smalltalk تم إستخدام مُصطلح "البرمجة كائنية التوجه" (Object-Oriented Programming).

على الرغم من تأثر Smalltalk بأفكار لغة Simula إلا إنها صُممت بشكل مُختلف، فأهم إختلاف ما بين الإثنين (بجانب الإختلاف في التركيب Syntax النحوي للغتين) هو مفهوم "الرسائل" (Messages)، ففي لغة Smalltalk يتم إرسال رسائل إلى الكائنات (Objects) و التي بدورها تستقبل هذه الرسائل و تُعيد قيمة مُعينة، أما في لغة Simula فيتم التعامل مع الكائنات عن طريق مُناداة الدوال (Calling Methods) التي تُوفرها هذه الكائنات.

و بالتالي ظهرت لدينا مدرستان أساسيتان في طريقة التعامل مع الكائنات (Objects)، المدرسة الأولى هي مدرسة لغة Simula و التي تتبناها أغلب اللغات الحاليه مثل سي++ و جافا و سي#، أما المدرسة الثانية و هي مدرسة لغة Smalltalk و التي تتبناها لغة Objective-C و Objective-J.

يُمكننا القول إنّ الإختلاف بينهما فلسفي و لكن المفاهيم الأساسية مُتشابهه.