For faster navigation, this Iframe is preloading the Wikiwand page for سی‌ال‌یو.

سی‌ال‌یو

سی‌ال‌یو
پارادایم برنامه‌نویسیپارادایم برنامه‌نویسی: برنامه‌نویسی شیءگرا، برنامه‌نویسی رویه‌ای
طراحی شده توسطباربارا لیسکف و شاگردانش
توسعه‌دهندهمؤسسه فناوری ماساچوست
ظهوریافته در۱۹۷۵؛ ۴۹ سال پیش (۱۹۷۵-خطا: زمان نامعتبر)))
انتشار پایدار
Native CLU 1.5 (اسپارک، وکس مجموعه دستور) / ۲۶ مه ۱۹۸۹؛ ۳۵ سال پیش (۱۹۸۹-26)))

Portable CLU / ۶ نوامبر ۲۰۰۹؛ ۱۴ سال پیش (۲۰۰۹-06)))

وابستگی زیاد و کم به نوع
وبگاه
پیاده‌سازی‌های بزرگ
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 ظاهر شد.

پیوند به بیرون

[ویرایش]

صفحه خانگی CLU

منابع

[ویرایش]

ویکی‌پدیای انگلیسی en:CLU programming language

{{bottomLinkPreText}} {{bottomLinkText}}
سی‌ال‌یو
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?