سیالیو
پارادایم برنامهنویسی | پارادایم برنامهنویسی: برنامهنویسی شیءگرا، برنامهنویسی رویهای |
---|---|
طراحی شده توسط | باربارا لیسکف و شاگردانش |
توسعهدهنده | مؤسسه فناوری ماساچوست |
ظهوریافته در | ۱۹۷۵ |
انتشار پایدار | |
وابستگی زیاد و کم به نوع | |
وبگاه | |
پیادهسازیهای بزرگ | |
Native CLU, | |
متأثر از | |
الگول ۶۰، لیسپ، سیمولا | |
تأثیر گذاشته بر | |
ایدا (زبان برنامهنویسی)، Argus، سی پلاسپلاس، لوآ (زبان برنامهنویسی)، روبی (زبان برنامهنویسی)، Sather، سوئیفت (زبان برنامهنویسی) |
CLU یک زبان برنامهنویسی نوشته شده توسط باربارا لیسکف و دانشجویانش در دانشگاه MIT در سالهای ۱۹۷۴ و ۱۹۷۵ است. ویژگی مهم این زبان استفاده از سازندهها شامل کدهای قابل اجرا بر اشیا انتزاعی است که قدم مهمی در جهت پیشرفت برنامهنویسی شیگرا بود. با این وجود بیشتر ویژگیهای شیگرا مانند وراثت در این زبان وجود ندارد و بعضی وقتها این زبان را با دستورها خستهکننده آن میشناسند. زبانهای CLU و آلفارد به مفاهیم شیگرا بسیار نزدیک میگردند اما یک زبان شیگرا نیستند.
خوشهها
[ویرایش]دستورها CLU بر اساس الگول است و این دستورها پایه بسیاری از زبانهای جدید است. مفهوم کلیدی اضافه شده به این زبان مفهوم خوشه است که به عنوان سیستم گسترش نوع و پایه نام زبان است. خوشهها در این زبان همان مفهوم شی در زبانهای شیگراست. برای مثال در اینجا دستورها CLU برای ساخت نوع پیچیدهتری از اعداد ارائه شدهاست:
complex_number = cluster is add, subtract, multiply, ....
rep = record [real_part: real, imag_part: real]
add = proc ... end add;
subtract = proc ... end subtract;
multiply = proc ... end multiply;
...
end complex_number;
با وجود این که خوشهها شیوه نسبتاً پیشرفتهای برای ایجاد ساختار برنامهها بود اما هیچگونه ساختار برای خوشهها وجود نداشت. نام خوشهها جهانی است و هیچگونه مکانیسم فضای نام برای گروهبندی خوشهها وجود ندارد و نمیتوان آنها را در داخل یکدیگر به صورت محلی تعریف نمود. تنها ClَU دارای این ویژگی نیست بیشتر زبانها بهطور تعجب آوری فاقد این خاصیت هستند. اما با توجه به مرکزیت حوزه متغیرها در الگول انتظار میرود که گسترش بعدی در جهت تعیین حوزه برای اشیا/خوشهها باشد.
در CLU تبدیل نوع ضمنی وجود ندارد. در خوشهها تبدیل نوع صریح با استفاده از «up» و «down» بین نوع داده انتزاعی و نمایش آن انجام میشود. یک نوع داده جهانی به نام «any» و یک روال «[]force» برای کنترل نوع وجود دارد. اشیا ممکن است تغییرپذیر یا غیرتغییرپذیر باشد به عنوان مثال انواع داده پایه غیرتغییرپذیر هستند.
ویژگیهای دیگر
[ویرایش]ویژگی مهم دیگر CLU در انواع داده «iterator» است که اشیا موجود در یک مجموعه را به ترتیب بازمیگرداند؛ بنابراین «iterator» برای یک مجموعه از اعداد پیچیده همانند عملکرد آن برای یک آرایه از اعداد صحیح میباشد. تکرارکنندهها یک ویژگی معمول در زبانهای امروزی است.
CLU یک راه حل برای پردازش استثنا با توجه به تلاشها در زبانهای دیگر فراهم میسازد. استثنا توسط «signal» به وجود آمده و توسط «except» پردازش میگردد. با توجه به تأکید این زبان بر روی طراحی انواع داده عجیب است که در این زبان هیچ راهی برای ایجاد انواع داده شمارا وجود ندارد.
یک ویژگی متفاوت در این زبان انتساب چندگانه است که چندین متغیر را میتوان در سمت چپ یک دستور انتساب قرار داد. به عنوان مثال دستور «x,y=y,x» مقادیر y و x را با یکدیگر جایگزین مینماید. بهطور مشابه توابع میتوانند چند مقدار بازگردانند(x,y،z=f(t)).
تمام اشیا در CLU در heap هستند و مدیریت حافظه خودکار است.
تأثیر بر زبانهای برنامهنویسی دیگر
[ویرایش]پایتون و روبی مفاهیم زیادی را از CLU گرفتند. (مانند دستور «yield» و انتساب چندگانه) CLU و آدا مهمترین منبع مفهوم قالب تابع در سی++ هستند. تمام اشیا در یک برنامه CLU در heap هستند و مدیریت حافظه خودکار است که مستقیماً بر جاوا اثر گذاشت. پایتون و سیشارپ شامل تولیدکنندگان است (تکرارکننده در سیشارپ) که ابتدا در تکرارکنندههای CLU ظاهر شد.
پیوند به بیرون
[ویرایش]منابع
[ویرایش]ویکیپدیای انگلیسی en:CLU programming language