در اواخر دهه 1980، زبانها و پارادایمهای برنامه نویسی جدیدی اختراع شد. گروهی از محققان شروع به توسعه یک زبان برنامه نویسی با عنوان Haskell که یک زبان برنامه نویسی کاملا تابعی است، کردند. سرانجام این زبان برنامه نویسی در سال 1990 منتشر شد. که نام این زبان بر اساس نام یک ریاضیدان آمریکایی با نام Haskell Brooks Curry گرفته شده است.
Haskell یک زبان برنامه نویسی مدرن، استاندارد، کاملا تابعی و non-strict (با قوانین آسان) است. این زبان به طور ویژه برای رسیدگی به طیف گسترده ای از برنامه ها، از عددی گرفته تا نمادین طراحی شده است. دارای سینتکسی رسا و معماری داخلی بسیار غنی است.
Haskell یک زبان برنامه نویسی کاملاً تابعی و non-strict (با قوانین آسان) است. این زبان به ویژه برای طراحی برنامه های کاربردی تولید صنعتی در مقیاس بزرگ طراحی شده است. این زبان به دلیل معماری غنی آن شهرت زیادی دارد. برنامه های هسکل به صورت توابع ریاضی نوشته می شوند.
ویژگی های haskell
- یادگیری آسان : درک زبانهای برنامه نویسی تابعی آسان تر است. زبانهای برنامه نویسی تابعی عموماً به راحتی قابل درک هستند اما اجرای آنها دشوار است.
- قابلیت استفاده مجدد از کدها : Haskell از ویژگی چندریختی(Polymorphism) پشتیبانی می کند.
- مدیریت حافظه : در زبانی مانند c مدیریت حافظه با استفاده از کلمه کلیدی malloc یا calloc انجام می شود، برنامه نویس باید پس از استفاده حافظه را آزاد کند. اما در زبانهای برنامه نویسی تابعی مانند Haskell برنامه نویس از این بار رها می شود و مدیریت حافظه به صورت اتوماتیک توسط هسته زبان انجام میشود. در این زبان برنامه نویسی، فضای ذخیره سازی اختصاص داده میشود، به طور ضمنی مقداردهی اولیه میشود و به طور خودکار توسط Garbage Collector حافظه آزاد میشود.
- Statically-typed : یک زبان برنامه نویسی با قابلیت Statically-type زبانی است که در آن انواع متغیرها در زمان کامپایل شناخته می شوند. این ویژگی به برنامه نویسان در شناسایی خطاها در زمان کامپایل کمک می کند. همچنین به کاهش پیچیدگی برنامهها در مقیاس بزرگ کمک می کند.
- Purely-Functional : این زبان دارای یک سبک خاص برای ساختن برنامه ای است که تمام محاسبات را به عنوان توابع ریاضی در نظر می گیرد.
- Lazy-Evaluation : زبانهای برنامه نویسی تابعی مانند Haskell از ارزیابی آرگومان ها در توابع صرف نظر می کند. این کارایی کد را افزایش می دهد که به برنامه نویسها کمک می کند تا برنامههای خیلی خوبی بنویسند.
- Type-Inference : Type-Inference، افزونگی کدهایی را که به صراحت برای هر نوع برنامه نوشته می شود، را حل می کند.
- Multithreading : Thread ها پردازشگرهای مجازی هستند که مراحل مدیریت/پردازش را در یک برنامه انجام می دهند. زبان با ویژگی Single threading به این معنی است که در هر زمان فقط میتواند یک task انجام دهد. Haskell یک زبان Multi-threaded است که به آن امکان اجرای موازی دستورات در برنامه را می دهد. Multi-threading قدرت پردازش اجرای یک زبان برنامه نویسی را افزایش می دهد.
چرا از haskell استفاده کنیم؟
Haskell ویژگی های مختلفی را ارائه می دهد مانند:
- بهره وری برنامه نویس بالاتر
- کد کوتاه تر، تمیزتر و قابل نگهداری.
- قابلیت اطمینان بالاتر
- قدرت کامپایل بالاتر
عمر بیشتر محصولات نرم افزاری بزرگ صرف طراحی و نگهداری می شود، زیرا زبان های برنامه نویسی تابعی راحتتر نگهداری می شوند.
چگونه کد haskell را اجرا کنیم؟
کامپایلر Haskell Glasgow (GHC) برای اجرای کد هسکل استفاده می شود. ویژگی های آن عبارتند از:
- یک محیط چند پلتفرمی(cross-platform) را فراهم می کند.
- از افزونه ها، کتابخانه ها و بهینه سازی های متعددی پشتیبانی می کند که به فرآیند تولید و اجرای کد کمک می کند.
مثال : نوشتن برنامهای در Haskell برای چاپ یک پیغام
main :: IO ()
main = putStrLn "Hello! Welcome to GeeksforGeeks"