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

ویژگی‌های زبان

Oz شامل بسیاری از مفاهیم اصلی برنامه‌نویسی پارادایمی از جمله منطق کاربردی (دو نوع ارزیابی تنبل و ارزیابی مشتاق), ضروری، شی گرا، محدودیت توزیع شده و برنامه‌نویسی همزمان می‌باشد. Ozهر دو نوع معناشناسی ساده و رسمی را پشتیبانی می‌کند (نگاه کنید به فصل ۱۳ از کتاب ذکر شده در زیر) و یک برنامه کارآمد برای پیاده‌سازی است. Oz به عنوان یک زبان همزمانی گرا توسط Joe Armstrong معرفی شد که وی طراح اصلی زبان Erlang است. یک زبان همزمانی گرا باعث می‌شود همزمانی بسیار آسان و کارآمد برای استفاده گردد. Oz پشتیبانی می‌کند از استاندارد رابط کاربر گرافیکی (GUI) و زبان QTk.
علاوه بر چند-پارادایم بودن برنامه‌نویسی نقطه اصلی قوت Oz در محدودیت‌های برنامه‌نویسی و برنامه‌نویسی توزیع شده است. با توجه به این عامل Oz است قادراست با موفقیت پیاده‌سازی کند شبکه‌های شفاف توزیع برنامه‌نویسی را، این مدل باعث می‌شود که به آسانی بتوان برنامه باز fault-tolerant برنامه‌های کاربردی در زبان استفاده نمود. برای محدودیت برنامه‌نویسی Oz معرفی ایده محاسبات فضایکه اجازه می‌دهد تا کاربر تعریف کند جستجو و توزیع استراتژی‌های متعامد با توجه به محدودیت دامنه.

توابع

توابع در درجه اول، ارزش، اجازه می‌دهد رده‌های بالاتر کاربردی در برنامه‌نویسی را: توابع را می‌توان مورد استفاده قرار داد با هر دو نوع متغیر رایگان و محدود. متغیر رایگان ارزش پیدا کرده‌است با استفاده از استاتیک واژگانی حوزه.
fun {Fact N}
   if N =<0 then 1 else N*{Fact N-1} endend

رده‌های بالاتر برنامه‌نویسی

توابع مانند دیگر ا اشیاء Oz هستند. یک تابع منتقل می‌شود به عنوان یک ویژگی به توابع دیگر یا به‌طور بازگشتی در توابع استفاده شوند.

توابع ناشناس

مانند بسیاری دیگر از کاربردها زبان Oz پشتیبانی می‌کند از استفاده از توابع بی نام (به عنوان مثال توابع که لازم ندارند نام) با رده‌های بالاتر برنامه‌نویسی. نماد $ استفاده شده‌است به این معنی.
در زیر تابع درجه ۲ تعریف شده‌است به صورت ناشناس می‌باشد و گذشت باعث [1 4 9] به مرور می‌شود. از توابع ناشناس نمی‌توان استفاده کرد که دارای یک نام است برای تعریف بازگشتی توابع ناشناس.

روش‌ها

توابع در Oz قرار است بازگشت نمایند یک مقدار را در آخرین دستور که با مواجه می‌شوند که این مقدار در بدن این تابع در طول اجرای آن ایجاد شده‌است. در مثال زیر تابع Ret بازده ۵ اگر X> 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.