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

تألیفِ این کتاب فرایند جالب و منحصر به فردی داشته. کریس، که از برنامهنویسهای با تجربهست، در طولِ تدریس هسکل به جولی (که رشتهی تحصیلیش زبانشناسی بوده و هیچچیز از برنامهنویسی نمیدونسته) این کتاب رو نوشته، و جولی مفاهیمی که به نظرش مبهم بودن رو از کریس میپرسیده، و بعد مطالب و تمرینهایی رو اضافه میکرده. همین باعث شده این کتاب برای کسانی که تازه میخوان برنامهنویسی رو شروع کنن، یا کسانی که تجربهی برنامهنویسی با زبانهای دیگه دارن و میخوان با برنامهنویسی تابعی آشنا بشن گزینهی خیلی خوبی بشه.
شاید بهتر باشه از زبانِ خودِ نویسندهها بخونین:
کریس

من بیشتر از ۱۵ ساله برنامهنویسی میکنم، که ۸ سالِش بصورتِ حرفهای بوده. بیشتر با لیسپِ معمولی، کلوژِر، و پایتون کار کردم. تقریباً ۶ سالِ پیش هسکل نظرم رو جلب کرد. یادگرفتنِ هسکل خیلی برام سخت بود، و چند سال طول کشید تا تونستم ازش استفادهی عملی کنم. ولی هسکل زبان سختی برای استفاده نیست – بلکه کاملاً برعکس. الان سَرِ کار و پروژههای فرعیم مسائلی رو میتونم حل کنم که بدون هسکل نمیتونستم.
روشها و مقالاتِ آموزشیِ بیفایده، هسکل رو بیخودی برای کسانی که میخوان هسکل یاد بگیرن سخت کردن، اما استفاده از هسکل انقدر خوشاینده که میخوام به یادگیری بقیه کمک کنم. در دو سالِ گذشته، فعالانه هسکل رو تدریس کردم (حضوری و آنلاین). و در طول این مسیر، تمرینها و روشهای تدریسی که جواب میدادن و کار میکردن رو جمعآوری کردم و نهایتاً اون جزوات تبدیل به یه جور راهنما برای خودم در یادگیریِ هسکل شدن. من هنوز هم دارم حضوری (در شهرِ آستینِ تگزاس) و آنلاین با آدمها کار میکنم تا تدریسِ بهترِ هسکل رو یاد بگیرم.
روی توئیتر میتونین عکس سگهام و غرولندهایی که از برنامهنویسی میکنم رو ببینین!
جولی

رزومهی من نسبت به کریس خیلی متفاوته. من در رشتههای فلسفه و زبانشناسی مدرک دارم و بصورت حرفهای به عنوان معلم و کتابدار کار کردم. از سال ۱۹۹۲ به شدت آنلاین بودم ولی هیچوقت تمایلی به برنامهنویسی نداشتم.
من بهارِ ۲۰۱۴ روی توئیتر با کریس آشنا شدم. خیلی دوست داشت بدونه روشهای آموزشیِ هَسکِلی که داشت درست میکرد چقدر برای یه غیر-برنامهنویس فایده داشت. من رو به زور از اون بیمِیلیای که نسبت به برنامهنویسی داشتم بیرون آورد و جواب صدها سؤالی که میپرسیدم رو میداد. در طول راه، واقعاً از هسکل به خاطرِ خودِ هسکل خوشم اومد، یکی از دلایلش هم رابطههایی بود که با دستورِ زایشی میدیدم.
کریس از کارکردن با من خیلی بیشتر قانع شد که مطالب آموزشیِ موجود برای هسکل اصلاً برای تازهکارها مناسب نبودن. به خاطرِ صحبتها و تعهدی که برای پخشکردنِ این زبانی که واقعاً دوست داشتیم، این کتاب رو توسعه دادیم.
روی اکانتِ توئیترم میتونین قربونصدقههایی که برای زبان فرانسوی میرم و جکهای بیمزهای که از هستیشناسی میگم رو بخونین!
محتوای کتاب
لیستِ کامل فهرست مطالب رو میتونین با دانلودِ نمونهی کتاب بخونین. ولی بطور خلاصه، مطالبی که این کتاب بیان میکنه از این قرارند:
- مباحث پایه
- جبر لاندا
- سلام هَسکِل
- چاپِ نوشتهها
- نوعدادههای پایه
- تعریف و ترکیب
- تایپها
- تایپکلاسها
- الگوهای تابعیِ بیشتر
- بازگشتی یا خوداتکایی
- لیستها
- فولد کردنِ لیستها
- یه کم جدیتر
- نوعدادههای جبری
Maybe
،Either
و گونهها- یه کم واقعیتر
- ساختنِ پروژه در هسکل
- تِست کردن یا تستینگ
- ساختارهای رایج
- مانوید، نیمگروه
- فانکتور
- اَپلیکِتیو
- موند
- فاکتورکردنِ الگوها
- فولدِبِل یا تاشدنی
- پیمایشی
- ریدِر
- حالت یا استِیت
- پارسِرها
- ترکیبِ تایپها
- ترانسفورمرهای موند
- ملاحظات اجرایی
- نااَکیدی
- ساختارهای دادهی رایج
- رفع ابهام از
IO
- استثناها
- پروژهی نهایی
- TCP ِشبکهای
دربارهی این ترجمه

بعد از چند پاراگراف ترجمهی این کتاب با زبانِ رسمی، متوجه شدم اون سبکِ نگارش فاصلهی زیادی با لحنِ کتاب داره. یکی از دلایلی که نویسندهها کتاب رو با زبانِ محاورهای نوشتن، این بوده که برخلافِ اکثر آموزشهای دیگهی هسکل که پر از لغاتِ قلنبهسلنبه هستن، این کتاب تا میشه از اونها فاصله بگیره. همین باعث شد که ترجمهی رسمی و کتابی به نظر مناسب نیاد.
از طرف دیگه دیدم ترجمهی رسمی، متنِ نهایی رو از درکی که خودم از نوشتهی انگلیسی پیدا میکردم دور میکرد، و ترجمهی محاورهای خیلی به نظر ملموستر میومد. البته گفتارِ محاورهای هم سبکهای مختلفی داره؛ فکر میکنم نگارشِ این کتاب نزدیک به محاورههایی که در محیطهای فرهنگی انجام میشه باشه.
در آخر اینکه توی این ویرایش از ترجمه، یکی از فصلهای کتاب اصلی رو ترجمه نکردم. فصل ۱۹ کتاب با استفاده از چندتا کتابخونهی بخصوص (که آشنایی با هرکدومشون مستلزمِ خوندنِ مستنداتِ اونهاست) مثالهای واقعی از هسکل میزنه. به نظرم نخوندنِ این فصل تأثیرِ زیادی روی یادگیریِ هسکل نداره (خودم بار اول که کتاب رو خوندم ازش رَد شدم)، با این حال ممکنه در ویرایشهای بعدیِ کتاب اون فصل هم به همراهِ مطالبِ مکملش در سایت اضافه کنم.
دربارهی مترجم
سابقهی تحصیلی من، کارشناسی ارشد از دانشگاه شریف در رشتهی مکاترونیکه. اولین ترجمهم هم برای مجلهی بازینما در سال ۸۴ بود!
وسطِ پروژهی نهاییم برای کارشناسی ارشد با هسکل آشنا شدم. من هم که به فکر یاد گرفتنِ یک زبان برنامهنویسی به شکل حرفهای بودم، بعد از کمی تحقیق به نظرم بهترین گزینه برای محاسبات موازی و همزمان میومد – زمینهای از علمِ کامپیوتر که با توجه به محدودیتِ پیشرفت در سرعت پردازندهها، بسیار پراهمیت شده. علاوه بر این، کلاً هرجا مطلبی از برنامهنویسیِ تابعی میخوندم، همه از محاسن و عملکردِ خوب و سرعتِ بالاش میگفتن.
یکی از مثالهای جالبی که خوب یادم مونْده، برنامهنویسی با زبانهای دستوری رو به رانندگی تشبیه کرد و برنامهنویسی با زبانی مثل هسکل رو به فضانوردی با موشک! این تشبیه دو جنبه داره: یکی اینکه فرایندِ یادگیریِ این دوتا خیلی با هم فرق داره، و اینکه برنامهنویسیِ تابعی قابلیتهای خیلی بیشتری هم در اختیار میذاره. خوشبختانه این حرفها اکثراً درست از آب دراومدن و خودم در عمل تجربه کردم که چطور هسکل آدم رو به سمتِ کدِ درست و محکم هُل میده و واقعاً در حل مسائل به آدم کمک میکنه.
(مطالعهی رایگان پیشگفتار و معرفی، فصل دوم، فصل سوم، فصل چهارم و مقدمهی همهی فصلها)