برای تأییدپذیری کامل این مقاله به منابع بیشتری نیاز است. |
پارادایم برنامهنویسی | پارادایم برنامهنویسی: برنامهنویسی دستوری، برنامهنویسی تابعی، برنامهنویسی شیءگرا |
---|---|
طراحی شده توسط | خاویر لیروی، Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascánder Suárez |
توسعهدهنده | INRIA |
ظهوریافته در | ۱۹۹۶ |
انتشار پایدار | ۴٫۰۵٫۰
/ ۴ اکتبر ۲۰۱۸[۱] |
static، وابستگی زیاد و کم به نوع، inferred | |
زبان پیادهسازی | OCaml, سی (زبان برنامهنویسی) |
بنسازه رایانش | آیای-۳۲، X86-64، معماری پاور، اسپارک، معماری آرم |
سیستمعامل | چندسکویی: یونیکس، مکاواس، مایکروسافت ویندوز |
پروانه | گنو الجیپیال |
.ml, .mli | |
وبگاه | |
گویش | |
اف شارپ، JoCaml, MetaOCaml, OcamlP3l, Reason | |
متأثر از | |
Caml Light, کول (زبان برنامهنویسی),[نیازمند منبع] استاندارد امال | |
تأثیر گذاشته بر | |
ATS, Elm، اف شارپ، F*، Haxe، اوپا، راست (زبان برنامهنویسی)، اسکالا | |
اُکمل (به انگلیسی: OCaml) در اصل شناخته شده به عنوان «کمل شئ گرا»، پیادهسازی عمدهٔ زبان برنامهنویسی کمل ۱۹۹۶ ساخته توسط ژاویر لیروی و سایرین ساخته شد. اُکمل زبان کمل را را به ساختارهای شئ گرا گسترش میدهد.
ابزارهای اکمل شامل یک مفسر سطح بالا، یک کامپایلر بایتکد، یک مدیر بسته/پکیج منیجر (OPAM)، و یک کامپایلر آپتیمایز کننده به زبان ماشین است. این زبان کتابخانهٔ استاندارد بزرگی دارد که آن را در بسیاری از کاربردهایی که پایتون و پرل استفاده میشوند کاربردی میکند، همینطور ساختارهای قویا مدولار شئ گرای این زبان آن را برای مهندسی نرمافزار در سطح بزرگ کارآمد میکند. اکمل یک جانشین برای کمل لایت است. سرواژهٔ CAML مخفف Categorical Abstract Machine Language(زبان ردهای ماشین انتزاعی) است، اگر چه CAML از این ماشین انتزاعی دل کنده.
اکمل یک زبان پروژهٔ آزاد و متن باز است و توسط INRIA نگهداری میشود. در سالهای اخیر، زبانهای زیادی به عناصر اکمل جذب شدهاند، خصوصاً اف شارپ و اسکالا.
زبانهای مشتق شده از امال به طور خاص نسبت به سیستم تایپ و همچنین کامپایلرهایی که قادر به استنتاج نوع داده هستند شناخته میشوند. اکمل برنامهنویسی تابعی، امری، و شئ گرا را تحت یک سیستم نوع دادهٔ به هم آمیخته. امال-مانند دربر گرفته. این یعنی لازم نیست که برنامهنویس کاملاً با برنامهنویسی تابعی خالص آشنا باشد تا بتواند از زبان استفاده کند.
سیستم نوع دادهٔ اکمل میتواند در کاهش مشکلات برنامه در حین اجرا کمک کند. اگرچه، این خود برنامهنویس را مجبور میکند که خود را با شرایط سیستم نوع وفق دهد، که ممکن است نیاز به فکر و توجه دقیق داشته باشد. یک کامپایلر استنتاج کنندهٔ نوع میتواند به شدت نیاز به نشانه گذاریهای دستی را کاهش دهد (برای مثال، نوع دادهٔ متغیرها و اثر توابع نیاز نیست آنطور که در جاوا مشخص میشود، صریحاً مشخص شود). به هر حال، استفادهٔ مؤثر از سیستم نوع دادهٔ اکمل ممکن است نیاز به تجربهٔ بیشتری برای برنامهنویس دارد.