موضوع مقاله: سیمولا | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # سیمولا | مقدمه: این زبان ها در ۱۹۶۰ در مرکز محاسبات نروژی در اسلو، توسط اوله-یوهان دال و کریستین نیگارد توسعه یافتند. | ## بخش 1: سیمولا | نحو آن نسبتاً به الگول ۶۰ وفادار است و همان‌طور که از نام آن پیداست، برای انجام شبیه‌سازی طراحی شده‌است. سیمولا ۶۷ اشیاء، کلاس‌ها، زیر کلاس‌ها، متدهای مجازی، هم‌روال، شبیه‌سازی رویداد گسسته و ویژگی‌های جمع‌آوری زباله را معرفی کرد. سیمولا اولین زبان برنامه‌نویسی شی گرا در نظر گرفته شده‌است و چارچوبی برای بسیاری از ویژگی‌های زبان‌های شی گرای امروزی تهیه کرده‌است. یکی دیگر از دلایل اهمیت آن این است که سیمولا هنوز هم برای انواع مختلف از درس‌های دانشگاه استفاده می‌شود. این زبان در طیف وسیعی از کاربردها مانند شبیه‌سازی طرح‌های VLSI، مدل‌سازی فرایند، پروتکل‌ها، الگوریتم‌ها و برنامه‌های کاربردی دیگر مانند حروفچینی، گرافیک کامپیوتری، و آموزش و پرورش استفاده شده‌است. از آنجا که منظق شئ گرایی و برخی ویژگی های دیگر در ++C، جاوا و #C بر اساس این زبان اما به طور بازسازی شده طراحی شده اند، نفوذ سیمولا اغلب کم بیان می‌شود. خالق ++C، بی‌یارنه استراس‌تروپ، اذعان کرده‌است که سیمولا ۶۷ بیشترین اثر را برای توسعه ++C داشت و یکی از دلایل آن را نوع بهبودهای بهره‌وری در سرعت خام محاسبات ارائه شده توسط زبان های سطح پایین مثل BCPL در سیمولا بیان کرده است. اهمیت زبان سیمولا به دلیل مطرح شدن ایده‌های شیء گرایی (خصوصا کلاس ها) در این زبان بود. توابع هم‌روند برای انجام یک وظیفه توسط چند روال با هم دیگر هم کاری داشتند که باید حالت هر کدام حفظ شوند. این توابع در عمل باید برای اجرا به نوبت فراخوانی و اجرا شوند و حافظه باید ماندگار باشد و اجرا از محل قبلی ادامه یابد. تاریخچه در سال 1957 کریستین نیگارد شروع به نوشتن برنامه‌های شبیه‌سازی کامپیوتر کرد. نیگارد نیاز به یک راه بهتر برای توصیف عدم تجانس و عملکرد یک سیستم را احساس کرد و متوجه شد برای عملی کردن ایده‌های خود بر روی یک زبان رسمی کامپیوتر برای توصیف سیستم، کسی را با مهارت بیشتر در برنامه‌نویسی نیاز دارد. "سیمولا ۱" متولد شد، یک زبان برنامه‌نویسی با هدف ویژه برای شبیه‌سازی سیستم‌های رویداد گسسته. کریستن نیگارد برای بازاریابی کامپیوتر جدید یونی‌وک ۱۱۰۷ در اولاخر مه 1962 به یونی‌وک دعوت شد. در آن دیدار نیگارد ایده‌های سیمولا به رابرت بمر، مدیر برنامه‌نویسی سیستم در یونی‌وک ارائه داد. | ## بخش 2: سیمولا | او همچنین رئیس یک جلسه در دومین همایش بین‌المللی پردازش اطلاعات میزبانی شده توسط IFIP بود. او نیگارد را که مقاله "سیمولا: فرمتی از الگول به شرح شبکه‌های رویداد گسسته" را ارائه کرده بود، به این همایش دعوت کرد. مرکز محاسبات نروژی یونی‌وک ۱۱۰۷ را دراوت ۱۹۶۳ با تخفیف قابل توجهی گرفت، که در آن دال سیمولا۱ را تحت قرارداد با یونی‌وک پیاده سازی می‌کرد. سیمولا به چندین کشور در سراسر جهان گسترش یافت و سیمولا ۱ بعداً در کامپیوترهای بوروقس B5500 و کامپیوتر اورال - ۱۶ روسی پیاده شد. در سال 1966، C.A.R.Hoare مفهوم ساخت کلاس رکورد را معرفی کرد، که دال و نیگارد آن را با مفهوم پیشوندی و ویژگی‌های دیگری برای برآورده کردن نیازهای خود برای مفهوم فرایند تعمیم داده شده گسترش دادند. دال و نیگارد مقاله خود در اعلان‌های کلاس‌ها و زیر کلاس‌ها در کنفرانس کاری IFIP روی زبان‌های شبیه‌سازی در اسلو، در مه ۱۹۶۷ ارائه دادند. در ژوئن ۱۹۶۷ کنفرانسی برای استاندارد کردن زبان و آغاز تعدادی از پیاده‌سازی‌ها برگزار شد. سیمولا ۶۷ بود به‌طور رسمی در اولین جلسه از گروه استانداردهای سیمولا (SSG) در ماه فوریه ۱۹۶۸ استاندارد شد. آن همچنین کمک به الهام بخشی مدل عملگر از محاسبات هم‌زمان کرد، هر چند سیمولا تنها از همکاری و روال (و نه همزمانی) پشتیبانی می‌کند. در اواخر دهه شصت و اوایل دهه هفتاد چهار پیاده‌سازی اصلی از سیمولا وجود داشت: یونی‌وک ۱۱۰۰ توسط NCC، سیستم ۳۶۰ و سیستم ۳۷۰ توسط پژوهشکده سوئدی برای دفاع ملی (FOA)، سی دی سی ۳۰۰۰ توسط دانشگاه اسلو در نصب و راه اندازی کامپیوتر مشترک در جلر تاپس - ۱۰ توسط ENEA AB این پیاده‌سازی به طیف گسترده‌ای از زبان‌های برنامه‌نویسی منتقل شدند. تاپس - ۱۰ مفهوم متغیرها و روش‌های عضو عمومی، محافظت شده و خصوصی، که بعداً با سیمولا ۸۷ یکپارچه شد را پیاده کرد. سیمولا ۸۷ آخرین استاندارد است و به طیف گسترده‌ای از زبان‌های برنامه‌نویسی منتقل شده‌است. عمدتاً سه پیاده‌سازی شده وجود دارد: سیمولا AS، لوند سیمولا، GNU Cim - سایت اف تی پی از دانشگاه اسلو در نوامبر ۲۰۰۱ دال و نیگارد مدال IEEE جان فون نویمان توسط مؤسسه مهندسان برق و الکترونیک را برای "معرفی مفاهیم برنامه‌نویسی شی گرا از طریق طراحی و پیاده‌سازی سیمولا ۶۷" دریافت کردند. آن‌ها در ماه فوریه ۲۰۰۲، جایزه A.M.2001 تورینگ توسط انجمن ماشین‌ها محاسبهٔ (ACM) را برای "ایده‌های اساسی برای ظهور برنامه‌نویسی شیء گرا، از طریق طراحی شان با زبان‌های برنامه‌نویسی سیمولا ۱ و سیمولا ۶۷" دریافت کردند. متأسفانه نه دال و نه نیگارد نتوانستند خود را به سخنرانی جایزه ACM تورینگ که برنامه‌ریزی شده برای ارائه در کنفرانس OOPSLA 2002 در شهر سیاتل شده بود، برسانند، چرا که دال در ژوئن و نیگارد در اوت از دنیا رفتند. | ## بخش 3: سیمولا | آزمایشگاه تحقیقات سیمولا یک مؤسسه تحقیقاتی است که بخاطر زبان سیمولا نامگذاری شده‌است، و نیگارد یک موقعیت کاری پاره وقت از سال بازگشایی در۲۰۰۱ آنجا داشت. کد نمونه برنامه حداقل فایل کامپیوتر خالی یک برنامه حداقل در سیمولا است، که توسط حجم برنامه منبع اندازه‌گیری شده‌است. با این حال، برنامه حداقل به صورت مناسب تری به عنوان یک بلوک خالی جلوه داده می‌شود: Begin End; آن اجرای برنامه را آغاز و بلافاصله خاتمه می‌دهد. سیمولا نشانی از مفهوم کلاس‌های انتزاعی ندارد زیرا کلاس‌ها با روش‌های مجازی خالص می‌تواند نمونه شود. این به این معنی است که در مثال بالا همه کلاس‌ها می‌توانند نمونه شوند، هرچند فراخواندن یک روش مجازی خالص خطای زمان اجرا تولید می‌کند. فراخوانی با نام سیمولا از فراخوانی با نام پشتیبانی می‌کند، بنابراین ابزار جنسن به راحتی می‌تواند پیاده سازی شود. با این حال، حالت انتقال پیش‌فرض برای پارامتر ساده با مقدار فراخوانده می‌شود، برخلاف زبان الگول که فقط فراخوانی با نام را استفاده می‌کند. برنامه منبع برای ابزار جنسن به همین خاطر باید فراخوانی با نام را برای پارامترها هنگامی که توسط یک گردآور سیمولا گردآوری شده را مشخص کند. توجه داشته باشید که استاندارد سیمولا محدودیت‌های خاصی بر متغیر کنترل‌کننده در حلقه for اجازه می‌دهد؛ بنابراین برنامه بالا از حلقه while برای حداکثر قابلیت حمل استفاده می‌کند. هر کدام از آن‌ها در حال گشتن در فروشگاه به مدت ۱۲ دقیقه هستند و سپس از اتاق پرو به‌طور انحصاری به مدت سه دقیقه استفاده می‌کنند، هر یک از یک توزیع نرمال پیروی می‌کنند. بسته شبیه‌سازی می‌تواند در هر بلوک استفاده می‌شود و شبیه‌سازی‌ها حتی می‌توانند داخل هم جا داده شوند وقتی که کسی که شبیه‌سازی می‌کند را شبیه‌سازی می‌کند. هنگامی که کسی درخواست اتاق پرو می‌کند و آن اشغال است، آن‌ها را باید در این صف منتظر (صبر (درب بمانند. شخص زیر کلاسی از فرایند است و فعالیت او با استفاده از نگه داشتن (زمان برای دیدن فروشگاه و زمان حضور در اتاق پرو) و و روش‌های فراخوانی در شی اتاق پرو برای درخواست و ترک اتاق پرو شرح داده شده‌است. برنامه اصلی همه اشیاء را ایجاد وهمه اشیاء فردی را فعال برای قرار دادن آن‌ها در صف رویداد می‌کند. | ## جمع‌بندی | برنامه اصلی برای ۱۰۰ دقیقه از زمان شبیه‌سازی می‌ماند قبل ازاینکه برنامه پایان یابد.