زبان های برنامه نویسی Functional (بخش اول)
برنامه نویسی Functional چیست؟
اگر پیش زمینهای در ریاضیات داشته باشید، برای یادگیری Functional Programming جلوتر هستید. این موضوع به این خاطر است که برنامه نویسیِ functional عمل محاسبات را با توابع ریاضی انجام میدهد. اگر پیش زمینهای در ریاضیات نداشته باشید، این مبحث میتواند باعث گیج شدن شما شود. برنامه نویسی functional توابع و دادهها مانند ثوابت برخورد میکند. شما داده را به تابع رد میکنید و این تابع میتواند داده را تغییر دهد یا برخی از انواع داده را بازگرداند. در برنامه نویسی functional خودِ تابع نباید داده اصلی یا state برنامه را تغییر دهد. در اینجا شباهتی با فلسفه یونیکس وجود دارد که هر برنامه حداقل باید یک کار را به درستی انجام دهد. یک تابع نباید با همه قسمتهای برنامه درگیر باشد بلکه باید ورودیهایش را گرفته و به شما یک خروجی دهد. در حالت ایده آل توابع باید هر زمانی که ممکن باشد در برنامه نویسی functional به صورت pure باشند. این موضوع به این معنیست که تابع با ورودی داده شده همیشه خروجیِ یکسان خواهد داد.
برنامه نویسی Functional و برنامه نویسی شی گرا
برنامه نویسی functional مثل یک کوچ دراماتیک از چیزی مثل برنامه نویسی شی گراست. در برنامه نویسی شی گرا، شما اغلب یکشی پایه با متدهای متنوع که برای تغییر داده یا وضعیت بخشی از پروژه به آن اختصاص یافته دارید. یک متد ممکن است حتی داده یا وضعیت را تغییر دهد، اگر به صراحت اعلان نشده باشد. در برنامههای کاربردی و عملی، گاهی اوقات این موضوع با عقل جور در میآید. این موضوع نگهداری برنامهها را سختتر میکند چرا که همیشه مشخص نیست چه چیزی state یا داده را تغییر میدهد. برنامه نویسی functional اساساً در محیطهای آکادمیک استفاده میشود اما میتواند به جلوگیری از این مشکلات کمک کند.
۱- JavaScript
برخی از زبانهای برنامه نویسی اجازه برنامه نویسی functional را میدهند در حالی که برخی دیگر ممکن است به این نوع برنامه نویسی تشویق کنند یا حتی وادار به این نوع برنامه نویسی نمایند. جاوا اسکریپت در دسته اول جای میگیرد. در حالی که شما میتوانید از نمونههای برنامه نویسی functional در جاوا اسکریپت استفاده کنید، به راحتی میتوانید از رویکردشی گرایی هم استفاده کنید. با در نظر گرفتن جمله قبل، نمونههای برنامه نویسی functional زیادی در جاوا اسکریپت ساخته شده است. برای مثال توابع higher-order. اینها توابعی هستند که میتوانند توابع دیگر را به عنوان آرگومان بپذیرند. جاوا اسکریپت تعدادی تابع دیگر دارد که با آرایهها کار میکنند. مانند map()، reduce()، filter() و دیگر توابع که همگی توابع higher-order هستند. این به شما اجازه میدهد تا سریعاً و با استفاده از یک آرایه چیزها را زنجیر کنید. در حالی که نسخههای اولیه جاوا اسکریپت مشکلاتی با تغییر ناپذیری داشتند، ورژن های تازهتر استاندارد ECMAScript این مشکلات را رفع کرده است. به جای کلمه کلیدی catch-all Var برای تعریف کردن متغیرها، اکنون کلمات کلیدی const و let استفاده میشوند. اولی به شما اجازه میدهد تا ثوابت را تعریف کنید همانطور که از نامش هم مشخص است و دومی یعنی کلمه کلیدی let حوزه یک متغیر را محدود به تابعی که در آن تعریف شده (اعلان شده) میکند.