زبان برنامهنویسی CLU چیست ؟
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 در انواع داده «iterator» است که اشیا موجود در یک مجموعه را به ترتیب بازمیگرداند. بنابراین «iterator» برای یک مجموعه از اعداد پیچیده همانند عملکرد آن برای یک آرایه از اعداد صحیح میباشد. تکرارکنندهها یک ویژگی معمول در زبانهای امروزی است.
CLU یک راه حل برای پردازش استثنا با توجه به تلاشها در زبانهای دیگر فراهم میسازد. استثنا توسط «signal» بوجود امده و توسط «except» پردازش میگردد. با توجه به تاکید این زبان بر روی طراحی انواع داده عجیب است که در این زبان هیچ راهی برای ایجاد انواع داده شمارا وجود ندارد.
یک ویژگی متفاوت در این زبان انتساب چندگانه است که چندین متغیر را میتوان در سمت چپ یک دستور انتساب قرار داد. به عنوان مثال دستور «x,y=y,x» مقادیر y و x را با یکدیگر جایگزین مینماید. به طور مشابه توابع میتوانند چند مقدار بازگردانند(x,y,z=f(t)).
تمام اشیا در CLU در heap هستند و مدیریت حافظه خودکار است.
تأثیر بر زبانهای برنامهنویسی دیگر