اکمل

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به ناوبری پرش به جستجو
اُکمل
OCaml Logo.svg
پارادایم پارادایم برنامه‌نویسی: برنامه‌نویسی دستوری، برنامه‌نویسی تابعی، برنامه‌نویسی شیءگرا
طراحی‌شده توسط خاویر لیروی، Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascánder Suárez
توسعه‌دهنده INRIA
ظهوریافته در ۱۹۹۶؛ ۲۲ سال پیش (۱۹۹۶)
۴٫۰۵٫۰ / ۱۳ ژوئیه، ۲۰۱۷؛ ۱۵ ماه پیش (۲۰۱۷-۰۷-13)
static، وابستگی زیاد و کم به نوع، inferred
زبان پیاده‌سازی
OCaml, سی (زبان برنامه‌نویسی)
سکو آی‌ای-۳۲، X86-64، معماری پاور، اسپارک، معماری آرم
سیستم‌عامل چندسکویی: یونیکس، مک‌اواس، مایکروسافت ویندوز
پروانه گنو ال‌جی‌پی‌ال
.ml, .mli
وب‌گاه ocaml.org

Objective Caml در ویکی‌کتاب (انگلیسی)

اُکمل (به انگلیسی: OCaml) در اصل شناخته شده به عنوان «کمل شئ گرا»، پیاده‌سازی عمدهٔ زبان برنامه‌نویسی کمل ۱۹۹۶ ساخته توسط ژاویر لیروی و سایرین ساخته شد. اُکمل زبان کمل را را به ساختارهای شئ گرا گسترش می‌دهد.

ابزارهای اکمل شامل یک مفسر سطح بالا، یک کامپایلر بایت‌کد، یک مدیر بسته/پکیج منیجر (OPAM)، و یک کامپایلر آپتیمایز کننده به زبان ماشین است. این زبان کتابخانهٔ استاندارد بزرگی دارد که آن را در بسیاری از کاربردهایی که پایتون و پرل استفاده می‌شوند کاربردی می‌کند، همین‌طور ساختارهای قویا مدولار شئ گرای این زبان آن را برای مهندسی نرم‌افزار در سطح بزرگ کارآمد می‌کند. اکمل یک جانشین برای کمل لایت است. سرواژهٔ CAML مخفف Categorical Abstract Machine Language(زبان رده‌ای ماشین انتزاعی) است، اگر چه CAML از این ماشین انتزاعی دل کنده.

اکمل یک زبان پروژهٔ آزاد و متن باز است و توسط INRIA نگهداری می‌شود. در سالهای اخیر، زبان‌های زیادی به عناصر اکمل جذب شده‌اند، خصوصاً اف شارپ و اسکالا.

فلسفه[ویرایش]

زبان‌های مشتق شده از ام‌ال به طور خاص نسبت به سیستم تایپ و همچنین کامپایلرهایی که قادر به استنتاج نوع داده هستند شناخته می‌شوند. اکمل برنامه‌نویسی تابعی، امری، و شئ گرا را تحت یک سیستم نوع دادهٔ به هم آمیخته. ام‌ال-مانند دربر گرفته. این یعنی لازم نیست که برنامه‌نویس کاملاً با برنامه‌نویسی تابعی خالص آشنا باشد تا بتواند از زبان استفاده کند.

سیستم نوع دادهٔ اکمل می‌تواند در کاهش مشکلات برنامه در حین اجرا کمک کند. اگرچه، این خود برنامه‌نویس را مجبور می‌کند که خود را با شرایط سیستم نوع وفق دهد، که ممکن است نیاز به فکر و توجه دقیق داشته باشد. یک کامپایلر استنتاج کنندهٔ نوع می‌تواند به شدت نیاز به نشانه گذاری‌های دستی را کاهش دهد (برای مثال، نوع دادهٔ متغیرها و اثر توابع نیاز نیست آنطور که در جاوا مشخص می‌شود، صریحاً مشخص شود). به هر حال، استفادهٔ مؤثر از سیستم نوع دادهٔ اکمل ممکن است نیاز به تجربهٔ بیشتری برای برنامه‌نویس دارد.