معرفی زبان برنامه نویسی Haskell

معرفی زبان برنامه نویسی Haskell

در این مطلب با مقاله معرفی زبان برنامه نویسی Haskell در خدمت شما هستیم. زبان برنامه نویسی Haskell (هسکل) بخاطر منطق دان Haskell Brooks Curry به این اسم نامیده شد که کار وی در منطق ریاضی به عنوان پایه ای برای زبان های برنامه نویسی تابعی استفاده می شود. Haskell همچنین محاسبات lambda را اجرا می کند، بنابراین آرم انتخاب شده برای Haskell حاوی نماد lambda است. Haskell یک زبان برنامه نویسی تابعی است که مخصوص محاسبات نمادین و برنامه های کاربردی پردازش لیست طراحی شده است. برنامه نویسی تابعی بر اساس توابع ریاضی است. علاوه بر Haskell، برخی از زبان های محبوب دیگر که پارادایم برنامه نویسی تابعی را دنبال می کنند عبارتند از: Lisp، Python، Erlang، Racket، F#، Clojure و غیره. در برنامه نویسی قراردادی، دستورالعمل ها به عنوان مجموعه ای از اعلامیه ها در یک سینتکس یا فرمت خاص صورت می گیرد، اما در مورد برنامه نویسی تابعی، تمام محاسبات به عنوان ترکیبی از توابع ریاضی جداگانه محسوب می شوند.

معرفی زبان برنامه نویسی Haskell

هسکل یک زبان برنامه‌ نویسی پیشرفته با قابلیت استفاده عام و متن‌باز است که حاصل بیش از بیست سال پیشرفت و تحقیق می‌باشد که اجازهٔ توسعه سریع، پیاپی و مختصر و صحیح نرم‌افزار را می‌دهد. این زبان با پشتیبانی قوی از یکپارچه‌سازی با سایر زبان‌ها، همزمانی داخلی ساختمانی، پشتیباتی از برنامه‌های همروند، بررسی استاتیک انواع داده پیش از اجرا و مجهز بودن به پروفایلر و کتابخانهٔ غنی، ساخت نرم‌افزار قابل انعطاف و قابل نگهداری با کیفیت بالا را ساده می‌کند. در پی انتشار زبان میراندا توسط Research Software Ltd در سال ۱۹۸۵، علاقه به زبان‌های تابعی تنبل افزایش یافت. تا سال ۱۹۸۷، زبان‌های تابعی خالص بسیاری به‌وجود آمده بودند. از بین اینها، میراندا بیشترین زبانی بود که استفاده می‌شد، ولی برنامه‌ها انحصاری بودند. در کنفرانسی دربارهٔ زبان‌های برنامه‌نویسی تابعی و معماری کامپیوتر (FPCA ’87) در پورتلند، اورگن، یک جلسه برگزار شد که در آن شرکت‌کنندگان بر تشکیل یک کمیته برای تعریف استانداردهای باز برای زبان‌های این‌چنینی توافق کردند.

جالب ترین جنبه Haskell شامل پشتیبانی از توابع بازگشتی و انواع داده ای، مطابقت با الگو، درون یابی لیست و عبارات دفاعی می باشد. ترکیب این خصوصیات می تواند توابعی را بسازد که نوشتن آنها در زبان برنامه نویسی شیوه ای سخت خواهد بود ولی غالباً اجرای آن در Haskell آسان است در سال 2002، این زبان یک زبان تابعی است که اغلب تحقیقات روی آن صورت گرفته است. چندین گونه از این زبان توسعه یافته اند: نسخ همگون با MIT و Glasgow ، هر دو Haskell مشابه نامیده می شوند. نسخی که بیشتر نظیر دارند و تقسیم شده اند، Haskell تقسیم شده خوانده می شوند (سابقاً Goffin) و Eden ، نسخه ارزیابی نظری ، Haskell خواهان نامیده می شود و چندین نسخ شی گرا: Haskell ++ ، Mondrian و O’ Haskell . یک زبان مشابه Haskell نیز موجود است که روش های جدید پشتیبانی از پیشرفت GUI را ارائه می دهد که کاملاً همگام نامیده می شود. بزرگترین تفاوت این زبان با Haskell در استفاده از انواع یکتا برای ورودی به دلیل ضدیت با واحدیت است.

 

ویژگی های زبان برنامه نویسی Haskell

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

ساختاری که آثار فرعی را بیان می‌کند مثالی از یک مونَد است. مونَدها چارچوبی کلی هستند که می‌توانند انواع مختلفی از محاسبات، مانند رفع خطا، غیر قطعی بودن، تجزیه کردن، و حافظهٔ معاملاتی نرم‌افزاری را مدل‌سازی کنند. مونَدها به عنوان دیتا تایپ‌های معمولی تعریف شده‌اند. اما هسکل برای استفاده از آن تعدادی زیبایی زبانی اراعه می‌دهد. هسکل مشخصات باز و منتشر شده دارد که چند پیاده‌سازی از آن وجود دارد. پیاده‌سازی اصلی آن کامپایلر باشکوه هسکل گلاسگو (جی اچ سی)، هم تفسیر گر و هم کامپایلر بومی است که در اکثر پلتفورم‌ها اجرا می‌شود. جی اچ سی بخاطر تایپ سیستم غنی ای که نو آوری‌های اخیر همچون دیتا تایپ‌های جبری عمومی و خانواده‌های تایپ را در خود جای می‌دهد مورد ملاحظه است. بازی معیار زبان‌های کامپیوتری نیز کارایی بالای پیاده‌سازی همزمانی و همسانی این زبان را به برجستگی نشان می‌دهد. اجتماعی فعال و در حال رشد در اطراف این زبان وجود دارد؛ و بیش از ۵۴۰۰ کتاب‌خانه و ابزار متن باز سوم شخص در مخزن بسته آنلاین هکیج موجود است. Haskell (هسکل) یک زبان تابعی است که به طور گسترده ای استفاده می شود. در اینجا چند نکته را ذکر می کنیم که این زبان را از سایر زبان های برنامه نویسی رایج مانند جاوا، C، C ++، PHP و غیره متمایز می کند:

  • ساخت سریع برنامه یا نمونه کار با کتابخانه های متععد آن
  • دارای اکوسیستم قوی
  • عملکرد بهتر
  • کاملا استاندارد
  • همه منظوره
  • چند پارادایمی
  • زبان تابعی
  • ارزیابی تنبل
  • Haskell یک زبان برنامه نویسی استاتیک است و از نوع سیستم هندی-میلنر برای اطمینان از ایمنی نوع استفاده می کند. همچنین کلاس های نوع را معرفی می کند
  • بدون هیچ بیانیه یا دستور العمل

دانلود ابزار برنامه نویسی Haskell

فیلم آموزش برنامه نویسی هسکل و ساخت اپلیکیشن با Haskell تابعی

مثال فاکتوریل در برنامه نویسی 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

این مثال بالا فاکتوریل را به عنوان تابع بازگشتی شرح می‌دهد با یک مبنای پایان بخش (فرض استقرا). تعریف این تابع توسط کدهای هسکل شبیه به گزاری‌های موجود در کتب درسی است. خط اول تابع فاکتوریل نوع تابع را شرح می‌دهد زمانی که اختیاری است یک نوع خوب برای شامل شدن آن مطرح است.

 as the function factorial (factorial) has type (::) from integer to integer (Integer -> Integer)

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

مانند راه حل‌های گوناگون سری فیبوناچی که در بالا نشان داده شد از یک هم بازگشت برای ساخت یک لیست از اعداد به محض درخواست استفاده می‌کند. شروع از پایه یعنی ۱ و ساختد موارد جدید که نسبت به سایر اعضا حق تقدم دارد آغاز می‌شود. تکین ها-اتم ها- ورودی /خروجی‌ها هسکل به عنوان یک زبان خالص اثرات جانبی توابع را ندارد این یک رقابت برای برنامه‌های واقعی است که در میان بقیهٔ موارد احتیاج پیدا می‌کند به تأثیرات محیط برنامه‌نویسی هسکل این مشکل را با نوع داده‌ای اتم حل کرده‌است. سیستم تایپ به ترتیب دستورات امری یک تناسب بر قرار می‌کند. یک مثال نوعی از این سیستم شامل حالات بی‌ثبات همزمانی حافظهٔ تراکنشی مدیریت استثناء و انتشار خطاست ولی اتم‌ها برای رسیدن به بسیاری اهداف مفیدند. هسکل یک ترکیب ویژه برای عبارات اتمی ارائه کرده‌است پس برنامه‌هایی که اثر جانبی دارند می‌توانند به نوعی شبیه زبان‌های امری نوشته شوند برنامهٔ زیر یک نام را از ورودی دریافت می‌کند و در خروجی یک پیغام خوشامد گویی چاپ می‌کند.

 main = do putStrLn "What's your name?"
          name <- getLine
          putStr ("Hello, " ++ name ++ "!\n")

do عبارات با این اصطلاح کار با اتم‌ها را آسان می‌کنند این عبارت با عبارت قبلی یکسان می‌باشد ولی تقریباً برای نوشتن آسان‌تر و قابل فهم‌تر از De-sugared که از اپراتور اتم به‌طور مستقیم استفاده می‌کند.

 main = putStrLn "What's your name?">>
             getLine>>= \ name ->
              putStr ("Hello, " ++ name ++ "!\n")

 

پیاده سازی های زبان برنامه نویسی Haskell

  • Glasgow Haskell Compiler (GHC

به کد اصلی به تعداد معیارهای اصلی با استفاده از «سی» به عنوان زبان حیاتی جی اچ سی مشهورترین کامپایلر هسکل می‌باشد. هسکل به تعداد نسبتاً زیادی کتابخانه‌های مفید دارد که فقط با جی اچ سی کار می‌کند.

  • Gofer

یک لهجه یا گویش جدید آموزشی هسکل است با ویژگی به نام کلاس‌های سازنده به وسیلهٔ مارک جونز توسعه داده شد.

  • HBC

یکی دیگر از کامپایلر کد اصلی هسکل می‌باشد این کامپایلر به‌طور فعالانه کار نمی‌کند و توسعه داده نمی‌شود ولی در بعضی موارد قابل استفاده می‌باشد.

  • Helium

یک گویش جدید برای هسکل است. تمرکز روی این لهجه باعث می‌شود که آموخته‌های ما در مورد پیغام‌های خطا روشن‌تر شود. این در همان حالت یک تایپ را کم دارد و اجرای آن با بسیاری از برنامه‌های هسکل ناسازگار است.

  • Hugs, the Haskell User’s Gofer System,

یک مترجم بایت کد می‌باشد که باعث کامپایل و اجرای سریع خواهد شد. همچنین با کتابخانه‌های گرافیکی ساده نیز همراه است. برای افرادی که در زبان هسکل مبتدی هستند این مترجم مفید است ولی به معنای یک اجرای ساده و بچگانه نیست بلکه بسیار قابل حمل‌تر در اجرا درون هسکل می‌باشد.

  • Jhc

یک کامپایلر هسکل است که این کامپایلرتأکید بر سرعت و کارایی بالای برنامه‌ها دارد چنانچه تغییراتی در برنامه اعمال شود.

  • nhc98

یک کامپایلر بایت کد هسکل است باید توجه داشت بایت کد اجرای بسیار سریعتری دارد توجه به استفادهٔ کمتر و بهینه تر از حافظه از مزایای این کامپایلر است و یک انتخاب مناسب برای کامپیوترهای قدیمی و کم مصرف است.

  • Yhc, the York Haskell Compiler

یک شاخه از ان اچ سی ۹۸ می‌باشد با اهداف ساده‌تر شدن قابل حمل شدن تأثیرگذار تر شدن. پشتیبانی تمام و کمال برای هت. همچنین ویژگی‌ها یی برای جاوا نیز دارد که اجازه می‌دهد به کار برانی که در محیط شبکه کار می‌کنند هسکل را نیز اجرا کند.

کتابخانه‌ها در زبان برنامه نویسی Haskell

از ژانویهٔ ۲۰۰۷ کتابخانه‌ها و موارد کاربردی در یک بسته به نام Hackage جمع شوند یک پایگاه داده ان لاین از برنامهٔ هسکل که از وسیله‌ای به نام بسته‌کنندهٔ cabal استفاده می‌کند. از دسامبر ۲۰۰۸ ۹۱۰ بسته قابل استفاده برای کاربران گذاشته شده‌است.

  • “Hackage”

یک نقطهٔ میانی برای توزیع هسکل میبا شد به وسیلهٔ cabal فعالیت‌های توسعه آفرینی هسکل به صورت یک قطب درآمده نصب برنامه‌های جدید هسکل به وسیلهٔ Hackage و وسایل نصب cabal امکان‌پذیر است. این نصب‌ها بازگشتی و نیاز به وابستگی‌ها یی دارد که اینها با وجود ان در دسترس هستند. امروزه نصب کد هسکل بسیار اسانتر از قبل می‌باشد.

منبع 1

منبع 2

خودآموز زبان برنامه‌نویسی Haskell

یادگیری زبان هسکل، که یک زبان برنامه‌نویسی کاملاً فانکشنال است، مانند یادگیری برنامه‌نویسی برای اولین بار سرگرم‌کننده بوده و شما را مجبور می‌کند تا متفاوت فکر کنید. به طور کلی، در زبان‌های دستوری شما با دادن دنباله‌ای از تَسک‌ها به کامپیوتر و سپس اجرای آن‌ها یکی پس از دیگری دست به توسعهٔ یک برنامه می‌زنید و این در حالی است که تَسک‌های مد نظرتان در حال اجرا می‌توانند تغییر حالت دهند (برای مثال شما متغیر a را با ۵ مقداردهی می‌کنید، یکسری توابع را اجرا می‌کنید و سپس مقدار آن را جایگزین می‌کنید.)

Learn You a Haskell یک خودآموز برای کسانی که تجربه‌ٔ برنامه‌نویسی با زبان‌هایی مانند C++ ،C ،Java و Python دارند اما در عین حال با یک زبان فانکشنال مانند OCaml ،ML و به خصوص Haskell هنوز برنامه‌ای ننوشته‌اند، مناسب است.

Learn You a Haskell: خودآموز زبان برنامه‌نویسی هسکل

 

همچنین 6،954 بسته موجود است. در اینجا نمونه ای از رایج ترین موارد است :

bytestringBinary databasePrelude, IO, threads
networkNetworkingtextUnicode text
parsecParser librarydirectoryFile/directory
hspecRSpec-like testsattoparsecFast parser
monad-loggerLoggingpersistentDatabase ORM
template-haskellMeta-programmingtarTar archives
snapWeb frameworktimeDate, time, etc.
happstackWeb frameworkyesodWeb framework
containersMaps, graphs, setsfsnotifyWatch filesystem
hintInterpret HaskellunixUNIX bindings
SDLSDL bindingOpenGLOpenGL graphics system
criterionBenchmarkingpangoText rendering
cairoCairo graphicsstatisticsStatistical analysis
gtkGtk+ libraryglibGLib library
test-frameworkTesting frameworkresource-poolResource pooling
conduitStreaming I/Omwc-randomHigh-quality randoms
QuickCheckProperty testingstmAtomic threading
blaze-htmlMarkup generationcerealBinary parsing/printing
xmlXML parser/printerhttp-clientHTTP client engine
zlibzlib/gzip/rawyamlYAML parser/printer
pandocMarkup conversionbinarySerialization
tlsTLS/SSLzip-archiveZip compression
warpWeb servertext-icuText encodings
vectorVectorsasyncAsync concurrency
pipesStreaming IOscientificArbitrary-prec. nums
processLaunch processesaesonJSON parser/printer
dlistDifflistssybGeneric prog.

 

مشاهده جلسات قبل معرفی زبان های برنامه نویسی

  1. زبان برنامه نویسی سی و سی پلاس پلاس
  2. معرفی زبان برنامه نویسی پایتون
  3. Ruby چیست؟ بررسی زبان برنامه نویسی روبی
  4. زبان برنامه نویسی PHP چیست؟
  5. زبان برنامه نویسی Lua چیست؟
  6. کاتلین (Kotlin) چیست؟ توضیح زبان برنامه نویسی کاتلین
  7. Ada چیست؟ معرفی زبان برنامه نویسی Ada
  8. زبان برنامه نویسی COBOL چیست؟ شرح کامل COBOL
  9. معرفی زبان برنامه نویسی Cython
  10. زبان برنامه نویسی Elixir چیست؟ معرفی کامل Elixir (الیکسیر)
  11. کاملترین معرفی زبان برنامه نویسی Groovy
  12. زبان برنامه نویسی Rust چیست؟ کاملترین معرفی زبان برنامه نویسی Rust
  13. زبان برنامه نویسی Scala چیست؟ معرفی،ویژگی ها و کاربرد Scala
5/5 - (2 امتیاز)

راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.

پکیج صفر تا صد جوملا به همراه آموزش طراحی وب سایت خبری

دسته بندی موضوعات

آخرین محصولات فروشگاه

مشاهده همه

نظرات

بازخوردهای خود را برای ما ارسال کنید

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.