برنامه نویسی تابعی که به اختصار FP نیز شناخته می شود، راهی برای ساختن نرم افزار با ایجاد توابع تمیز است. این فرآیند با مفاهیمی مانند موقعیت های مشترک و داده های متغیر در برنامه نویسی شی گرا در تضاد است.
زبان های کاربردی به جای جملات بر عبارات و اعلان ها تأکید می کنند. بنابراین، برخلاف سایر رویهها که به حالت محلی یا سراسری بستگی دارند، مقدار خروجی در برنامهنویسی تابعی تنها به آرگومانهای ارسال شده به تابع بستگی دارد.
توابع برنامه نویسی تابعی
- روش برنامه نویسی تابعی بر نتایج تمرکز می کند نه فرآیند.
- در این روش تاکید بر آن چیزی است که باید محاسبه شود.
- داده یکی از ویژگی های برنامه نویسی است.
- برنامه نویسی تابعی مسئله را به توابع تقسیم می کند.
- این روش مبتنی بر مفهوم توابع ریاضی است و از عبارات شرطی و بازگشتی برای انجام محاسبات استفاده می کند.
- برنامه نویسی تابعی از تکرار عبارات چرخه ای و عبارات شرطی مانند If-Else پشتیبانی نمی کند.
یادگیری چندین زبان برنامه نویسی (و مزایای آن)
تاریخچه برنامه نویسی تابعی
- اساس برنامه نویسی تابعی، حساب حساب لامبدا است. این نوع برنامه نویسی در دهه 1930 برای پیاده سازی، توصیف و برگرداندن توابع ایجاد شد.
- اولین زبان برنامه نویسی کاربردی LISP بود که توسط مک کارتی در سال 1960 توسعه یافت.
- در اواخر دهه 1970، محققان دانشگاه ادینبورگ ML (ML یا زبان متا) را تعریف کردند.
- در اوایل دهه 1980، زبان هوپ انواع مختلفی از داده های جبری را به معادلات و بازگشتی اضافه کرد.
- در سال 2004، زبان کاربردی اسکالا اختراع شد.
زبان های برنامه نویسی کاربردی
هدف همه زبان های برنامه نویسی تابعی تقلید از توابع ریاضی است، اما فرآیند محاسباتی اساسی در برنامه نویسی تابعی متفاوت است.
در اینجا برخی از مهم ترین و برجسته ترین زبان های برنامه نویسی کاربردی آورده شده است:
- هاسکل
- SML یا استاندارد ML (SML)
- کلوژور
- سنگ
- ارلنگ
- تمیز
- F شارپ (F #)
- ML / Lisp / Scheme
- XSLT
- SQL
- ریاضیات
اصطلاحات و مفاهیم اساسی در برنامه نویسی تابعی
داده های تغییر ناپذیر داده های ثابت به این معنی است که شما باید بتوانید به راحتی ساختارهای داده را به جای اصلاح ساختارهای موجود ایجاد کنید.
شفافیت مرجع برنامه های کاربردی باید طوری کار کنند که انگار برای اولین بار است. به این ترتیب متوجه خواهید شد که در حین اجرای برنامه چه اتفاقی افتاده یا نیفتاده و عوارض آن را در نظر خواهید گرفت. از نظر برنامه نویسی کاربردی، به این شفافیت مرجع می گویند.
دانلود را فراموش نکنید: برنامه نویسی جاوا اسکریپت از صفر تا صد (فیلم + pdf)
مدولار بودن طراحی مدولار بهره وری را افزایش می دهد. به این ترتیب، ماژول های کوچک را می توان به سرعت کدگذاری کرد و شانس استفاده مجدد آنها را افزایش داد. این قطعا به توسعه سریعتر برنامه منجر خواهد شد. جدای از آن، در این مورد ماژول ها را می توان به طور جداگانه آزمایش کرد و این به شما کمک می کند تا زمان صرف شده برای تست ماژول ها و اشکال زدایی را کاهش دهید.
پایداری Maintenance یک اصطلاح ساده است، به این معنی که برنامه نویسی کاربردی راحت تر نگهداری می شود زیرا لازم نیست نگران تغییر تصادفی چیزی خارج از یک تابع باشید.
عملکرد درجه یک “First-class Function” تعریف اشیا در زبان برنامه نویسی است که هیچ محدودیتی در استفاده از آنها وجود ندارد. بنابراین، ویژگی های درجه یک می توانند در هر نقطه از برنامه ظاهر شوند.
بسته شدن ملحفه یک عملکرد داخلی است که حتی پس از انجام عملکرد والدین نیز قابل دسترسی است.
توابع مرتبه بالاتر توابع مرتبه بالاتر یا توابع دیگری را به عنوان آرگومان دریافت می کنند یا آنها را به عنوان نتیجه یا خروجی برمی گردانند. توابع مرتبه بالاتر امکان اصلاح توابع یا به اصطلاح کاری را می دهند. این تکنیک در هر زمان یک تابع را به آرگومان های خود اعمال می کند، زیرا هر تابع یک تابع جدید را برمی گرداند که آرگومان بعدی را می پذیرد.
عملکرد خالص
تابع خالص تابعی است که ورودی های آن به عنوان ورودی اعلان می شوند و هیچ یک از این ورودی ها نباید مخفی شوند. خروجی های تابع نیز باید اعلام شوند. توابع خالص بر اساس پارامترهای خود کار می کنند. اگر تابع چیزی برگرداند مؤثر نیست. علاوه بر این، آنها توابع خروجی خالص مشابهی را برای پارامترهای داده شده ارائه می دهند.
مثال:
تابع خالص (a, b)
{
بازگشت a + b;
}
عملکردهای ناپاک
توابع ناخالص دقیقا برعکس توابع خالص عمل می کنند. این توابع دارای ورودی یا خروجی مخفی هستند و به همین دلیل به آنها ناخالص می گویند. توابع ناخالص نمی توانند به طور جداگانه استفاده یا آزمایش شوند زیرا وابسته هستند.
مثال:
int z;
تابع notPure () {
z = z + 10;
}
تابع ترکیب ترکیب یک تابع به معنای ترکیب 2 یا چند تابع برای ایجاد یک تابع جدید است.
ایالت های مشترک حالت ها یا حالت های عمومی مفهوم مهمی در برنامه نویسی OOP (برنامه نویسی شی گرا) هستند و اساساً ویژگی هایی را به اشیا اضافه می کنند. به عنوان مثال، اگر هارد دیسک یک شی است، ظرفیت ذخیره سازی و اندازه دیسک را می توان به عنوان ویژگی اضافه کرد.
اثرات جانبی عوارض جانبی هر گونه تغییر در شرایطی است که خارج از چیزی به نام یک تابع رخ می دهد. بزرگترین هدف همه زبان های برنامه نویسی به حداقل رساندن عوارض جانبی با جداسازی آنها از بقیه کدهای نرم افزار است. در برنامه نویسی تابعی، مهم است که عوارض جانبی را از بقیه منطق برنامه نویسی خود حذف کنید.
حتما بخوانید: درس های برنامه نویسی رایگان ما در اینجا
مزایای برنامه نویسی تابعی
- برنامه نویسی کاربردی به شما امکان می دهد از مشکلات گیج کننده و خطاهای کد جلوگیری کنید.
- تست و انجام تست و اشکال زدایی ماژول در برنامه نویسی تابعی آسان تر است.
- امکان گسترش کد داغ و تحمل خطا وجود دارد.
- برنامه نویسی عملکردی مدولار بهتری را با کد کوتاه تر ارائه می دهد.
- بهره وری توسعه دهندگان را افزایش می دهد.
- از توابع تو در تو پشتیبانی می کند.
- ساختارهای کاربردی مانند Lazy Map، Lists و غیره را ارائه می دهد.
- امکان استفاده کارآمد از حساب حساب دیفرانسیل و انتگرال Lambda را فراهم می کند.
محدودیت های برنامه نویسی تابعی
- پارادایم برنامه نویسی تابعی آسان نیست، بنابراین درک آن برای مبتدیان دشوار است.
- از آنجایی که بسیاری از اشیاء در فرآیند کدگذاری دخیل هستند، نگهداری از آنها دشوار است.
- به تمسخر (نوعی تکنیک آزمایش) و تنظیمات محیطی گسترده نیاز دارد.
- استفاده مجدد از آن بسیار پیچیده است و نیاز به بازسازی مداوم دارد.
- ممکن است اشیا مشکل را به درستی نمایش ندهند.
دانلود: دانلود رایگان از صفر تا صد آموزش جی کوئری (فیلم + پی دی اف)
مقایسه برنامه نویسی تابعی با برنامه نویسی شی گرا
برنامه نویسی شی گرا(برنامه نویسی شی گرا) |
برنامه نویسی تابعی(برنامه نویسی کاربردی) |
از داده های متغیر استفاده می کند. |
از داده های ثابت استفاده می کند. |
مدل برنامه نویسی امری به شرح زیر است. |
در زیر مدل برنامه نویسی اعلانی آورده شده است. |
این بر روی “چگونه برنامه نویسی خود را انجام می دهید” تمرکز می کند. |
بر “آنچه در برنامه انجام می دهید” تمرکز می کند. |
از برنامه نویسی موازی پشتیبانی نمی کند. |
پشتیبانی از برنامه نویسی موازی |
این روش می تواند عوارض زیادی ایجاد کند. |
عملکرد آن عوارض جانبی ندارد. |
فرآیند کنترل جریان با استفاده از حلقه ها و دستورات شرطی انجام می شود. |
کنترل جریان با فراخوانی یک تابع و فراخوانی تابع با بازگشت انجام می شود. |
ترتیب اجرای عملگرها مهم است. |
ترتیب اجرای عملگرها خیلی مهم نیست. |
فقط از “Abstract over Dat” پشتیبانی می کند. |
پشتیبانی از “انتزاع بیش از داده” و “انتزاع بیش از رفتار”. |
آموزش برنامه نویسی آنلاین (فقط 11 سایت واقعا رایگان)
نتیجه
- برنامه نویسی تابعی یا FP راهی برای ساختن نرم افزار بر اساس برخی اصول اولیه است.
- مفاهیم برنامه نویسی تابعی بر نتایج تمرکز دارند نه فرآیند.
- هدف همه زبان های برنامه نویسی تقلید از توابع ریاضی است.
- شناخته شده ترین زبان های برنامه نویسی کاربردی عبارتند از Haskell، SML، Clojure، Scala و Erlang.
- تابع خالص تابعی است که ورودی های آن به عنوان ورودی اعلان می شوند و هیچ کدام نباید مخفی شوند. خروجی ها نیز به عنوان خروجی اعلام می شوند.
- دادههای ثابت به این معنی است که شما میتوانید بهراحتی بهجای اصلاح ساختارهای دادهای موجود، ساختارهای داده ایجاد کنید.
- برنامه نویسی کاربردی به شما امکان می دهد از مشکلات و خطاهای گیج کننده در کد جلوگیری کنید.
- کدهای عملکردی آسان نیستند، بنابراین درک آنها برای مبتدیان دشوار است.
- برنامه نویسی تابعی از داده های تغییرناپذیر استفاده می کند، اما برنامه نویسی شی گرا از داده های اصلاح شده استفاده می کند.
حتما بخوانید: کدام زبان برنامه نویسی برای یادگیری بهتر است؟ (به روز رسانی 2022)