آموزش Haskell
در برنامه نویسی قراردادی، دستورالعمل ها به عنوان مجموعه ای از اعلامیه ها در یک سینتکس یا فرمت خاص صورت می گیرد، اما در مورد برنامه نویسی تابعی، تمام محاسبات به عنوان ترکیبی از توابع ریاضی جداگانه محسوب می شوند. زبان برنامه نویسی Haskell به خاطر منطق دان Haskell Brooks Curry به این اسم نامیده شد که کار وی در منطق ریاضی به عنوان پایه ای برای زبان های برنامه نویسی تابعی استفاده می شود. علاوه بر Haskell، برخی از زبان های محبوب دیگر که پارادایم برنامه نویسی تابعی را دنبال می کنند عبارتند از: Lisp، Python، Erlang، Racket، F#، Clojure و غیره. در اینجا چند نکته را ذکر می کنیم که این زبان را از سایر زبان های برنامه نویسی رایج مانند جاوا، C، C ++، PHP و غیره متمایز می کند.
Haskell یک زبان برنامه نویسی تابعی است که مخصوص محاسبات نمادین و برنامه های کاربردی پردازش لیست طراحی شده است. Haskell همچنین محاسبات lambda را اجرا می کند، بنابراین آرم انتخاب شده برای Haskell حاوی نماد lambda است. Haskell یک زبان تابعی است که به طور گسترده ای استفاده می شود.
معرفی زبان برنامهنویسی Haskell
در زبانهای فانشکنال به جای how to do به what to do پرداخته میشود یعنی برنامهای که نوشته میشود به جزییات اتفاقات سطح پایین کاری ندارد و صرفا تصریح میکند از برنامه چه انتظاری داریم! فرض کنید یک لیست از اعداد زوج میخواهیم، در زبانهای رویهای باید یک حلقه بزنیم و دقیقا بدانیم تا کجا به اعداد زوج احتیاج داریم و برای هر عدد، در صورتی که زوج بود باید به آرایه یا list اضافهاش میکردیم اما در زبان فانکشنال کافیست بگوییم یک لیست اعداد طبیعی رو فیلتر کن، چه فیلتری؟ فیلتری که زوجها رو برگرداند. ۲- فانکشنهای خالص(pure function): تابع pure تابعیست که خروجیاش دقیقا از روی ورودیهایش ساخته میشود (مثل همهی توابع ریاضی)، یعنی این تابع با بیرون از تابع و بقیهی دنیا (به جز از طریق ورودیها) هیچ ارتباطی ندارد و هیچ اثری هم روی بیرون از تابع (بقیه دنیا) نمیگذارد به جز محاسبهی خروجی! به طور عملیتر هیچ متفیر گلوبالی وجود ندارد، کار با IO و تعامل با کاربر و هرگونه side-effectی وجود ندارد.
۳- توابع بازگشتی (recursive functions): توابعی که برای حل یک مساله، از حل زیر مسالههایی با ابعاد کوچکتر کمک میگیرند (مشابه استدلال استقرایی که f(n) را فرض میکنیم و برای f(n+1) اثبات میکنیم) برای حل مساله با اندازه k از همان تابع برای ورودی با اندازه k-1 (یا به هر صورتی کوچکتر از k) کمک میگیرند و با استفاده از آن، مساله را برای ورودی با اندازه k حل میکنند. توی زبان برنامهنویسی به این معنیست که تا زمانی که به یک داده واقعا نیاز نیست، محاسبه نشود، این امر چطوری امکانپذیره؟ مقدار ها از توابع ساخته میشوند و توابع زبان هم همگی pure هستند پس تفاوتی ندارد که همان موقع که فراخوانی میشوند اجرا شوند و خروجی را آماده کنند یا هرموقع به خروجیشان واقعا نیاز بود!.
اما زبانهای فانکنشال مثل Haskell و #F و Erlang و elixir و Clojure روش فکری متفاوتی دارند! در این زبانها کدها در قالب فانکشنها نوشته میشوند (مثل برنامهنویسی رویهای؟) اما فانکشنها شهروندان درجهاول در زبان هستند یعنی کار کردن با آنها به راحتی کار کردن با متغیرهاست و امکان pass شدن و ترکیب شدن و. این روزها هرکس بخواهد برنامهنویسی را شروع کند، بین زبانهای پایتون و سی و یا جاوااسکریپت یا نهایتا جاوا و سیپلاسپلاس انتخاب میکند و برنامهنویسی رویهای (procedural) و در ادامه شیگرا (Object Oriented) را یاد میگیرد و احتمالا در ادامه هم در همین بخش ادامه میدهد و فریمورکهای جدید و.
معرفی و دانلود PDF کتاب برنامهنویسی با هسکل، از مبانی اولیه: جلد اول
تایپ سیستمِ ایستا یا static هسکل کاری میکند که لازم نباشد همهی منطق برنامههایتان را دائماً درون ذهنتان نگه دارید؛ کمک میکند کمکم نتیجهگیریهایتان را پیادهسازی کنید و حافظهی کاریتان را برای کارهایی که کامپیوتر بهتر انجام میدهد هدر ندهید. در بعضی قسمتهای کتاب، بدون لطمه زدن به انتقال مفاهیم، از اصطلاحات کاربردی در زبانهای برنامهنویسی دیگر استفاده شده تا کسانی که با آن زبانها آشنایی دارند ارتباط بهتری با آن مفاهیم برقرار کنند. کریس که هم در برنامهنویسی و هم در تدریس هسکل تجربهی زیادی دارد، این کتاب را در طولِ آموزش هسکل به جولی (که رشتهی تحصیلیاش زبانشناسی بوده و واقعاً هیچچیز از برنامهنویسی نمیدانست) نوشته.
کتاب برنامهنویسی با هسکل، از مبانی اولیه: جلد اول نوشتۀ کریستوفر الن و جولی مورونوکی، یکی از گزینههای خیلی خوب برای ورود به دنیای برنامهنویسی و برنامهنویسی تابعی است. در ترجمهی کتاب حاضر سعی شده مثل خود کتاب از زبانی عامیانه برای انتقال مطالب استفاده شود - مطالب و مفاهیمی که اکثراً به خاطر تدریسهای پیچیده به سخت بودن معروف شدهاند. کریستوفر اَلِن (Christopher Allen) و جولی مورونوکی (Julie Moronuki) کتاب برنامهنویسی با هسکل، از مبانی اولیه (Haskell programming from first principles) را با فرآیند منحصر به فردی نوشتهاند. چند مورد از لغات هم دائماً در کنار معادل انگلیسیشان تکرار میشوند تا به یادگیری بیشتر کمک کنند.
هسکل یکی از زبانهای تابعیِ خالص و سطحِ بالا (high-level) میباشد که بیش از 25 سال در حال توسعه است. این اثر برای یادگیریِ بعضی لغات فنی، حتی تلفظ آنها را دقیق توضیح داده است. جولی هم هر کجا برایش مبهم بوده، آنقدر سؤال میپرسید تا مطالب را متوجه شود. از مهمترین نقاط قوتِ هسکل، میتوان به type system خیلی قویاش اشاره کرد. بعد توضیحات و تمرینهایی را اضافه میکرد تا مطالب تکمیل شوند.
- ۰۰/۱۱/۰۳