معرفی زبان برنامه نویسی Haskell
معرفی زبان برنامه نویسی Haskell
در این مقاله به ارائه توضیحاتی در رابطه با برنامه نویسی Haskell میپردازیم و برایتان به طور دقیق مشخص میکنیم که Haskell چیست و نمونه کد آن به چه شکل میباشد. برای کسب اطلاعاتی مفید درباره این زبان برنامه نویسی مخصوص محاسبات و پردازش لیست، با ما در این مقاله همراه باشید.
Haskell چیست
همانطور که گفته شد هسکل یک زبان برنامه نویسی مختص محاسبات نمادین بوده و برای برنامه های کاربردی پردازش لیست طراحی شده است.
منطقدان بزرگ، Haskell Brooks Curry این زبان برنامه نویسی را ابداع نموده و از آنجایی که کار او به عنوان پایهای برای زبانهای برنامه نویسی تابعی در منطق ریاضی محسوب میشد، نام این زبان را هسکل نهادند.
وی محاسبات لامبادا را اجرا میکرد و به همین دلیل آرم منتخب برای این زبان برنامه نویسی، نیز نماد lambda انتخاب شد. برنامه نویسی تابعی بر اساس توابع ریاضی به انجام میرسد. زبانهای مختلفی وجود دارند که به صورت تابعی برنامه نویسی را دنبال میکنند. برای نمونه میتوان به موارد زیر اشاره کرد:
- Lisp
- Python
- Erlang
- Racket
- F#
- Clojure
در روند برنامه نویسی تابعی، محاسبات تماماً به صورت ترکیبی از توابع ریاضی جداگانه انجام میشوند اما برعکس در رابطه با برنامه نویسی قراردادی میتوان گفت که تمامی دستورالعملها به صورت مجموعهای از دادهها در یک سینتکس یا فرمت خاص صورت میگیرند.
معرفی زبان برنامه نویسی Haskell
مثل خیلی از زبانهای برنامه نویسی پیشرفته، هسکل نیز یک زبان متنباز است که قابلیت استفاده از آن برای عموم مردم آزاد میباشد.
این زبان حاصل بیش از بیست سال توسعه و تحقیق میباشد و به همین دلیل گسترش نرمافزارها به صورت سریع، مداوم و خلاصه و صحیح به وسیله هسکل امکانپذیر شده است.
پشتیبانی قدرتمند این زبان برنامه نویسی از موارد زیر، امکان ساخته شدن یک نرمافزار با کیفیت بالا و به صورت قابل انعطاف و قابل نگهداری را ساده مینماید:
- بررسی استاتیک انواع داده قبل از اجرا
- پشتیبانی قوی از یکپارچهسازی با زبانهای دیگر
- همزمانی داخلی ساختمانی
- مجهز بودن به پروفایلر و کتابخانهی غنی
- پشتیباتی از برنامههای همروند
آیا میدانید مهمترین ویژگی Haskell چیست جالبترین نکتهای که در رابطه با هسکل میتوان به آن اشاره کرد، پشتیبانی از توابع بازگشتی و انواع دادهای، درونیابی لیست و عبارات دفاعی و از طرفی تطبیقپذیری با الگو میباشد.
با ترکیب این سه ویژگی میتوان توابعی را ساخت که شاید استفاده از آنها در زبانهای برنامه نویسی دشوار باشد اما اجرای آن در Haskell بسیار آسان است.
ویژگیهای زبان برنامه نویسی Haskell چیست
تطبیق الگویی، ارزیابی تأخیری، چندریختی تایپی، فهم لیست و تایپ classها ازویژگیهایی هستند که میتوان به زبان برنامه نویسی هسکل نسبت داد. در هسکل توابع تاثیرات فرعی ندارند پس به راحتی میتوان گفت Haskell زبانی محضاً تابعی است.
توابع محض میتوانند یک اثر فرعی را برگردانند که قابل اجراست و برای پیادهسازی توابع ناخالص زبانهای دیگر مورد استفاده قرار میگیرد. وجه تمایز هسکل نسبت به دیگر زبانها اضافه کردن تایپ classها است. در واقع این ویژگی راه مناسبی برای افزودن سربارگذاری به این زبان میباشد.
در این قسمت به ذکر چند نکتهای میپردازیم که این زبان را از سایر زبانهای برنامه نویسی رایج مانند C، C ++،PHP و جاوا متمایز میکند:
- ساخت سریع برنامه یا نمونه کار
- کتابخانههای متععد هسکل
- عملکرد بهتر
- کاملا استاندارد
- ارزیابی تنبل
- اکوسیستم قوی
- چند پارادایمی
- زبان تابعی
- همه منظوره بودن
مثال فاکتوریل در برنامه نویسی Haskell
برای اثبات دستور زبان تابعی میتوان به مثال ساده تابع فاکتوریل برای اعداد صحیح مثبت اشاره کرد که در زبان برنامه نویسی هسکل به شکل زیر نوشته میشود؛
factorial :: Integer -> Integer
factorial 0 = 1
factorial n | n> 0 = n * factorial (n-1)
همچنین میتوان دستور فوق را در یک خط بدین شکل ایجاد نمود:
factorial n = if n> 0 then n * factorial (n-1) else 1
پیاده سازیهای زبان برنامه نویسی Haskell
Glasgow Haskell Compiler: با استفاده از C به عنوان زبان حیاتی GHC معروفترین کامپایلر، Haskell میباشد. هسکل دارای تعداد کتابخانههای مفید و متعددی است که تنها با GHC کار میکنند.
Gofer
روش آموزشی جدیدی از هسکل است که با لهجه و گویش جدیدی به این امر میپردازد و با یک ویژگی تحت عنوان کلاسهای سازنده، توسعه داده شده است. این توسعه به دست مارک جونز به انجام رسیده است.
HBC
HBC یکی از کامپایلرهای کد اصلی هسکل است که در برخی موارد قابل استفاده بوده ولی به طور کلی توسعه داده نمیشود و به صورت فعالانه نیز کار نمیکند.
Helium
هلیوم نیز گویشی جدید برای هسکل است که متمرکز بودن روی آن، دانش افراد در رابطه با پیغامهای خطا را پر رنگتر مینماید. البته اجرای این گویش با همه برنامههای هسکل سازگاری ندارد.
Hugs
the Haskell User’s Gofer System: این ترنسلیتور بایت کد، امکان اجرای سریع و کامپایل سریع را فراهم آورده و از ویژگیهای مهم آن میتوان به دارا بودن کتابخانههای گرافیکی ساده اشاره کرد.
استفاده از این مترجم برای افرادی که تازهکار هستند و در راه استفاده از هسکل مبتدی محسوب میشوند، مناسب میباشد. اگرچه این اجرا به هیچ وجه ساده و بچهگانه نیست و فقط در اجرای درون هسکل، قابل حملتر میباشد.
Jhc
از دیگر کامپایلرهای هسکل که تاکید بر سرعت و کارایی بالای برنامهها دارد میتوان به جی اچ سی اشاره کرد.
nhc98
یک کامپایلر بایت کد هسکل است که تمرکز آن روی استفاده بهینه و کمتر از حافظه میباشد و همین ویژگی یک مزیت مهم برای این کامپایلر محسوب میشود.
برای کار با کامپیوترهای قدیمیتر این گزینه بسیار مناسب میباشد.
Yhc
the York Haskell Compiler یا همان Yhc یک شاخه از ان اچ سی۹۸ میباشد اما با تفاوت در اهدافی مثل قابل حمل شدن، سادهتر شدن و تأثیرگذارتر شدن، همچنین پشتیبانی تمام و کمال برای هسکل. Yhc دارای ویژگیهایی برای جاوا نیز میباشد که طبق آن، کاربران محیطهای شبکهای نیز میتوانند هسکل را اجرا نمایند.
کتابخانهها در زبان برنامه نویسی Haskell
کتابخانهها و آیتمهای کاربردی هسکل، از سال ۲۰۰۷ به بعد در بستهای تحت عنوان Hackage جمع شده و یک پایگاه داده آنلاین تشکیل دادند که برنامههای هسکل با استفاده از cabal به آن دسترسی دارند.
Hackage در Haskell چیست
Hackage بستهای میانی برای توزیع هسکل میباشد و cabal ابزاری است که برای نصب برنامههای هسکل دسترسی به آن در کنار استفاده از Hackage ضروری میباشد. امروزه نصب کد هسکل بسیار آسانتر از قبل شده است.
خودآموز زبان برنامهنویسی Haskell
Haskell یک زبان برنامه نویسی کاملاً فانکشنال است و برای یادگیری آن نیاز به متفاوت فکر کردن خواهید داشت. در مجموع، در زبانهای دستوری، شما دنبالهای از Taskها را به کامپیوتر داده و آنها را یکی یکی اجرا مینمایید، بدین ترتیب دست به توسعهٔ یک برنامه میزنید و در همین حال Taskهای در حال اجرا، قابلیت تغییر حالت دارند. مثلا ممکن است متغیرb را با ۱۰ مقداردهی نموده و بعد توابع را اجرا کنید، سپس مقدار آن را با 20 جایگزین نمایید.
اگر به خوبی میدانید که Haskell چیست و از طرفی تجربه کار با زبانهایی مثل پایتون، جاوا یا C را دارید اما تاکنون با زبانهای فانکشنال مثل OCaml یا ML، برنامه نویسی نکردهاید، بی شک هسکل گزینه مناسبی بوده و با استفاده از خود آموز Learn You a Haskell میتوانید شروع به یادگیری نمایید.