COMAL کیست؟ توضیح بده.
کومال (زبان الگوریتمی رایج، به انگلیسی: COMAL) یک زبان برنامه‌نویسی کامپیوتر است که در دانمارک توسط بورگه آر. کریستنسن و بندیکت لوفستد توسعه داده شد و در سال ۱۹۷۵ منتشر گردید. این زبان بر اساس زبان برنامه‌نویسی بیسیک طراحی شده بود و با اضافه کردن عبارات چندخطی و زیرروال‌های به خوبی تعریف‌شده، و دیگر افزوده‌ها، بهبود یافت.کومال در اصل برای مینی‌کامپیوترها نوشته شده بود، اما به اندازه کافی کوچک بود که بر روی میکروکامپیوترهای اولیه نیز اجرا شود. این یکی از معدود زبان‌های برنامه‌نویسی ساخت‌یافته است که برای کامپیوترهای خانگی ۸ بیتی قابل دسترسی و استفاده راحت بود."نحوه نگارش و مفهوم هسته کومال" شامل تعریف رسمی این زبان است. افزونه‌های بیشتر در بسیاری از پیاده‌سازی‌ها معمول هستند.تاریخچه.نسخه‌های مینی‌کامپیوتر.کومال در ابتدا توسط معلم ریاضیات بورگه آر. کریستنسن در دانمارک توسعه یافت. مدرسه‌ای که او در آن تدریس می‌کرد، در سال ۱۹۷۲ یک مینی‌کامپیوتر 1200 دریافت کرده بود، به این منظور که مدرسه آموزش علوم کامپیوتر را آغاز کند. از کریستنسن که دوره کوتاهی از این مبحث را در دانشگاه گذرانده بود، انتظار می‌رفت که برنامه را رهبری کرده و سیستم کامپیوتری را نگهداری کند.NOVA با عرضه شده بود و کریستنسن از نحوه نوشتن کدهای بی‌کیفیت و غیرقابل خوانش توسط دانش‌آموزان به دلیل زبان غیر ساخت‌یافته ناراضی بود و در نتیجه نمره‌دهی به این کدها دشوار می‌شد. به دنبال شکایت از این مشکلات به دانشمند علوم کامپیوتر، بندیکت لوفستد، او کریستنسن را تشویق کرد تا کتاب ""، کتاب جدید آن زمان در زمینه طراحی زبان‌های برنامه‌نویسی، نوشته نیکلاوس ورت، خالق پاسکال را بخواند. کریستنسن تحت تأثیر قرار گرفت، اما متوجه شد که نمی‌تواند به‌طور مستقیم از پاسکال استفاده کند، زیرا پاسکال فاقد پوسته تعاملی بود که بیسیک را برای دانش‌آموزان در توسعه کد آسان می‌کرد.طی شش ماه بعدی، کریستنسن و لوفستد از طریق نامه‌نگاری به طراحی یک زبان جایگزین برای بیسیک پرداختند که عناصر تعاملی آن را حفظ کرده و عناصر ساختاریافته از پاسکال را اضافه کند. تا سال ۱۹۷۴، تعریف زبان کامل شد اما کریستنسن موفق نشد علاقه‌مندی شرکت‌های نرم‌افزاری را برای توسعه پیاده‌سازی آن جذب کند. در شش ماه بعدی، او با دو نفر از دانش‌آموزان خود که به آنها زبان ماشین NOVA 1200 را آموزش داده بود، کار کرد تا خودشان یک پیاده‌سازی را بنویسند. یکی از اولین ویژگی‌های اضافه شده، امکان استفاده از نام‌های متغیر هشت‌حرفی بود که از یک یا دو حرف معمول بیشتر بود. افزوده‌های بعدی در نسخه اول شامل عبارات چندخطی و تعاریف و دستور برای فراخوانی آنها بود.اولین پیاده‌سازی اثبات مفهوم (اجرای یک حلقه پنج‌خطی) در ۵ اوت ۱۹۷۴ آماده شد و اولین نسخه (روی ) در فوریه ۱۹۷۵ تهیه شد. هزینه‌های توسعه حدود ۳۰۰ دلار آمریکا بود. تنها در این زمان بود که سیستم (که قبلاً از یک نام داخلی دانمارکی استفاده می‌کرد) نام "کومال"، به معنی "زبان الگوریتمی رایج"، را به الهام از ALGOL گرفت، که کریستنسن با آن آزمایش انجام می‌داد. بدین ترتیب، اولین نسخه "کومال ۷۵" نامیده شد. کریستنسن سپس یک کتاب آموزشی در مورد این زبان نوشت که به "آغاز کومال" نام‌گذاری شد.نسخه‌های میکروکامپیوتر.در سال ۱۹۷۸، کریستنسن شروع به تطبیق کومال کرد تا بتواند روی میکروکامپیوترهایی که در دسترس قرار گرفته بودند اجرا شود. او نگران بود که بدون چنین پیاده‌سازی‌ای، مجبور شود دوباره به تدریس و استفاده از بیسیک روی آورد، چرا که مدارس دانمارک ماشین‌های جدید را تهیه می‌کردند. تا سال ۱۹۸۰، نسخه‌ای از کومال که با همکاری یک گروه دانشکده توسعه یافته بود، قادر به اجرا روی Zilog Z80 شد و به این ترتیب، کومال ۸۰ منتشر گردید.در همان زمان، یک شرکت دانمارکی کامپیوتر Comet را معرفی کرد، که در آن زمان یک میکروکامپیوتر بسیار توانمند بود و نیز اولین دستگاهی بود که نسخه‌ای از کومال را اجرا می‌کرد که شبیه به نسخه‌های بعدی آن بود. کریستنسن سپس در حدود سال‌های ۱۹۸۰-۸۱ از توسعه کومال کناره‌گیری کرد و توسعه به گروه‌هایی از جمله UniComal، که توسط موگنس کایر تأسیس شده بود، واگذار گردید. موگنس کایر به کریستنسن نامه‌ای حاوی نقدهایی از کومال نوشته بود و سپس آن را برای نسخه 0.14 به کامودور PET منتقل کرد. در این زمان، مدارس دانمارک اصرار داشتند که کومال روی هر میکروکامپیوتری که خریداری می‌کردند، در دسترس باشد.در اوایل دهه ۱۹۸۰، شرکت اپل قراردادی را برای تأمین کامپیوترهای Apple II که با CP/M و COMAL اجرا می‌شدند به مدارس متوسطه ایرلند برد. این سیستم برای آموزش محبوب بود و برخی کتاب‌های درسی به صورت محلی نوشته شدند.در سال ۱۹۸۴، شرکت یک پیاده‌سازی از COMAL را توسط دیوید کریستنسن، جیم واریک و دیوید اورس برای کامپیوترهای ۸ بیتی و منتشر کرد (همراه با کتابچه‌ی راهنما نوشته پل کریستنسن و روی تورنتون).بین سال‌های ۱۹۸۴ و ۱۹۸۷، شرکت TeleNova، یکی از زیرمجموعه‌های بخش صنعتی سیستم مخابرات سوئد، یک کامپیوتر رومیزی به نام "" را برای بخش آموزشی تولید کرد. نسخه ارتقاءیافته‌ای از COMAL به عنوان زبان برنامه‌نویسی استاندارد برای این کامپیوتر ارائه شد. این نسخه‌ها برای هر دو سیستم و MS-DOS ایجاد شد. همچنین نسخه دوم برای Windows XP در دسترس است. راهنمای مرجع (سوئدی) آن دارای است.در سال ۱۹۹۰، توماس لاندی و روری او سالیوان متن نهایی در مورد برنامه‌نویسی COMAL را تهیه کردند. آنها COMAL را با BBC Structured Basic تطبیق داده و مقایسه کردند.تا سال ۲۰۱۶، COMAL هنوز به عنوان یک زبان برنامه‌نویسی آموزشی به طور فعال استفاده می‌شود. برخی دبیرستان‌های بریتانیا همچنان از آن برای آموزش موضوع رایانش استفاده می‌کنند.توضیحات.COMAL به عنوان ترکیبی از زبان‌های برنامه‌نویسی آموزشی رایج در آن زمان همانند بیسیک، پاسکال و حداقل در نسخه‌های کامودور و و لوگو ایجاد شد. این زبان برای معرفی عناصر برنامه‌نویسی ساخت‌یافته در محیطی که معمولاً از بیسیک استفاده می‌شد، طراحی شده بود.در نسخه‌های اولیه، افزوده‌های اصلی به زبان شامل نسخه‌های بلوکی IF...THEN و ساختار PROC بودند. در بیشتر نسخه‌های قبلی بیسیک، تنها ساختار بلوکی، حلقه FOR...NEXT بود. برای مثال: 10 FOR I=1 TO 10 20 PRINT I 30 J=J+1 40 NEXT Iاین مثال یک حلقه را ده بار اجرا می‌کند و هر بار دو دستور را در طول حلقه انجام می‌دهد. در مقابل، تقریباً هر دستور دیگر در بیسیک یا "عبارت"، باید در یک خط انجام شود. این موضوع می‌تواند انجام عبارات چندخطی را بر پایه‌ی همه یا هیچ دشوار کند. برای مثال، اگر برنامه بخواهد سه دستور را اجرا کند به شرط این که یک مقدار خاص بیشتر از 10 باشد، راه‌حل معمول به صورت زیر می‌باشد: 10 IF A&lt;=10 THEN 50 20 PRINT "A IS GREATER THAN 10" 30 A=A+10 40 PRINT "A IS NOW ";A 50 PRINT "RETURNING TO OUR REGULARLY SCHEDULED PROGRAMMING"این نوع ساختار هدف واقعی برنامه را پنهان می‌کند، تصمیم‌گیری بر اساس منطق مخالف آن چیزی است که برنامه‌نویس می‌خواهد انجام دهد. علاوه بر این، برای درک این که در این حالت چه اتفاقی می‌افتد، خواننده باید خط 50 را پیدا کند که در برنامه‌های واقعی ممکن است در کد منبع بسیار دورتر باشد. این یکی از دلایل اصلی است که برنامه‌های بیسیک به عنوان "کد اسپاگتی" شناخته می‌شوند، زیرا برای دنبال کردن منطق باید در برنامه جابجا شد، مانند دنبال کردن مجموعه‌ای از رشته‌های تصادفی اسپاگتی.کومال این مشکل را از طریق استفاده از بلوک‌ها برطرف می‌کند. برای انجام این سری از دستورها، در کومال می‌نویسیم: 10 IF A&gt;10 THEN 20 PRINT "A IS GREATER THAN 10" 30 A=A+10 40 PRINT "A IS NOW ";A 50 ENDIF 60 PRINT "RETURNING TO OUR REGULARLY SCHEDULED PROGRAMMING"در این مورد، نویسنده تصمیمی را که در واقع سعی در انجام آن دارد می‌نویسد و خواننده می‌تواند منطق را به سادگی با جستجو برای دنبال کند. این کار با استفاده از فاصله‌های پیشرو COMAL برای نشان دادن بصری بلوک‌ها تسهیل می‌شود.مثال.PRINT "HELLO, WORLD!"IF condition THEN instructionsENDIFFOR number:= 1 TO 1000 DO PRINT numberENDFORINPUT "What's your favourite number? " :nmr#PAGEPRINT "Your favourite number is " ; nmr#دسترسی.COMAL برای موارد زیر در دسترس بود: