الگول
الگول ( مخفف عبارت زبان الگوریتمی ALGOrithmic Language) از خانواده زبانهای برنامه نویسی امری کامپیوتری است و در اصل در میانههای سال ۱۹۵۰ توسعه یافته که بسیاری از زبانهای دیگر را تحت تاثیر قرار داده است . عملاً راهی شده است که الگوریتمها در کتابهای درسی و فعالیتهای علمی برای تقریباً۳۰ سال آینده توصیف شوند . الگول برای دوری از برخی مشکلات که در فرترن دیده شده بود طراحی شد و سرانجام باعث پیشرفت بسیاری از زبانهای برنامه نویسی دیگر شد . الگولها کدها را به صورت بلوکی معرفی کرد و اولین زبانی بود که از دو جفت begin و end برای مرز بندی بلوکها استفاده کرد . قسمتهایی از الگول مانند syntax بعضی اوقات برای ثبت و یادداشت الگوریتمها استفاده میشود . به همین خاطر به آن Pidgin Algol ( الگول دست و پا شکسته ) میگفتند . سه خصوصیت اصلی الگول به شرح زیر است :
- الگول ۵۸ با عنوان IAL (زبان الگوریتمی جهانی ) شناخته شد.
- الگول ۶۰ در سال ۱۹۶۳ عرضه شد .
- الگول ۶۸ درسال ۱۹۷۳ عرضه شد .
نیکلاس ورس Algol –Wرا در الگول ۶۰ قبل از توسعه پاسکال پایه گذاری کرد Algol –W به منظور نسل بعدی Algol در نظر گرفته شد . ولی کمیته الگول ۶۸ تصمیم به طراحی الگولی گرفتند که خیلی جامع ترو پیشرفته تر از الگول ساده شده ۶۰ بود . نسخه رسمی الگول بعد از یک سال از اولین انتشار آن نامگذاری شد . الگول ۶۸ درواقع متفاوت از الگول ۶۰ است اما به خوبی پذیرفته نشد و در نتیجه الگول رایج و عام الگول ۶۰ بود .
محتویات |
اهمیت و اجرا [ویرایش]
IAL ( زبان الگول جهانی ) بسیار تاثیرگذار بود و به طور عام مورد توجه زبانهای برنامه نویسی جدید قرار گرفت . شرکت Burroughs خطوط کامپیوترهای آن را ساخت تا مستقیماً" آن را به مرحله اجرا برساند . به علاوه در علم کامپیوتر کد موضوعی الگول؛ یک سری دستورالعملهای معماری ساده و جمع و جوری بود که بیشتر در آموزش ساخت کامپایلر و بقیه زبانهای سطح بالای امری پیاده سازی عملی مانندLisp - machines و P – code machines مورد استفاده قرار گرفته شد . الگول توسط دو کیته علمی کامپیوتر آمریکا و اروپا در جلسهای در سال ۱۹۵۸ در زوریخ توسعه داده شد .
سه دستورزبان متفاوت مشخص شده برای آن عبارتند از :
۱ – نحو مرجع ۲ – نحو نشر ۳ – نحو اجرا نحوهای مختلف به آن اجازه میداد تا از کلمات کلیدی متفاوتی برای ممیز اعشاری برای زبانهای متفاوت استفاده کند . الگول بیشتر توسط دانشمندان کامپیوتر در آمریکا و اروپا استفاده میشد . مورد استفاده آن در کار بردهای تجاری بوسیله نبودن استاندارد امکانات ورودی وخروجی در تعریف آن و فقدان بهره و سود و جذابیت در زبان بوسیله فروشندههای بزرگ کامپیوتر به تاخیر انداخته شد . الگول ۶۰ نیز گر چه برای نشر الگوریتمها استاندارد شد و تأثیر عمیقی بر توسعه زبانهای آینده داشت ولی به این سرنوشت دجار شد. (( جان بکوس )) روش شکل نرمال بکوس برای توصیف زبانهای برنامه نویسی بویژه برای الگول ۵۸ را ایجاد کرد که بوسیله (( پیتر نور )) برای الگول ۶۰ توسعه و عرضه شد و در پیشنهاد دونالد نوس به بکوس نور تغییر نام داد . پیتر نور میگوید : من به عنوان ویرایشگر پژوهشگر الگول در مذاکرات جهانی زبان قرعه کشی شدم و به عنوان عضوی از گروه طراحی زبان اروپا در نوامبر ۱۹۵۹ انتخاب گردیدم . تحت این اعتبار؛ من ویرایشگر گزارش الگول ۶۰ بودم که این محصول نتیجه جلسه الگول ۶۰ در نوامبر ۱۹۶۰در پاریس میباشد . افراد زیر در جلسه پاریس ( ۱تا ۱۶ ژوین ) حضور داشتند : فردریش ال بویر – پیتر نور – هنس روتیشاوزر – کلاس سامل سون – برنارد واکیویس – آدرین ون وی جین گاردن و مایکل وجرد ( از اروپا ) جان دبلیو بکوس – جولین گرین – چارلز کاتز – جان مک کارتی – آلن جی پرلیس و ژوزف هنری وی گستین ( از آمریکا ) آلن پرلیس توضیح واضحی از جلسه داده است : جلسه خسته کننده و بسیار طولانی بود . وقتی ایدههای خوب شخصی با ایدههای بد دیگران کنار گذاشته میشد، باعث خشم و عصبانیت میشد . با وجود این سعی و پافشاری زیادی در طول این دوره میشد . جان بکوس و پیتر نورهر دو به این کمیته در تولید الگول ۶۰ خدمت کردند، همانطور که والی فرزیگ بعدها در بوجود آوردن logo خدمات زیادی انجام داد . الگول ۶۰ الهام بخش و تأثیر گذار در بسیار از زبانهای پیرو آن بود . تونی هویر بیان کرد : این زبانی است که از زمان خودش خیلی جلوتر است و نه تنها پیشرفته زبانهای گذشته است بلکه تأثیری در زبانهای آینده نیز دارد .
سیر پیشرفت و پیاده سازی IAL [ویرایش]
| نام | سال | مولف | کشور | شـرح | هدفCPU |
|---|---|---|---|---|---|
| ZMMD-implementation | 1958 | فردریش ال بائر، Heinz Rutishauser، Klaus Samelson، Hermann Bottenbruch | Germany | implementation of ALGOL 58 | Z22 |
| Elliott ALGOL | 1960 | تونی هور | UK | Subject of the famous آلن تورینگ lecture | National-Elliott 803 & the Elliott 503 |
| JOVIAL | 1960 | Jules Schwarz | US | Was the DOD HOL prior to ایدا (زبان برنامهنویسی) | Various (see article) |
| Burroughs Algol (Several variants) |
1961 | Burroughs Corporation (with participation by Hoare، Dijkstra، and others) | US | Basis of the Burroughs (and now Unisys MCP based) computers | Burroughs large systems and their midrange as well. |
| Case ALGOL | 1961 | US | سیمولا was originally contracted as a simulation extension of the Case ALGOL | UNIVAC 1107 | |
| GOGOL | 1961 | Bill McKeeman | US | For اودین time-sharing system | PDP-1 |
| X1 Algol 60 | 1961 | ادسخر دیکسترا and J.A. Zonneveld | Netherlands | Mathematical Centre، Amsterdam | X1 |
| Dartmouth ALGOL 30 | 1962 | Thomas Eugene Kurtz et al | US | LGP-30 | |
| USS 90 Algol | 1962 | L. Petrone | Italy | ||
| Algol Translator | 1962 | G. van der May and W.L. van der Poel | Netherlands | Staatsbedrijf der Posterijen، Telegrafie en Telefonie | ZEBRA |
| Kidsgrove Algol | 1963 | F. G. Duncan | UK | English Electric Company KDF9 | |
| VALGOL | 1963 | Val Schorre | US | A test of the META II compiler compiler | |
| Whetstone | 1964 | Brian Randell and L J Russell | UK | Atomic Power Division of English Electric Company. Precursor to Ferranti Pegasus (computer)، National Physical Laboratories ACE (computer) and English Electric DEUCE implementations. | English Electric Company KDF9 |
| NU ALGOL | 1965 | Norway | UNIVAC | ||
| ALGEK | 1965 | اتحاد جماهیر شوروی سوسیالیستی | Minsk-22 | АЛГЭК، based on ALGOL-60 and کوبول support، for economical tasks | |
| MALGOL | 1966 | publ. A. Viil، M Kotli & M. Rakhendi، | جمهوری سوسیالیستی استونی شوروی | Minsk-22 | |
| ALGAMS | 1967 | GAMS group (ГАМС، группа автоматизации программирования для машин среднего класса)، cooperation of Comecon Academies of Science | کمکان | Minsk-22، later ES EVM، BESM | |
| ALGOL/ZAM | 1967 | Poland | Polish ZAM computer | ||
| RegneCentralen ALGOL | 1967 | Peter Naur | Denmark | ||
| سیمولا | 1967 | Ole-Johan Dahl and Kristen Nygaard | Norway | Algol 60 with classes | UNIVAC 1107 |
| Chinese Algol | 1972 | China | Chinese characters، expressed via the Symbol system | ||
| DG/L | 1972 | US | DG Eclipse family of computers |
مشخصات [ویرایش]
الگول ۶۰ چنانچه رسماً" تعریف شده بود امکانات ورودی و خروجی نداشت . پیاده سازیها خودشان را در راههایی تعریف میکردند که کمتربا یکدیگر همساز بودند. در مقایسه الگول ۶۸ امکانات وسیع کتابخانهای Transput را پیشنهاد کرده بود . الگول ۶۰ دو استراژدی ارزیابی برای قبول پارامترها داشت :
1.فراخوانی با ارزش و مقدار 2. فراخوانی با نام
فراخوانی با نام محدودیتهای معینی در مقایسه با فراخوانی با مرجع داشت که آن را ویژگی نامطلوبی در طراحی زبان امری ساخته بود . برای مثال، در الگول ۶۰ توسعه یک procedure که ارزش دو پارامتر را تغییر خواهد داد غیر ممکن است اگر پارامترهای واقعی ای که قبول میشوند تا متغیر integer و آرایهای که با مقدار مشابه integer شاخص شده باشند . هر چند فراخوانی با نام هنوز هم مورد علاقه اجراکنندههای الگول برای اجرای آن است . دونالد کنوت یک (( man or boy test )) تعبیه کرده بود تا کامپایلرها را مجزا کند که توابع بازگشتی و مرجعهای غیر محلی را درست اجرا کنند . این آزمایش یک مثال از فرا خوانی با نام را دارا بود . الگول ۶۰ بوسیله آدرین ون گاردن که از یک گرامر رسمی دو قسمتی استفاده شده است اختراع شد که در بردارنده نام او بود . Van Wijngaardan grammer از گرامر مستقل از متن استفاده میکرد تا مجموعهای از دستوالعمل هایی را که برنامههای معمول الگول ۶۸ را پشتیبانی و تصدیق خواهد کرد را تولید کند .
کلمات رزرو شده وشناسههای محدود شده الگول ۶۰ [ویرایش]
۳۵ کلمه رزرو شده در زیر زبان استانداردBurroughs large systems وجود دارد:
ALPHA، ARRAY، BEGIN، BOOLEAN، COMMENT، CONTINUE، DIRECT، DO، DOUBLE، ELSE، END، EVENT، FALSE، FILE، FOR، FORMAT، GO، IF، INTEGER، LABEL، LIST، LONG، OWN، POINTER، PROCEDURE، REAL، STEP، SWITCH، TASK، THEN، TRUE، UNTIL، VALUE، WHILE، ZIP
۷۱ شناسه محدود شده در زیر زبان استانداردBurroughs large systems وجود دارد:
ACCEPT، AND، ATTACH، BY، CALL، CASE، CAUSE، CLOSE، DEALLOCATE، DEFINE، DETACH، DISABLE، DISPLAY، DIV، DUMP، ENABLE، EQL، EQV، EXCHANGE، EXTERNAL، FILL، FORWARD، GEQ، GTR، IMP، IN، INTERRUPT، IS، LB، LEQ، LIBERATE، LINE، LOCK، LSS، MERGE، MOD، MONITOR، MUX، NEQ، NO، NOT، ON، OPEN، OR، OUT، PICTURE، PROCESS، PROCURE، PROGRAMDUMP، RB، READ، RELEASE، REPLACE، RESET، RESIZE، REWIND، RUN، SCAN، SEEK، SET، SKIP، SORT، SPACE، SWAP، THRU، TIMES، TO، WAIT، WHEN، WITH، WRITE
مثالها [ویرایش]
Code sample (ALGOL 60)
procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);
value n, m; array a; integer n, m, i, k; real y;
comment The absolute greatest element of the matrix a, of size n by m is transferred to y, and the subscripts of this element to i and k; begin integer p, q;
y := 0; i := k := 1;
for p:=1 step 1 until n do
for q:=1 step 1 until m do
if abs(a[p, q])> y then
begin y := abs(a[p, q]);
i := p; k := q
end
end Absmax
در اینجا مثالی است از اینکه چگونه یک جدول بوجود بیاوریم که ازالیوت803 الگول استفاده میکند.
FLOATING POINT ALGOL TEST'
BEGIN REAL A,B,C,D'
READ D'
FOR A:= 0.0 STEP D UNTIL 6.3 DO
BEGIN
PRINT PUNCH(3),££L??'
B := SIN(A)'
C := COS(A)'
PRINT PUNCH(3),SAMELINE,ALIGNED(1,6),A,B,C'
END'
END'
پانچ3 یک خروجی را به پرینتر تلفنی سریعتر از نوار پانچ می فرستد.
الاین(6و1) فرمت خروجی را با 1 بیت قبل و 6 بیت بعد ممیز اعشاری کنترل میکند.
منابع [ویرایش]
The ALGOL Programming language
|
|||||||||||