زبان های برنامه نویسی Functional (بخش دوم)
۲- Python
مانند جاوا اسکریپت، پایتون زبان برنامه نویسی تعمیم یافتهای است که با آن میتوانید به هر تعداد که خواستید نمونه برنامه نویسی بسازید. البته پایتون هم معایب خودش را دارد اما مشکلی با برنامه نویسیِ functional ندارد. حتی در مستندات رسمی پایتون مقدمهای در مورد برنامه نویسیِ functional وجود دارد. برای شروع، در اینجا هم توابعی مانند ()map()، filter()، reduce و توابع مشابهی که در بالا به آن اشاره کردیم در اینجا هم وجود دارند. مانند جاوا اسکریپت اینها توابع higher-order هستند که دیگر توابع را به عنوان آرگومان میپذیرند. در پایتون مزایای برنامه نویسی functional در قالب کلمه کلیدی lambda ظهور پیدا میکند. شما میتوانید از عبارت lambda به چند طریق استفاده کنید. یکی از روشهای استفاده از آن برای کوتاهتر کردن نوشتنِ توابعِ ساده است. مزیت اصلی عبارات lambda زمانی است که به عنوان توابع بی نام استفاده شوند. توابع بی نام در جاوااسکریپت و دیگر زبانهای برنامه نویسی که در ادامه مقاله میآید، استفاده میشوند. این توابع بخصوص زمانی خوش دست هستند که با توابع higher-order به کار روند چرا که میتوانید سر وقت تعریفشان کنید. بدون توابع بی نام، شما باید با کوچکترین تغییر، توابع را از نو تعریف کنید، مانند توابع سفارشی.
۳- Clojure
برخلاف جاوااسکریپت و پایتون، clojure ممکن است نام دهان پر کنی نباشد حتی در بین برنامه نویسان. در صورتی که با این نام آشنا نیستید، clojure زبان محلیِ زبان برنامه نویسیِ Lisp میباشد که به اواخر دهه پنجاه میلادی بر میگردد. این اتفاق(functional شدنِ این زبان) از راه خاصی انجام شد که برای برنامه نویسیِ functional عالی است. مانند دیگر زبانهای برنامه نویسی محلیِ clojure ،Lisp با کد، مانندِ داده برخورد میکند. این بدان معنیست که کد میتواند به طور موثری خودش را تغییر دهد. بازهم برخلاف دیگر زبانهای محلیِclojure ،Lisp روی پلتفرم جاوا اجرا میشود و به بایت کدهای JVM کامپایل میشود. این موضوع به این معنیست که میتواند با کتابخانههای جاوا کار کند، حال چه به زبان clojure نوشته شده باشند یا نه. برخلاف زبانهای قبلی در لیستِ بالا که به آنها اشاره شد، clojure از ابتدا زبان برنامه نویسی functional بوده است. این یعنی میتواند هر زمان که ممکن بود تغییرناپذیر شود، خصوصاً درون ساختمان دادهها. clojure انتظار ندارد که تمام برنامهها از نظر ریاضی قابل اثبات باشند، اما به استفاده از توابع خالص، هر زمان که ممکن بود تشویق میکند.