موضوع مقاله: هسکل (زبان برنامه‌نویسی) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # هسکل (زبان برنامه‌نویسی) | مقدمه: هسکل یک زبان برنامه‌نویسی تابعی خالص ، استاندارد شده و همه منظوره با نوع داده مستحکم است که به یاد دانشمند حوزه منطق و استدلال به نام هسکل کاری نام‌گذاری شده‌است. | ## بخش 1: هسکل (زبان برنامه‌نویسی) | هسکل یک زبان برنامه‌نویسی پیشرفته با قابلیت استفاده عام و متن‌باز است که حاصل بیش از بیست سال پیشرفت و تحقیق می‌باشد که اجازهٔ توسعه سریع، پیاپی و مختصر و صحیح نرم‌افزار را می‌دهد. این زبان با پشتیبانی قوی از یکپارچه‌سازی با سایر زبان‌ها، همزمانی داخلی ساختمانی، پشتیبانی از برنامه‌های همروند، بررسی استاتیک انواع داده پیش از اجرا و مجهز بودن به پروفایلر و کتابخانهٔ غنی، ساخت نرم‌افزار قابل انعطاف و قابل نگهداری با کیفیت بالا را ساده می‌کند. از بین اینها، میراندا بیشترین زبانی بود که استفاده می‌شد، ولی برنامه‌ها انحصاری بودند. در کنفرانسی دربارهٔ زبان‌های برنامه‌نویسی تابعی و معماری کامپیوتر (FPCA '87) در پورتلند، اورگن، یک جلسه برگزار شد که در آن شرکت‌کنندگان بر تشکیل یک کمیته برای تعریف استانداردهای باز برای زبان‌های این‌چنینی توافق کردند. هسکل ۹۸ در اواخر سال ۱۹۹۷، این مجموعه تعاریف در هسکل ۹۸ به اوج خود رسید، که قرار شد یک نسخهٔ پایدار، حداقلی (Minimal)، و قابل حمل از زبان به همراه یک کتابخانه استاندارد برای آموزش و به عنوان پایه‌ای برای گسترش‌های آینده معین کنند و کمیته صریحاً از ایجاد نسخه‌های متفاوت از هسکل ۹۸ به همراه اضافه کردن ویژگی‌های تجربی در این نسخه‌ها استقبال کرد. در فوریه ۱۹۹۹، استاندارد زبان هسکل ۹۸ به‌صورت عمومی با عنوان گزارش هسکل ۹۸ رسماً منتشر شد. در ژانویه ۲۰۰۳، یک ورژن بازبینی شده با عنوان زبان هسکل ۹۸ و کتابخانه‌هایش: گزارش بازبینی منتشر شد. زبان به رشد سریع خودش ادامه داد که با پیاده‌سازی کامپایلر گلاسکو هسکل (به اختصار GHC) استاندارد فعلی هسکل ارائه شد. هسکل ۲۰۱۰ در اوایل سال ۲۰۰۶، فرایند تعریف یک جانشین برای استاندارد هسکل ۹۸، که به‌صورت غیررسمی به آن هسکل پرایم می‌گفتند، آغاز شد؛ بنابراین گذاشته شد که هر ساله تعریف زبان بازبینی شود و یک نسخهٔ جدید در هر سال تولید شود. اولین بازبینی، که هسکل ۲۰۱۰ نام داشت، در نوامبر ۲۰۰۹ معرفی شد و در ژوئیه ۲۰۱۰ منتشر شد. یک تابع محض می‌تواند اثر فرعی ای را برگرداند که متعاقباً اجرا می‌شود، و توابع ناخالص زبان‌های دیگر را پیاده‌سازی می‌کند. نو آوری اصلی هسکل در این مسئله اضافه کردن تایپ کلس‌ها است، که در اصل به عنوان راهی اصولی برای اضافه کردن سربارگذاری به این زبان ساخته شدن اند ولی پس از آن استفاده‌های دیگری یافته هم یافته‌اند. مونَدها چارچوبی کلی هستند که می‌توانند انواع مختلفی از محاسبات، مانند رفع خطا، غیر قطعی بودن، تجزیه کردن، و حافظهٔ معاملاتی نرم‌افزاری را مدل‌سازی کنند. | ## بخش 2: هسکل (زبان برنامه‌نویسی) | پیاده‌سازی اصلی آن کامپایلر باشکوه هسکل گلاسگو (جی اچ سی)، هم تفسیر گر و هم کامپایلر بومی است که در اکثر پلتفورم‌ها اجرا می‌شود. جی اچ سی بخاطر تایپ سیستم غنی ای که نو آوری‌های اخیر همچون دیتا تایپ‌های جبری عمومی و خانواده‌های تایپ را در خود جای می‌دهد مورد ملاحظه است. بازی معیار زبان‌های کامپیوتری نیز کارایی بالای پیاده‌سازی همزمانی و همسانی این زبان را به برجستگی نشان می‌دهد. اجتماعی فعال و در حال رشد در اطراف این زبان وجود دارد؛ و بیش از ۵۴۰۰ کتاب‌خانه و ابزار متن باز سوم شخص در مخزن بسته آنلاین هکیج موجود است. خط اول تابع فاکتوریل نوع تابع را شرح می‌دهد زمانی که اختیاری است یک نوع خوب برای شامل شدن آن مطرح است. اگر برنامه‌نویس نوع تابع را مشخص نکرده باشد این نوع تعریف به‌طور اتوماتیک استنباط می‌شود. یادداشتی که پارامترهای تابع ان در پرانتز نیستند به وسیله فاصله از دوم جدا شده‌است. یک حایل خط سوم را از اعداد منفی که فاکتوریل آن‌ها تعریف نشده حفظ می‌کند بدون حایل این تابع بدون رسیدن به مورد اصلی از طریق همهٔ اعداد منفی تکرار می‌شود. اگر عدد صحیح منفی به عنوان آرگومان عبور کند برنامه با یک خطای زمان اجرا شکست می‌خورد. مانند راه حل‌های گوناگون سری فیبوناچی که در بالا نشان داده شد از یک هم بازگشت برای ساخت یک لیست از اعداد به محض درخواست استفاده می‌کند. شروع از پایه یعنی ۱ و ساختن موارد جدید که نسبت به سایر اعضا حق تقدم دارد آغاز می‌شود. تکین ها-اتم ها- ورودی /خروجی‌ها هسکل به عنوان یک زبان خالص اثرات جانبی توابع را ندارد این یک رقابت برای برنامه‌های واقعی است که در میان بقیهٔ موارد احتیاج پیدا می‌کند به تأثیرات محیط برنامه‌نویسی هسکل این مشکل را با نوع داده‌ای اتم حل کرده‌است. یک مثال نوعی از این سیستم شامل حالات بی‌ثبات همزمانی حافظهٔ تراکنشی مدیریت استثناء و انتشار خطاست ولی اتم‌ها برای رسیدن به بسیاری اهداف مفیدند. | ## بخش 3: هسکل (زبان برنامه‌نویسی) | هسکل یک ترکیب ویژه برای عبارات اتمی ارائه کرده‌است پس برنامه‌هایی که اثر جانبی دارند می‌توانند به نوعی شبیه زبان‌های امری نوشته شوند برنامهٔ زیر یک نام را از ورودی دریافت می‌کند و در خروجی یک پیغام خوشامد گویی چاپ می‌کند. هسکل به تعداد نسبتاً زیادی کتابخانه‌های مفید دارد که فقط با جی اچ سی کار می‌کند. Gofer یک لهجه یا گویش جدید آموزشی هسکل است با ویژگی به نام کلاس‌های سازنده به وسیلهٔ مارک جونز توسعه داده شد. HBC یکی دیگر از کامپایلر کد اصلی هسکل می‌باشد این کامپایلر به‌طور فعالانه کار نمی‌کند و توسعه داده نمی‌شود ولی در بعضی موارد قابل استفاده می‌باشد. تمرکز روی این لهجه باعث می‌شود که آموخته‌های ما در مورد پیغام‌های خطا روشن‌تر شود. این در همان حالت یک تایپ را کم دارد و اجرای آن با بسیاری از برنامه‌های هسکل ناسازگار است. برای افرادی که در زبان هسکل مبتدی هستند این مترجم مفید است ولی به معنای یک اجرای ساده و بچگانه نیست بلکه بسیار قابل حمل‌تر در اجرا درون هسکل می‌باشد. Jhc یک کامپایلر هسکل است که این کامپایلر تأکید بر سرعت و کارایی بالای برنامه‌ها دارد چنانچه تغییراتی در برنامه اعمال شود. nhc98 یک کامپایلر بایت کد هسکل است باید توجه داشت بایت کد اجرای بسیار سریعتری دارد توجه به استفادهٔ کمتر و بهینه تر از حافظه از مزایای این کامپایلر است و یک انتخاب مناسب برای کامپیوترهای قدیمی و کم مصرف است. همچنین ویژگی‌ها یی برای جاوا نیز دارد که اجازه می‌دهد به کار برانی که در محیط شبکه کار می‌کنند هسکل را نیز اجرا کند. کتابخانه‌ها از ژانویهٔ ۲۰۰۷ کتابخانه‌ها و موارد کاربردی در یک بسته به نام Hackage جمع شوند یک پایگاه داده ان لاین از برنامهٔ هسکل که از وسیله‌ای به نام بسته‌کنندهٔ cabal استفاده می‌کند. | ## جمع‌بندی | این نصب‌ها بازگشتی و نیاز به وابستگی‌ها یی دارد که اینها با وجود ان در دسترس هستند.