خانه وب
پنل کاربری
شنبه 1 آبان 1400
بستن منو
رسانه خانه وبرسانه خانه وب

از حیات سلولی تا شی گرایی

آشنایی با چگونگی پیدایش و بلوغ شی گرایی خالی از لطف نیست. دیدگاه عمیق و اصیلی که پیوندی معنایی میان حیات سلولی و برنامه نویسی رایانه ای بوجود آورد. در اوایل دهه ۱۹۷۰میلادی آلن کی (Alan Kay) بدنبال راهی برای ساده سازی برنامه نویسی بود که موفق به ابدا شی گرایی گردید. تاثیر کشف او اثر عمیقی بر دانش برنامه سازی گذاشت، بطوری که از اوایل دهه ۱۹۹۰ شی گرایی به عنوان مهمترین بستر برنامه سازی درآمد. وی از پیدایش شی گرایی چنین یاد می کند: آنچه در ذهنم جرقه زد، مشابهت عمل در سلولهای زیستی بود.

آشنایی با چگونگی پیدایش و بلوغ شی گرایی خالی از لطف نیست. دیدگاه عمیق و اصیلی که پیوندی معنایی میان حیات سلولی و برنامه نویسی رایانه ای بوجود آورد. در اوایل دهه ۱۹۷۰میلادی آلن کی (Alan Kay) بدنبال راهی برای ساده سازی برنامه نویسی بود که موفق به ابدا شی گرایی گردید. تاثیر کشف او اثر عمیقی بر دانش برنامه سازی گذاشت، بطوری که از اوایل دهه ۱۹۹۰ شی گرایی به عنوان مهمترین بستر برنامه سازی درآمد. وی از پیدایش شی گرایی چنین یاد می کند: آنچه در ذهنم جرقه زد، مشابهت عمل در سلولهای زیستی بود.
آنچه در سلولهای زیستی مورد توجه آلن کی قرار گرفت، عبارت است از:
  • هر سلول نمونه ای از اصل است که خصوصیاتی منطبق با آنچه اصل (ژنتیک سلول) ترسیم می کند، دارد. همچنین هر سلول یک سری رفتارهای پایه دارد که از اصل خود می گیرد.
  • سلول ها مستقلند و از طریق پیامهای شیمیایی که از پوسته یکی خارج و به پوسته دیگری وارد می شود، با یکدیگر ارتباط برقرار می سازند.
  • سلولها می توانند از یکدیگر متمایز شوند.

مورد اول، به کلاس و نمونه اشاره دارد. مورد دوم به ارسال پیام (messaging) هنگام فراخوانی رفتارها اشاره دارد. مورد سوم به متمایز بودن اشیا از یکدیگر توسط شناسه ها (Identifier) اشاره می کند. در تابستان ۱۹۷۱ آلن کی برای پیاده سازی اولین زبان شی گرا کار بر روی زبان جدیدی بنام اسمال تاک (Small Talk) را آغاز کرد. او می گوید : این اسم آنقدر بی خاصیت و کم خطر بود که اگر پیشرفتی هم بدست نمی آمد، هیچکس متعجب نمی شد. اسمال تاک همانند سلولهای زیستی عمل می کرد. سلولهای مستقل از طریق ارسال پیام با یکدیگر ارتباط برقرار می کردند. هر پیام شامل داده، نشانی فرستنده، نشانی گیرنده و عملی که گیرنده می بایست بر روی داده انجام می داد، بود. آلن کی این سازوکار ساده را در سراسر زبان اعمال کرد. وی در ساده سازی تعریف زبان تا بدانجا پیش رفت که تعریف کامل زبان اسمال تاک، در یک صفحه جا می گرفت. دان اینگالس (Dan Ingalls) زبان را ظرف چند روز پیاده سازی و اجرایی کرد. دیدگاه آلن کی طراحی مدلی هماهنگ با مدل زیست سلولی که در آن سلولها در محیطی معین در پاسخ به پیامهای شیمیایی خاص، پروتئینهای خاصی را تولید می کنند بود. سلولهای گیرنده ممکن است پیامهای شیمیایی جدیدی برای دیگر سلولها ارسال کنند. تعامل سلولها با یکدیگر در نهایت هدف حیاتی آنها را بر آورده می سازد. محیط امنی که حیات سلولی را میسر می سازد خود ساختاری سلولی دارد و با معماری Enterprise Java Beans که بعدها Sun Micro Systems معرفی نمود، شباهت دارد. این محیط ها امروزه بنام میان افزار (Middleware) شناخته می شوند. اصول اولیه ای که آلن کی برای یک زبان کاملا شی گرا (Pure Object Oriented) تبیین کرد، همچنان پابرجاست. وی ۵ اصل زیر را برای شی گرایی یک زبان تعریف می کند.
  • هر چیزی یک شی است.
  • یک برنامه از مجموعه ای اشیا تشکیل شده است که توسط ارسال پیام، به یکدیگر می گویند که چه باید انجام دهند.
  • هر شی حافظه ای را به خود تخصیص می دهد که از اشبا دیگر ساخته شده است.
  • هر شی نمونه ای از یک نوع (Class) است.
  • تمامی اشیا نمونه از یک نوع، می توانند پیامهای مشابهی دریافت کنند.

بوش (Grady Booch) در این باره به ایجاز می گوید: یک شی، دارای وضعیت (State)، رفتار و شناسه است. از آنجا که تمامی ارتباط از طریق پیامهاست، می توان یک شی را از درون محیط خود خارج کرد و در درون محیطی دیگر قرار داد، به شرطی که پیامهایی که دریافت می کند و پاسخهایی که متقابلا تولید می کند برای محیط جدید نیز مناسب باشد. این بدان معناست که اشیا نرم افزاری می توانند در محیط هایی که طراح آنها تصورش را نمی کرده است، مورد استفاده مجدد قرار گیرند. هر برنامه نویس دیگر ممکن است از تمامی یا برخی رفتارهای شی از پیش تعریف شده استفاده کند. وی می تواند رفتارهایی را به رفتارهای شی قبلی افزوده و یا برخی را بازنویسی کند. شی گرایی امکان تمرکز بر دنیای مسئله و شبیه سازی دقیق آن با اشیا نظیرنرم افزاری را فراهم ساخته است. هر شی مانند یک کامپیوتر کوچک دارای حالتی (state) در لحظه معین است و می تواند بکمک رفتارهای خود کارهایی را انجام دهد. وظیفه آنالیست شناسایی اشیا و پیامهایی که در دنیای مسئله رد و بدل می گردد و وظیفه طراح انتخاب یا طراحی اشیا مناسب برای پاسخگویی مناسب به نیازهای مسئله است. شی گرایی با معرفی دیدگاهی منطبق با آنچه در در دنیای واقعی می گذرد، راهکاری قدرتمند در توسعه نرم افزار بوجود آورد. پس از گذشت سالها، هنوز اسمال تاک شی گرا ترین زبان موجود است. مهمترین زبانهای برنامه نویسی همچون C++ و جاوا ایده های بنیادی خود را از اسمال تاک برگرفته اند، ولی در عمل با ترکیب شی گرایی با دیگر تکنیک های مورد نیاز، به زبانهایی ترکیبی (Hybrid) و یا کم انعطاف تر از اسمال تاک بدل شده اند. چند سال پیش شرکت تگزاس اینسترومنت باید بین استفاده از اسمال تاک یا C++ (که امروزه محبوب تر است) در یکی از پروژه هایش تصمیم می گرفت. تیم اسمال تاک در آن شرکت پیشنهاد جالبی مطرح کرد و آن این بود که سه نفر از آنها با هرچند نفر برنامه نویس C++ در مسابقه ای شرکت کنند. صبح روز مسابقه مسئله ای به هر دو تیم داده شود و ظهر، یکی از مشخصات (Specifications) مسئله تغییر کند. در پایان روز هر تیمی که برنامه کاملتری داشته باشد برنده اعلام شود. این پیشنهاد پذیرفته شد و تیم اسمال تاک به آسانی پیروز شد. اسمال تاک هنوز به خاطر انعطاف پذیری فوق العاده اش همچنان مورد تحسین است. آلن کی برای دیدگاه نوین خود به برنامه سازی، واژه شی گرایی را برگزید. واژه شی گرایی کمی به اصالت دیدگاه وی و معنای آن لطمه زد. چراکه از آن پس اشیا دنیای واقعی به جای سلولهای زیستی در یاخته های زنده مرجع تشابه با اشیا در شی گرایی قرار گرفتند. شی گرایی به پیشرفت و تکامل سیستمهای خبره و هوش مصنوعی سرعت بخشید چرا که از ابتدا بر اساس الگوی حیات سلولی بنا شده بود. در یک برنامه شی گرا، یک نمونه از کلاسی معین، متولد (Instantiate) می شود. در طول حیاط خود از طریق شناسایی الگوهای فراخوانی رفتارهای خود توسط محیط پیرامون و پاسخهایی که از دیگر اشیا دریافت می کند، حالت (State) خود را بهینه می نماید، (در صورتی که برنامه نویس تصمیم به پیاده سازی یادگیری ماشینی هرچند بسیار ساده در کلاس شی مورد نظر، داشته باشد،) چیزهایی را از پیرامون درمی یابد و رفتارهای بالغ تری از خود نشان می دهد، و نهایتا در زمان مناسب می میرد. به عنوان یک مثال بسیار ابتدایی می توان به کاشه (Cache) اشاره کرد که در طول زمان با توجه به الگوهای دستیابی به داده ها، به تولید اشیا مناسب می پردازد، و بارگذاری آنها در حافظه می پردازد و نهایتا نمونه های تولید شده را از حافظه خارج می نماید. در اینجا اشاره به جمله ای از دانیل هیلیس خالی از لطف نیست: اینک برای من، این واقعیت که حیات دارای خاصیت باز تولید و تکامل است از اهمیت بسیار بیشتری برخوردار است تا این که از مولکولهای کربن ساخته شده باشد. ما هرگز پیش از این بین تکامل و کربنی بودن حیات تمایز قایل نمی شدیم. چرا که نمونه دیگری نداشتیم که تکامل یابد، تولید مثل کند و از کربن ساخته نشده باشد. از نظر من مهم نیست ما این پدیده را حیات بنامیم یا نه. هر چه هست از برخی جهات با موجودات زنده کربنی مشترک و از برخی جهات متفاوت است. سرمایه گذار پروژه اسمال تاک شرکت زیراکس بود. زیراکس که یکی از نوآورترین و خلاق ترین کمپانی ها در زمینه تولید دانش است هم اکنون اسمال تاک را به یکی از زیر مجموعه های خود بنام پارک پلیس سپرده است.