الگول۶۸

**الگول۶۸** یک زبان برنامه‌نویسی دستوری کامپیوتر است که به عنوان جانشین زبان الگول ۶۰ که با هدف بزرگتر کردن محدوده و دقت بیشتر در معنی و نحو برنامه‌ها تصور می‌شد. الگول ۶۸ برگرفته از واژه‌های انگلیسی ALGOrithmic Language 1968 به معنای «زبان الگوریتمی» است.

سهم زبان الگول در علوم کامپیوتر بسیار گسترده‌است اگرچه برخی از مفاهیم آن تا وقتی که به صورت عمومی به شکل دیگری در خیلی از زبان‌های توسعه یافتهٔ بعد از الگول استفاده شد شناخته نشدند

## مرور
بخش‌های الگول ۶۸ شامل نحو عبارت محور، تایپ دهی و ساختارهای اعلام شده توسط کاربر، ساختارها و یونیون‌های برچسب دار، مدل مرجع متغیرها و پارامترها، رشته، آرایه، ماتریس برش و حتی همزمانی.

زبان الگول به‌طور رسمی توسط گروه کاری 2.1 IFIP] در بیستم دسامبر سال ۱۹۶۸ ساخته شد و پس از آن برای انتشار در مجمع عمومی IFIP تأیید شد.

زبان الگول بااستفاده از فرم گرامر دو سطحی تعریف شده که توسط آدرین ون ویجن گاردن] اختراع شد
گرامر ون ویجن گاردن از یک گرامر مستقل از متن برای تولید مجموعهٔ نامتناهی از محصولات که یک برنامهٔ خاص الگول ۶۸ را می‌شناسد استفاده می‌کند
آن‌ها توانایی بیان انواع نیازها که در استاندارد بسیاری از زبان‌های برنامه‌نویسی به عنوان معنا برچسب‌گذاری شده‌اند و باید در متن زبان طبیعی مستعد ابهام بیان شوند.

اهداف اصلی و منظم طراحی الگول ۶۸:
# کامل و واضح بودن نسخه
# طراحی متعامد
# امنیت
# بازده
# چک کردن حالت ایستا
# تجزیهٔ مستقل از حالت
# ترکیب مستقل
# بهینه‌سازی حلقه‌ها
# نمایش با مجموعه‌هایی با کاراکترهای کمتر و بزرگتر

زبان الگول ۶۸ پیشتر توسط اعضای گروه طراحی آن مثل دیسترا ادسخر دیسترا و هور تونی هور برای از بین بردن سادگی زبان الگول ۶۰ و تبدیل شدن به وسیله‌ای برای ایده‌های پیچیده یا بیش از حد عمومی و انجام نشدن هیچ تلاشی برای ساده کردن کار کامپایلر‌نویس (دقیقاً برخلاف کارهایی که رقیبان زبان الگول یعنی سی و پاسکال انجام داده‌اند) مورد انتقاد واقع شده‌است.

در سال ۱۹۷۰ نخستین کامپایلر برای زبان الگول ساخته شد. این کامپایلر ALGOL 68R نام داشت.

## عناصر مهم زبان
**کلمات رزرو شدهٔ الگول:**
در این زبان ۶۱ دستور و کلمهٔ رزرو شده وجود دارد:
 

 **mode**, **op**, **prio**, **proc**,
 **flex**, **heap**, **loc**, **long**, **ref**, **short**,
 **bits**, **bool**, **bytes**, **char**, **compl**, **int**, **real**, **sema**, **string**, **void**,
 **channel**, **file**, **format**, **struct**, **union**,
 **of** "→", **at** "@", **is** ":=:", **isnt** ":/=:", **true**, **false**, **empty**, **nil** "○", **skip** "~",
 **co** "¢", **comment** "¢", **pr**, **pragmat**,
 **case** ~ **in** ~ **ouse** ~ **in** ~ **out** ~ **esac** "(~ | ~ |: ~ | ~ | ~)",
 **for** ~ **from** ~ **to** ~ **by** ~ **while** ~ **do** ~ **od**,
 **if** ~ **then** ~ **elif** ~ **then** ~ **else** ~ **fi** "(~ | ~ |: ~ | ~ | ~)",
 **par** **begin** ~ **end** "(~)", **go** **to**, **goto**, **exit** "□".

**واحدها: عبارات**
ساده‌ترین قسمت سازندهٔ زبان واحد ها (به انگلیسی: unit)هستند. واحدها می‌توانند یک رابطه، یک عبارت بسته، یک روتین یا یکی از دستورهای ساختاری زبان (مثل تخصیص مقدار یا پرش شرطی) باشد. قسمت فنی و اساسی یک عبارت بسته برخی از ساختارها مثل بلوک، ساختار do و ساختار switch را که در زبان‌های معاصر بودند را یکپارچه می‌کند. وقتی یک کلمهٔ کلیدی استفاده می‌شود معمولاً کاراکتر معکوس رشته برای معرفی کلمهٔ ورودی و خاتمه دادن به عبارت بسته استفاده می‌شود (مانند 'if' ~ then ~ else ~ 'fi', 'case' ~ in ~ out ~ 'esac', for ~ while ~ 'do' ~ 'od'). این ویژگی توسط استفان بورن برای پوستهٔ بورن یونیکس دوباره استفاده شد.

**حالت‌ها:اعلام**
تایپ دادهٔ ابتدایی (در الگول ۶۸ mode نامیده می‌شود) حقیقی، صحیح، مختلط، بول، کاراکتر، بیت و بایت هستند. برای مثال:

 **int** n = 2;
 **co** n is a fixed as a constant of 2. **co**
 **int** m := 3;
 **co** m is a newly created local *variable* whose value is initially set to 3. **co**
 **co** This is short for ref int m = loc int := 3 **co**;
 **real** avogadro = 6.0221415⏨23; **co** Avogadro's number **co**
 **long long real** long long pi = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510;
 **compl** square root of minus one = 0 ⊥ 1;

## جستارهای وابسته
* الگول ۶۸ سی

## منابع
* ویکی‌پدیای انگلیسی

## پیوند به بیرون
* http://algol68.sourceforge.net/


رده:خانواده زبان برنامه‌نویسی الگول
رده:زبان‌های برنامه‌نویسی آکادمیک
رده:زبان‌های برنامه‌نویسی رویه‌ای
رده:زبان‌های برنامه‌نویسی ساخته‌شده در ۱۹۶۸ (میلادی)
رده:زبان‌های برنامه‌نویسی سیستمی
رده:معرفی‌شده‌های مرتبط با رایانه در ۱۹۶۸ (میلادی)
رده:مقاله‌های ایجادشده توسط ایجادگر
رده:نرم‌افزارهای ۱۹۶۸ (میلادی)