مهراد صادقی
مهراد صادقی
خواندن ۲ دقیقه·۴ سال پیش

چند خطی درباره‌ی آنچه از تاریخ شی‌گرایی نمی‌دانید

image source: https://www.colorado.edu/atlas/alan-kay-2019
image source: https://www.colorado.edu/atlas/alan-kay-2019


در دهه ۱۹۶۰ میلادی دکتر Alan Kay واژه‌ی مشهور Object Oriented Programming را وارد دنیای نرم‌افزار کرد. گرچه پیش از آن مفهوم Object وجود داشت، اما اَلِن کِی کسی بود که ایده برنامه‌نویسی شکل شی‌گرا را ارایه داد.

در منابع مختلف آموزشی چهار اصل Encapsulation ، Inheritance ، Polymorphism و Abstraction به عنوان اصول و پایه‌های شی‌گرایی معرفی می‌شوند، درحالیکه این موارد صرفا روش‌‌هایی برای پیاده‌سازی تعریفی‌ست که اَلِن کِی از OOP داشت.

در مورد ایده اَلِن کِی ابهامات مختلفی وجود داشت و بر همین اساس زبان‌های برنامه‌نویسی به اشکال گوناگون ایده‌ی OOP را پیاده سازی کردند.

در کنفرانسی در سال ۱۹۹۷ اَلِن کِی چنین می‌گوید:

I made up the term ‘object-oriented’, and I can tell you I didn’t have C++ in mind.

در سال ۲۰۰۳ ایمیل‌هایی بین Stefan Ram و اَلِن کِی رد و بدل شد. اَلِن کِی در قسمتی از این ایمیل‌ها می‌گوید:

I’m sorry that I long ago coined the term “objects” for this topic because it gets many people to focus on the lesser idea. The big idea is messaging.

یکی از سوالاتی که استفان از اَلِن پرسید چنین بود که:

What does "object-oriented [programming]" mean to you?

و در پاسخ اَلِن کِی چنین می‌گوید:

OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them.

او با توجه به سابقه تحصیلی ریاضیات و زیست‌شناسی‌ای که داشت، هر آبجکت را به یک سلول زیستی (یک سرور) در یک شبکه تشبیه کرد که تنها راه ارتباط آنها ارسال پیام (messaging) است. همچنین ما نمی‌دانیم درون یک سرور چه می‌گذرد (local retention and protection and hiding of state-process)، و عناصر آن تا جای امکان، از وضعیت بعدی خودشان بی‌خبر هستند (extreme late-binding).

ایده OOP از پروژه ARPANET (که پایه‌های اینترنت امروزی است) در ذهن اَلِن کِی شکل گرفته بود. در همین راستا زبان برنامه‌نویسی Smalltalk بوسیله او و تیمش ساخته شد که دقیقا ایده وی از شی‌گرایی را پیاده‌سازی می‌کرد.

منابع:

https://amirrezaghaderi.com/fa/blog/on-oop

http://www.purl.org/stefan_ram/pub/doc_kay_oop_en

https://www.youtube.com/watch?v=oKg1hTOQXoY

https://ovid.github.io/articles/alan-kay-and-oo-programming.html

https://ovid.github.io/articles/alan-kay-and-missing-messages-a-follow-up.html

http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html

http://worrydream.com/EarlyHistoryOfSmalltalk

oopprogrammingsoftwareobject
برنامه‌نویس بَک‌اِند، عاشق موسیقی
شاید از این پست‌ها خوشتان بیاید