TAHA
10-11-2009, 09:52 AM
مرور کلی
ML یکزبان برنامه نویسی تابعی است که به وسیله یرابین میلنرو دیگران در اواخر دهه ی 1970در دانشگاهادین برگگسترش یافت، قواعد نحوی آن الهامشده از ISWIM است.
یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستمهای بزرگ از طریق تابعها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. Ada و ML همگی سیستمهای تابعی برجستهای را در دهه ۸۰ توسعه دادند.
کلمه ML از فوق زبان (Meta Language) گرفته شده است.از لحاظ تاریخی، ML سمبل یک فوقزبان است.ML برای بهبود بخشیدن به رویه اثبات در قضیه LFC طراحی شده است. این برای کاربرد آن در الگوریتم استنتاج نوع هیندلی- میلنر که به طور خودکار اکثر عبارت ها بدون نیاز به تفسیر نوع صریح شناخته شده است.
زبانی که ML فوق زبان آن بود pplambda است، یک ترکیبی ازحساب نسبی مرتبه اولو حساب lambda چندریختی نوع دار.
ویژگیهای ML شامل استراتژی ارزیابیفراخوانی با مقدار (call – by – value)،نوع دهیاستاتیک،استنباط نوعی،نوع داده ای جبری،تطابق الگوومدیریت استثنا، توابع درجه یک، مدیریت حافظه خودکار در مواجه با مجموعه داده های ناخواسته، چندریختی پارامتریک و انواع پویا، انواع استنتاجمی باشد. این ترکیب ویژه ازمفاهیم امکان تولید یکی از بهترین کامپایلرهای موجود را می دهد.
ML از چند ریختی وانتزاع پشتیبانی می کند. زبان اصلی ، بخصوص در مقایسه با زبانی مثل (Ada) فشرده است. توسعه در آن موجب شد تا بتوان برنامه های پیچیده را نوشت . شامل استثناء ها ، برنامه نویسی دستوری وتابعی ، مشخصات مبتنی بر قانون وبسیاری از مفاهیمی است که در اغلب زبانها وجود دارد. زبان ML برای مطالعه بسیاری از مفاهیم زبانهای برنامه سازی مفید است.
وضوح مکانیزم نوع در سطح زبان منبع ، ویژگی ای است که در سایر زبانها وجود ندارد . اما کاربردهای اقتصادی زبان ML کمتر است ولی دارای چرخه کاربرد آموزشی وتحقیقاتی است (لازم به ذکر است که قسمت هوش مصنوعی بعضی از بازی های رایانه ای هم توسط همین زبان تهیه گردیده است) .
امروزه زبان های مختلفی در خانواده ی ML وجود دارد؛ معروف ترین آن SML است ( ML استاندارد) و Objective Caml. اما بقیه شامل F# که یه پروژه ی تحقیق باز که هدف .NET شرکت مایکروسافت بود نیز وجود دارند.
ایده های ML روی زبان های دیگر، به ویژه آنهایی که در دانشگاه ها طراحی شده اند تاثیرگذاشت. نمونه های آن شامل Cyclone و Nemerle است.
درضمن لازم به ذکر می باشد که از این زبان زبانهای دیگری نیز مشتق شده که در جای خودقابل تامل وبحث می باشد.زبانهایی مانند XML,GML,UML,.....
قدرت ML اغلب در طراحی و دستکاری زبان به کار می رود (کامپایلرها، تحلیلگرها، ثابت کنندههای نظریه)، اما ML همچنین در تحقیقات زیستی، سیستم های مالی، بانک های اطلاعاتی شجره ای، برنامه ی سرویس دهنده / سرویس گیرنده ی نظیر به نظیر و ... کاربرد دارد.
ML معمولاً به عنوان یک زبان تابعی ناخالص یاد می شود. چرا که به اثرات جنبی و بنابراین برنامه نویسی رویه ای، بر خلاف زبان برنامه نویسی تابعی خالص مانند هاسکل، اجازه میدهد. به همین دلیل ML یک زبان برنامهنویسی چند نمونهای (multi-paradigm) نیز عنوان میشود.
برخلاف هاسکل، ML از ارزیابی سریع (http://fa.wikipedia.org/w/index.php?title=%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8% A8%DB%8C_%D9%85%D8%B4%D8%AA%D8%A7%D9%82&action=edit&redlink=1) استفاده میکند به این معنا که تمام عبارات همگی ارزیابی می شوند. در نتیجه شما نمی توانید مستقیماً از لیست های نامحدود استفاده کنید. هرچند ارزیابی کند (http://fa.wikipedia.org/w/index.php?title=%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8% A8%DB%8C_%DA%A9%D9%86%D8%AF&action=edit&redlink=1) و بنابراین ساختمان داده های نامحدود مانند لیست ها می توانند به واسطه ی توابع بی نام شبیه سازی شوند.
ML یکزبان برنامه نویسی تابعی است که به وسیله یرابین میلنرو دیگران در اواخر دهه ی 1970در دانشگاهادین برگگسترش یافت، قواعد نحوی آن الهامشده از ISWIM است.
یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستمهای بزرگ از طریق تابعها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. Ada و ML همگی سیستمهای تابعی برجستهای را در دهه ۸۰ توسعه دادند.
کلمه ML از فوق زبان (Meta Language) گرفته شده است.از لحاظ تاریخی، ML سمبل یک فوقزبان است.ML برای بهبود بخشیدن به رویه اثبات در قضیه LFC طراحی شده است. این برای کاربرد آن در الگوریتم استنتاج نوع هیندلی- میلنر که به طور خودکار اکثر عبارت ها بدون نیاز به تفسیر نوع صریح شناخته شده است.
زبانی که ML فوق زبان آن بود pplambda است، یک ترکیبی ازحساب نسبی مرتبه اولو حساب lambda چندریختی نوع دار.
ویژگیهای ML شامل استراتژی ارزیابیفراخوانی با مقدار (call – by – value)،نوع دهیاستاتیک،استنباط نوعی،نوع داده ای جبری،تطابق الگوومدیریت استثنا، توابع درجه یک، مدیریت حافظه خودکار در مواجه با مجموعه داده های ناخواسته، چندریختی پارامتریک و انواع پویا، انواع استنتاجمی باشد. این ترکیب ویژه ازمفاهیم امکان تولید یکی از بهترین کامپایلرهای موجود را می دهد.
ML از چند ریختی وانتزاع پشتیبانی می کند. زبان اصلی ، بخصوص در مقایسه با زبانی مثل (Ada) فشرده است. توسعه در آن موجب شد تا بتوان برنامه های پیچیده را نوشت . شامل استثناء ها ، برنامه نویسی دستوری وتابعی ، مشخصات مبتنی بر قانون وبسیاری از مفاهیمی است که در اغلب زبانها وجود دارد. زبان ML برای مطالعه بسیاری از مفاهیم زبانهای برنامه سازی مفید است.
وضوح مکانیزم نوع در سطح زبان منبع ، ویژگی ای است که در سایر زبانها وجود ندارد . اما کاربردهای اقتصادی زبان ML کمتر است ولی دارای چرخه کاربرد آموزشی وتحقیقاتی است (لازم به ذکر است که قسمت هوش مصنوعی بعضی از بازی های رایانه ای هم توسط همین زبان تهیه گردیده است) .
امروزه زبان های مختلفی در خانواده ی ML وجود دارد؛ معروف ترین آن SML است ( ML استاندارد) و Objective Caml. اما بقیه شامل F# که یه پروژه ی تحقیق باز که هدف .NET شرکت مایکروسافت بود نیز وجود دارند.
ایده های ML روی زبان های دیگر، به ویژه آنهایی که در دانشگاه ها طراحی شده اند تاثیرگذاشت. نمونه های آن شامل Cyclone و Nemerle است.
درضمن لازم به ذکر می باشد که از این زبان زبانهای دیگری نیز مشتق شده که در جای خودقابل تامل وبحث می باشد.زبانهایی مانند XML,GML,UML,.....
قدرت ML اغلب در طراحی و دستکاری زبان به کار می رود (کامپایلرها، تحلیلگرها، ثابت کنندههای نظریه)، اما ML همچنین در تحقیقات زیستی، سیستم های مالی، بانک های اطلاعاتی شجره ای، برنامه ی سرویس دهنده / سرویس گیرنده ی نظیر به نظیر و ... کاربرد دارد.
ML معمولاً به عنوان یک زبان تابعی ناخالص یاد می شود. چرا که به اثرات جنبی و بنابراین برنامه نویسی رویه ای، بر خلاف زبان برنامه نویسی تابعی خالص مانند هاسکل، اجازه میدهد. به همین دلیل ML یک زبان برنامهنویسی چند نمونهای (multi-paradigm) نیز عنوان میشود.
برخلاف هاسکل، ML از ارزیابی سریع (http://fa.wikipedia.org/w/index.php?title=%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8% A8%DB%8C_%D9%85%D8%B4%D8%AA%D8%A7%D9%82&action=edit&redlink=1) استفاده میکند به این معنا که تمام عبارات همگی ارزیابی می شوند. در نتیجه شما نمی توانید مستقیماً از لیست های نامحدود استفاده کنید. هرچند ارزیابی کند (http://fa.wikipedia.org/w/index.php?title=%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8% A8%DB%8C_%DA%A9%D9%86%D8%AF&action=edit&redlink=1) و بنابراین ساختمان داده های نامحدود مانند لیست ها می توانند به واسطه ی توابع بی نام شبیه سازی شوند.