در دهه ۱۹۶۰ میلادی دکتر 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