تبلیغِ هسکل
مابقیِ این معرفی کمی از تاریخِ هسکل صحبت میکنه و به بقیهی زبانهای برنامهنویسی و سبکهای مختلف ارجاع داره. اگه تازهکارین، ممکنه همهی اینها براتون مفهوم نباشن، ولی اشکالی نداره. بقیهی کتاب با در نظر داشتنِ تازهکارها نوشته شده. با پیشروی در کتاب، این قابلیتهایی که اینجا اشاره میکنیم رو متوجه میشین.
یه ذره هسکل رو با بقیهی زبانها مقایسه میکنیم تا نشون بدیم چرا به نظرِ ما استفاده از هسکل با ارزشه. هسکل پیشرفتی از زبانهایی مثلِ ML ِه (که توسطِ رابین میلنر و دیگران از دانشگاهِ ادینبورگ در سالِ ۱۹۷۳ اختراع شد). ML خودش از روی ISWIM درست شده بود، که اون هم از روی ALGOL60 و Lisp. این تاریخچه رو گفتیم تا بدونین هسکل جدید نیست. محبوبترین پیادهسازیِ هسکل، به اسمِ کامپایلرِ گلاسگو برای هسکل (GHC)، خیلی جا افتاده و خوشساخته. قابلیتهایی که در هسکل کنار هم جمع شدن، باعث شده تبدیل به زبانی بشه که خیلی گویاتر از روبی باشه، و امنیتِ تایپیش بیشتر از هر زبانِ تجاریِ دیگهای بشه.
در سال ۱۹۶۸، dialect یا نسخهی ALGOL68 قابلیتهای زیر رو داشت:
۱.
رکورد تایپهایی که کاربر میتونست تعریف کنه.
۲.
تایپِ جمعهایی که کاربر میتونست تعریف کنه (اتحادهایی که محدود به شمارشهای ساده نبودن).
۳.
بیانیههای سوئیچ یا case که با تایپهای جمع کار میکردن.
۴.
مقادیرِ ثابتی که در زمانِ کامپایل اجبار، و بجای :=
با استفاده از =
تعریف میشدن.
۵.
گرامر ِ یکپارچه برای استفاده از مقادیر و تایپهای مرجع – اشارهی اشارهگر دستی نبود.
۶.
بستارها با گسترهی واژگانی (بدون این قابلیت، خیلی از الگوهای تابعی از هم میپاشن).
۷.
اجرای موازیِ دستورالعملها، مستقل از پیادهسازیِ زبان.
۸.
کامپایلِ چندگذری – یعنی میشه بعد از اینکه از چیزی استفاده کردین تعریفش کنین.
تا اولایلِ قرنِ ۲۱، خیلی از زبانهای محبوبی که کاربریِ عمومی و تجاری دارن در خیلی قابلیتها هنوز به پایِ ALGOL68 نمیرسن. دلیل اینکه چنین چیزی میگیم، اینه که ایمان داریم امکانِ پیشرفت در علومِ کامپیوتر، برنامهنویسی و زبانهای برنامهنویسی، نه تنها ممکنه، بلکه برای تبدیلِ نرمافزار به یه رشتهی مهندسیِ واقعی، واجب و مطلوبه. درسته که رشتهی مهندسیِ نرمافزار وجود داره، ولی معنای واقعیِ مهندسی، به کار گرفتنِ اطلاعاتِ علمی و عملی در کنارِ همدیگه، برای ساخت و نگهداریِ سیستمهای بهتره. با پیشرفتِ علم و تغییر در موادِ موجود، مهندسها هم باید پیشرفت کنن.
هسکل از پیشرفتهایی که از ALGOL68 تا به حال در زبانهای برنامهنویسیِ محبوب اختراع شدن استفاده میکنه، در کنارشِ از یه پیادهسازیِ جا افتاده و طراحیِ خوب هم بهره میبره. هسکل گاهی اوقات به عنوانِ یه زبانِ "آکادمیک" کنار زده میشه، دلیلش هم اینه که نسبتاً همقدم با علمِ روزِ ریاضیات و کامپیوتر پیش رفته. به نظر ما، این پیشرفت خوبه و کمک به حلِ مسائلِ عملی در رایانش و طراحیِ نرمافزار میکنه.
پیشرفت، هم مطلوب و هم ممکنه، ولی یکنواخت و اجتنابناپذیر نیست. تاریخِ دنیا پر از امثالِ پیشرفتهای نامنظم ِه. برای مثال، تخمین زده شده که بین سالهای ۱۵۰۰ تا ۱۸۰۰ میلادی، بیماریِ اسکوربوت دو میلیون دریانورد رو از پا درآورده. دنیای غرب، بارها درمانِ اسکوربوت رو فراموش کرده. در سالِ ۱۶۱۴، جراحِ کلِ گروهانِ هندِ شرقی، توصیه کرد که برای جلوگیری از اسکوربوت، همهی سیاحتهای دریایی با خودشون مرکبات هم ببرن. جونِ خیلیها رو نجات داد، ولی درکی که از دلیلِ درمانِ اسکوربوت با مرکبات داشتن اشتباه بود. همین مسئله منجر به استفاده از لیمو شیرازی که ویتامین C ِکمتری نسبت به لیموترش داره شد، و اسکوربوت برگشت، تا اینکه در سال ۱۹۳۲ اسید اسکوربیک کشف شد. بینظمی و لجبازی (با اینکه دریانوردها همینطور از اسکوربوت میمردن، ارتشِ دریاییِ بریتانیا باز هم لیمو شیرازی رو تأیید میکرد) میتونه جلوی پیشرفت رو بگیره. ما ترجیح میدیم پزشکی داشته باشیم که مایل به قبول و درکِ اشتباهاتش باشه، با علمِ جدید همپا باشه، و حتی فعالانه به فکرِ ارتقا و گسترشِ دانستههاش باشه، تا اینکه پزشکی داشته باشیم که همهی کارهاش رو برپایهی فرضیههای سطحی انجام میده.
راههای دیگهای هم برای جلوگیری از اسکوربوت وجود داره، همونطور که زبانهای برنامهنویسیِ دیگهای هم برای نوشتن نرمافزار وجود دارن. حالا شاید شما یکی از اون جویندههایی هستین که فکر میکنه اسکوربوت سَرِش نمیاد. با این حال بردنِ چندتا لیموترش ضرری نداره. هسکل هم همینطور، حتی اگه تنها ابزارتون نیست، توسعهی نرمافزاریتون رو به کمکِ امنیتِ تایپی ارتقا میده. مشکلات و باگهایی که در یه نرمافزار پیش میان، اونقدر پیشوپاافتاده نیستن که سریع برطرف بشن. پس وقتی راههای بهتری برای حل اونطور مشکلات وجود دارن (نه تمام و کمال، ولی بهتر)، ارزش داره که روشون وقت بذارین.
لیمو شیرازیهاتون رو بذارین کنار بیاین پیشِ ما تو صفِ لیمو ترش!