سیمولا: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
بدون خلاصۀ ویرایش |
SiarFisher (بحث | مشارکتها) |
||
خط ۱:
{{بازنویسی}}
سیمولا نامی برای دو زبان برنامه نویسی است، سیمولا۱ و سیمولا۶۷، در دهه ۱۹۶۰ در مرکز محاسبه نروژی در آلسو، به طور مشترک توسط اله یوهان دال و کریستن نیگارد ایجاد شد، مجموعهای عالی و نسبتا وفادار از الگول۶۰ است.
سیمولا۶۷ اشیاء، زیرکلاسها ، متدهای مجازی، دستورالعملها، پیشامد گسسته شبیه سازی و ویژگیهای پاک کردن خانههای بلااستفاده حافظه آزاد شده را معرفی کرد. سیمولا اولین زبان برنامه نویسی شی گرای مطرح شدهاست. همانطور که از نامش بر میآید سیمولا برای شبیه سازی طراحی شد، و نیازهای آن دامنه، چارچوبی را برای بسیاری از ویژگیهای زبانهای شی گرای امروزی فراهم کردهاست.
سیمولا در محدوده وسیعی از کاربردهای شبیه سازی مانند طراحیهای مجتمع سازی در مقیاس بزرگ(وی ال اس آی)، پردازشها، پروتکلها، الگوریتمها و سایر کاربردها مانند تایپ چینی، گرافیکهای کامپیوتری و آموزش و پرورش، مورد استفاده قرار گرفت. از زمانی که نوع اشیاء سیمولا در سی ++، جاوا و سی شارپ دوباره تولید شد، اغلب تاثیر سیمولا دست کم گرفته شدهاست. سازنده سی ++، تصدیق کردهاست که سیمولا بزرکترین تاثیر را بر وی در ایجاد سی ++ ، رساندن نوعی از بهره وری توسعه سختافزاری و نرمافزاری پیشنهاد شده توسط سیمولا به سرعت خام انجام توسط [[الگوریتم]]های پیشنهاد شده زبانهای سطح پایین تر مانند بی سی پی ال، داشتهاست.
سیمولا
شی گرا :مدل
۱۹۶۷ :پدیدار شده در
تولید یکپارچه سیستمعامل کامپیوتر :کاربرد عمده
الگول۶۰ :تاثیر گرفته از
زبانهای برنامه نویسی شی گرا :تاثیر گذار بر
== تاریخچه ==
کریستن نیگارد نوشتن برنامههای شبیه سازی [[کامپیوتر]] را در ۱۹۵۷ آغاز کرد. نیگارد دریافت که نیازمند راه بهتری برای توصیف عملکرد سیستمهای ناهماهنگ است.برای پیشروی با ایدههایش برای توصیف یِک سیستم با زبان صوری کامپیوتر، نیگارد دریافت که نیازمند فردی با مهارتهای برنامه نویسی بیشتری نسبت به خود است. اله یوهان دال در ژانویه ۱۹۶۲ به کار او پیوست. تصمیم پیوند این زبان به الگول۶۰ مدت کمی پس از آن گرفته شد.در می۱۹۶۲ مفهوم اصلی زبان شبیه سازی تنظیم شد. "سیمولا۱" برای هدف خاصی از [[زبان برنامه نویسی]] برای شبیه سازی سیستمهای رویدادهای گسسته به وجود آمد.
کریستن نیگارد اواخر می۱۹۶۲ در ارتباط با بازاریابی کامپیوتر جدیدشان ۱۱۰۷ UNIVAC به Univac دعوت شد.در آن ملاقات نیگارد ایدههای سیمولا را به رابرت بمر مدیر سیستمهای برنامه نویسی در Univac عرضه کرد. بمر که یک طرفدار شناخته شده الگول بود دریافت که پروژه سیمولا تاثیرگذار است. بمر همچنین در یک جلسه در دومین کنفرانس بینالمللی درباره پردازش اطلاعات به میزبانی فدراسیون بینالمللی اطلاعات شرکت داشت. او نیگارد را دعوت کرد، کسی که مقاله "سیمولا—توسعه یافته الگول برای شرح شبکههای رویداد گسسته را ارایه کرد.
مرکز کامپیوتری نروژی یک UNIVAC ۱۱۰۷ در آگوست ۱۹۶۳ با تخفیفی قابل توجه خرید به علت اینکه دال تحت قرارداد با Univac سیمولا۱ را تکمیل کرد. تکامل بر پایه کامپایلر الگول۶۰ UNIVAC استوار بود . سیمولا۱ در ژانویه ۱۹۷۵ روی UNIVAC ۱۱۰۷ به طور کامل قابل اجرا شد.در دو سال بعدی دال و نیگارد زمان زیادی را صرف آموزش سیمولا نمودند. سیمولا در کشورهای مختلفی در سراسر جهان گسترش یافت و سیمولا۱ بعدها روی کامپیوترهای Burroughs B۵۵۰۰ و کامپیوتر URAL-۱۶ روسیهای اجرا شد.
در ۱۹۶۶ C.A.R Hoare مفهوم ساختن رکورد کلاس را معرفی کرد، که دال و نیگارد تعمیم داده بودند با مفهوم پیشوندی و سایر ترکیبها برای رفع نیازشان برای مفهوم پردازش کلی. دال و نیگارد در می۱۹۶۷ در السو مقاله خود راجع به اعلان کلاس و زیر کلاسها در کنفرانس طرزکار زبانهای شبیه سازی فدراسیون بینالمللی پردازش اطلاعات ارایه کردند.این مقاله اولین تعریف قراردادی از سیمولا۶۷ شد. درژوین ۱۹۶۷ کنفرانسی به منظور استانداردسازی و آغاز چند پیاده سازی برگزار شد. دال پیشنهاد یکی کردن مفهوم نوع و کلاس را مطرح کرد. این باعث بحثهایی جدی شد و پیشنهاد توسط هییت مدیره رد شد. سیمولا۶۷ در فوریه ۱۹۶۸ در اولین ملاقات گروه استاندار سیمولا به طور رسمی استانداردسازی شد.
سیمولا در ایجاد اسمالتاک و بعدها زبانهای برنامه نویسی شی گرا تاثیر گذار بود. همچنین به الهام بخشیدن به مدل نقش بیرونی محاسبه همزمان کمک کرد با اینکه سیمولا فقط دستورالعملها را حمایت میکند نه دقیقا همزمانی را.
در اواخر دهه شصت و اوایل دهه هفتاد چهار پیاده سازی اصلی از سیمولا وجود داشت:
-UNIVAC ۱۱۰۷ توسط NCC
- سیستم۳۶۰ و سیستم ۳۷۰ توسط موسسه تحقیقاتی سویدی برای دفاع ملی
- CDC ۳۰۰۰ توسط دانشگاه السو نصب کامپیتر مشترک بر Kjeller
-TOPS-۱۰ توسط ENEA AB
این پیاده سازیها به محدوده وسیعی از طرحهای زیربنایی متصل بود.tops_۱۰ مفهومهای عمومی، حفاظت شده و متغیرهای عضو خصوصی را پیاده سازی کرد که بعدها در سیمولا۸۷ جمع شد. سیمولا۸۷ آخرین استاندارد است و به محدوده وسیعی از طرحهای زیربنایی متصل است. سه نوع توسعه یافته اصلی وجود دارد:
-سیمولا AS
-سیمولا لاند
-تولید یکپارچه سیستمعامل کامپیوتر
در نوامبر ۲۰۰۱ دال و نیگارد" به خاطر معرفی مفاهیم زیر مجموعه برنامه نویسی شی گرا در حین طراحی و توسعه سیمولا۶۷" مدال جان ون نیومن IEEE را از موسسه مهندسان الکتریکط و الکترونیکی دریافت کردند، آنها در فوریه ۲۰۰۲ جایزهای ام تورینگ( A.M.turing) را برای رابط برای ماشینهای کامپیوتری با تاکید بر "ایدههای فوق العاده اساسی برنامه نویسی شی گرا در حین طراحی زبانهای یرنامه نویسی سیمولا۱ و سیمولا۶۷" دریافت کردند. متاسفانه نه دال ونه نیگارد هیچ یک نتوانستند در سخنرانی جایزه ACM Turing ارایه دهند که زمان بندی شده بود تا به کنفرانس OOPSLA ۲۰۰۲ در سیاتل تحویل داده شود چون هردوی آنها در فاصله حدود دو ماه از یکدکر به ترتیب در ژوین و آگوست درگذشتند.
آزمایشگاه تحقیقات سیمولا یک موسسه تحقیقات است که بعد از زبان سیمولا نامگذاری شدهاست. نیگارد از زمان بازگشایی آن در سال ۲۰۰۱ مدت زمانی را در آنجا گذارندهاست.
== کد نمونه ==
=== برنامه کوچک ===
یک فایل خالی در کامپیوتر یک برنامه کوچک در سیمولا است که به وسیله اندازه کد مبدا اندازه گیری شدهاست.تنها از یک چیز تشکیل شدهاست: یک دستور مجازی
هر چند برنامه کوچک راحت تر با یک قالب تهی ارایه میشود
<source lang="cpp">
Begin
End;
</source>
این شروع به اجرا میکند و به سرعت برنامه پایان مییابد. این زبان هیچ مقدار بازگشتی از خود برنامه ندارد.
=== Hello world قدیمی ===
تذکر! سیمولا حساس به حروف نیست. یک مثال از برنامه Hello world در سیمولا:
<source lang="cpp">
Begin
OutText ("Hello World!");
سطر ۶۰ ⟵ ۵۸:
End;
</source>
=== کلاسها، زیر کلاسها و متدهای مجازی ===
یک مثال واقعی تر با کاربرد کلاسها و زیر کلاسها و متدهای مجازی:
<source lang="cpp">
Begin
Class Glyph;
سطر ۸۳ ⟵ ۸۴:
Begin
Integer i;
For i:=
elements (i).print;
OutImage;
سطر ۹۰ ⟵ ۹۱:
Ref (Glyph) rg;
Ref (Glyph) Array rgs (
! Main program;
rgs (
rgs (
rgs (
rgs (
rg:- New Line (rgs);
rg.print;
End;
</source>
مثال بالا یک
=== فراخوانی با
سیمولا
یک مثال بسیار ساده تر تابع جمع است میتواند همانند ادامه تولید شود.
<source lang="cpp">
Real Procedure Sigma (l, m, n, u);
Begin
Real s;
While
Sigma:= s;
End;
</source>
ادامه:
<math> Z = \sum_{i=1}^{۱0۰}{۱ \over (i + a)^2}</math>
که به صورت ادامه میتواند بسط یابد:
<source lang="cpp">
Z:= Sigma (i, ۱, ۱۰۰, ۱ / (i + a) ** ۲);
</source>
=== شبیه سازی ===
سیمولا برنامه آماده برای انجام شبیه سازیهای رویدادهای گسسته را دارد .این برنامه آماده شبیه سازی بر پایه امکانات شی گرای سیمولا و مفهوم دستورالعملهای آن استوار است.
سام سالی و اندی در حال خرید لباس هستند. آنها باید از یک اتاق پرو استفاده کنند.هر کدام از آنها حدود ۱۲ دقیقه در جستجوی لباس است و سپس اتاق پرو را به طور انحصاری استفاده میکند، هر کدام از یک توزیع نرمال پیروی میکند. یک شبیه سازی از آزمایش اتاق پرو آنها به شکل زیر است:
<source lang="cpp">
Simulation Begin
Class FittingRoom; Begin
سطر ۱۵۷ ⟵ ۱۶۲:
Process Class Person (pname); Text pname; Begin
While True Do Begin
Hold (Normal (
report (pname & " is requesting the fitting room");
fittingroom1.request;
report (pname & " has entered the fitting room");
Hold (Normal (
fittingroom1.leave;
report (pname & " has left the fitting room");
سطر ۱۶۸ ⟵ ۱۷۳:
Integer u;
Ref (FittingRoom)
Activate New Person ("Sam");
Activate New Person ("Sally");
Activate New Person ("Andy");
Hold (
End;
</source>
کد اصلی با عبارت شبیه سازی برای انجام شبیه سازی شروع شدهاست. برنامه آماده میتواند در هر قطعهای استفاده شود و شبیه سازیها هنگامی که فرد شبیه ساز شبیه سازی را انجام میدهد حتی میتوانند تودرتو شوند.
شی اتاق پرو از یک صف برای دستیابی به اتاق پرو استفاده میکند. هنگامی که کسی اتاق پرو را نیاز داشته باشد و اتاق پر باشد باید در صف منتظر بماند. هنگامی که شخصی اتاق پرو را ترک میکند اولی از صف خارج میشود و بنابراین از صف در پاک میشود.
شخص قسمتی از کلاس پردازش است و کار آن توصیف استفاده ( زمان مورد نیاز برای جستجوی فروشگاه و زمانی که در اتاق پرو میگذرد) و فراخوانی متدها در شی اتاق پرو برای درخواست و ترک اتاق پرو است.
برنامه اصلی همه اشیاء را میسازد و همه اشیاء اشخاص را برای قرار دادن آنها در صف فعال میکند. برنامه اصلی برای ۱۰۰ دقیقه از زمان شبیه سازی قبل از اتمام برنامه متوقف میشود.
== اینها را هم ببینید ==
* [[Object-oriented programming]]
* [[BETA programming language]] (a modern successor to Simula)
* [[Simulation language]]
* [[ALGOL ۶۰]]
== منبع ==
* [http://heim.ifi.uio.no/~cim/sim_history.html Compiling Simula] Early history of the development of Simula by Jan Rune Holmevik
* [http://www.edelweb.fr/Simula/ IBM System ۳۶۰/۳۷۰ Compiler and Historical Documentation] The Simula Standard and other historical documentation by Peter Sylvester
== لینکهای اضافه ==
* [http://staff.um.edu.mt/jskl1/talk.html Introduction to OOP in Simula] – By J.Sklenar, based on the 1997 seminar "۳۰ Years of Object Oriented Programming (OOP)" at the University of Malta
* [http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html How Object-Oriented Programming Started] – By Dahl and Nygaard, abbrev. version of an encyclopedia article; on Nygaards home page
* [http://www.iro.umontreal.ca/~simula/ Simula at the Université de Montréal] Includes tutorials, documentation, and links in English and in French
* [http://www.macs.hw.ac.uk/~rjp/bookhtml/ An Introduction to Programming in Simula] A textbook by Rob Pooley now available as HTML
[[رده:موضوعات مربوط به زبانهای برنامهنویسی]]
[[ca:Simula67]]
[[cs:Simula 67]]
[[de:Simula]]
[[el:Simula]]
[[en:Simula]]
[[es:Simula]]
[[fi:Simula]]
[[fr:Simula]]
[[hu:Simula]]
[[it:Simula]]
[[ja:Simula]]
[[ko:시뮬라]]
[[nl:Simula]]
[[nn:Simula]]
[[no:Simula]]
[[pl:Simula]]
[[pt:Simula]]
[[ru:Симула]]
[[sk:Simula]]
[[sv:Simula]]
[[tg:Simula]]
[[th:ภาษาซิมูลา]]
[[uk:Симула]]
[[zh:Simula]]
|