Oz (زبان برنامه‌نویسی)

Oz یک زبان برنامه‌نویسی مالتی پارادایم توسعه یافته در سیستم آزمایشگاه برنامه‌نویسی در دانشگاه کاتولیک لوون جهت استفاده در آموزش و پرورش است. آن را با یک کتاب استاندارد درسی به نام: مفاهیم و تکنیک‌های و مدل‌های برنامه‌نویسی کامپیوتر توصیف می‌کنند. Oz برای اولین بار طراحی شده توسط گرت اسمولکا و دانش آموزانش را در سال ۱۹۹۱. در سال ۱۹۹۶ توسعه Oz با همکاری گروه تحقیقاتی Seif Haridi و پیتر ون روی در موسسه سوئدی علوم کامپیوتر ادامه یافت. از سال 1999 Oz به طور مداوم توسعه یافته توسط یک گروه بین‌المللی از کنسرسیوم موتزارت که در اصل شامل دانشگاه Saarland و موسسه علوم کامپیوتر سوئد و دانشگاه Université catholique de Louvain. در سال ۲۰۰۵ مسئولیت مدیریت موتزارت توسعه دهنده به یک هسته گروه موتزارت منتقل شد. هیئت مدیره با بیان هدف خود که گسترش موتزارت توسعه دهنده به یک جامعه بزرگتر بود شروع کرد.
سیستم برنامه‌نویسی موتزارت سهم اصلی را در پیاده‌سازی oz داشت. oz منتشر شده است با یک منبع باز که مجوز آن توسط کنسرسیوم موتزارت صادر گردیده است. موتزارت به سیستم‌های مختلفی از جمله یونیکس، FreeBSD و لینوکس و ویندوز و OS X گسترش یافته است.
ویژگی‌های زبان
Oz شامل بسیاری از مفاهیم اصلی برنامه‌نویسی پارادایمی از جمله منطق کاربردی (دو نوع ارزیابی تنبل و ارزیابی مشتاق), ضروری، شی گرا، محدودیت توزیع شده و برنامه‌نویسی همزمان می‌باشد. Ozهر دو نوع معناشناسی ساده و رسمی را پشتیبانی می‌کند (نگاه کنید به فصل ۱۳ از کتاب ذکر شده در زیر) و یک برنامه کارآمد برای پیاده‌سازی است. Oz به عنوان یک زبان همزمانی گرا توسط Joe Armstrong معرفی شد که وی طراح اصلی زبان Erlang است. یک زبان همزمانی گرا باعث می‌شود همزمانی بسیار آسان و کارآمد برای استفاده گردد. Oz پشتیبانی می‌کند از استاندارد رابط کاربر گرافیکی (GUI) و زبان QTk.
علاوه بر چند-پارادایم بودن برنامه‌نویسی نقطه اصلی قوت Oz در محدودیت‌های برنامه‌نویسی و برنامه‌نویسی توزیع شده است. با توجه به این عامل Oz است قادراست با موفقیت پیاده‌سازی کند شبکه‌های شفاف توزیع برنامه‌نویسی را، این مدل باعث می‌شود که به آسانی بتوان برنامه باز fault-tolerant برنامه‌های کاربردی در زبان استفاده نمود. برای محدودیت برنامه‌نویسی Oz معرفی ایده محاسبات فضایکه اجازه می‌دهد تا کاربر تعریف کند جستجو و توزیع استراتژی‌های متعامد با توجه به محدودیت دامنه.
زبان اجمالی
ساختارهای داده
Oz زبانی هست که با تعداد بسیار کمی از انواع داده می‌باشد که می‌توان آن‌ها را توسعه داد به انواع عملی‌تر از طریق نحوی شکر.
اطلاعات اولیه سازه:
اعداد: شناور نقطه یا عدد صحیح (integer)
رکوردها: برای گروه بندی داده‌ها : circle(x:0 y:1 شعاع:3 رنگ:آبی سبک:dots) . در اینجا از نظر x,y، شعاع، و غیره. نامیده می‌شود ویژگی‌ها و اطلاعات مرتبط با ویژگی‌های (در این مورد ۰،۱،۳ و غیره) ارزش.
چندتایی: سوابق با عدد صحیح امکانات در صعودی با نظم: دایره(1:0 2:1 3:3 4:آبی 5:نقطه) .
لیست: ساده ساختار خطیاین ساختارهای داده‌ها ارزش (ثابت) در طبقه اول و به صورت پویا بررسی نوع می‌شود. نام متغیر در Oz با حروف بزرگ شروع می‌شود و نامه هابا آنها را متمایز می‌نماید زیرا همیشه با حروف کوچک شروع می‌شوند.
توابع
توابع در درجه اول، ارزش، اجازه می‌دهد رده‌های بالاتر کاربردی در برنامه‌نویسی را: توابع را می‌توان مورد استفاده قرار داد با هر دو نوع متغیر رایگان و محدود. متغیر رایگان ارزش پیدا کرده است با استفاده از استاتیک واژگانی حوزه.
fun {Fact N
if N =
0 و -۵ در غیر این صورت. اما Oz نیز فراهم می‌کند یک مرکز در مورد یک تابع که باید یک مقدار بازگشت نماید. این توابع به نام روش نامیده می‌شوند. روش‌های تعریف شده با استفاده از ساخت «مجموعه مقالات» به شرح زیر است مثال بالا برنمی‌گرداند هیچ مقداری را و هر مقداری را فقط ۵ یا -۵ در مرورگر Oz بسته به علامت X چاپ می‌نماید.
متغیرها Dataflow و تعریف همزمانی
هنگامی که برنامه به یک متغیر بی‌بند و بار برخورد می‌کند که آن منتظر یک مقدار است. برای مثال این موضوع را صبر کنید تا هر دو X و Y هستند و محدود به یک مقدار قبل از نشان دادن ارزش Z. ارزش یک متغیر dataflow را نمی‌توان تغییر داد پس از آن موظف است:متغیرهای Dataflow آسان می‌نماید ایجاد همزمان جریان عوامل را: از آنجا که از راه متغیر dataflow این کار ممکن است برای قرار دادن نخ‌ها در هر نقطه در یک برنامه تضمین شده است که نتیجه همان است. این باعث می‌شود برنامه‌نویسی همزمان بسیار آسان گردد. نخ‌ها بسیار ارزان هستند: ممکن است به ۱۰۰،۰۰۰ نخ در حال اجرا در یک زمان باشند.
مثال: دادگاه بخش غربال
این مثال محاسبه جریان نخست اعداد با استفاده از الگوریتم دادگاه بخش به صورت بازگشتی که ایجاد می‌کند همزمانی جریان عوامل را که فیلتر کردن غیر از اعداد اول می‌باشد:
تنبلی
Oz با استفاده از ارزیابی مشتاق به طور پیش فرض فعالیت می‌کند اما ارزیابیی تنبل نیز امکان‌پذیر است. در زیر این واقعیت است که تنها محاسبه زمانی که مقدار X مورد نیاز است برای محاسبه ارزش Y. ارزیابی تنبل امکان ذخیره‌سازی واقعا بی‌نهایت ساختارهای داده‌ای در Oz را می‌دهد. قدرت ارزیابی تنبل را می‌توان از کد زیر نمونه مشاهده نمود:کد بالا ظرافت محاسبه تمام اعداد به طور منظم در لیست بی‌نهایت را نشان می‌دهد. تعداد واقعی محاسبه شده تنها زمانی که آنها مورد نیاز است.
انتقال پیام همزمانی
اعلانی همزمان مدل را می‌توان با انتقال پیام از طریق معانی ساده مشاهده کرد:با یک پورت و یک موضوع آسنکرون عوامل می‌تواند تعریف شود:
حالت و اشیاء
باز هم ممکن است به گسترش تعریف مدل برای حمایت از حالت و برنامه‌نویسی شی گرا با معانی بسیار ساده. برای ایجاد یک ساختار داده جدید تغییرپذیر به نام سلول داریم:با این روش ساده معنایی تغییرات کل شی گرا پارادایم می‌تواند پشتیبانی نماید. با کمی نحو OOP می‌شود به خوبی یکپارچه در Oz گردد.
اونس یک multiparadigm زبان برنامه‌نویسی توسعه یافته در برنامه‌نویسی سیستم آزمایشگاه در دانشگاه Université catholique de Louvain برای زبان برنامه‌نویسی آموزش و پرورش است. آن را به یک استاندارد کتاب درسی: مفاهیم و تکنیک‌های و مدل‌های برنامه‌نویسی کامپیوتر.
در علاوه بر این به چند-پارادایم‌های برنامه‌نویسی اصلی قوت اونس در محدودیت‌های برنامه‌نویسی و برنامه‌نویسی توزیع شده است. با توجه به آن عامل طراحی اونس است قادر به موفقیت پیاده‌سازی شبکه-شفاف توزیع برنامه‌نویسی، این مدل باعث می‌شود آن را آسان به برنامه باز fault-tolerant برنامه‌های کاربردی در زبان. برای محدودیت برنامه‌نویسی اونس معرفی ایده محاسبات فضایکه اجازه می‌دهد تا کاربر تعریف شده جستجو و توزیع استراتژی‌های متعامد به محدودیت دامنه.
تنبلی
اونس با استفاده از مشتاق ارزیابی به طور پیش فرض اما تنبل ارزیابی امکان‌پذیر است. در زیر این واقعیت است که تنها محاسبه زمانی که مقدار X مورد نیاز است برای محاسبه ارزش Y.