سلام دوستان. امروز میخوایم در مورد یه سبک برنامه نویسی صحبت کنیم که بهش میگن "برنامه نویسی تابعی" (Functional Programming). شاید اسمش یکم پیچیده به نظر برسه، ولی خیالتون راحت، سعی میکنم خیلی ساده و روون توضیح بدم.
برنامه نویسی تابعی یه جور روش فکر کردن به برنامه نویسیه. به جای اینکه به برنامه به عنوان یه سری دستورالعمل نگاه کنیم (که این دستورالعمل ها متغیرها رو تغییر میدن و یه وضعیتی رو به یه وضعیت دیگه تبدیل میکنن)، به برنامه به عنوان یه سری "تابع" نگاه میکنیم. هر تابع یه ورودی میگیره و یه خروجی میده، و هیچ چیزی رو خارج از خودش تغییر نمیده.
به عبارت دیگه، مثل یه ماشین حساب میمونه: یه سری عدد بهش میدین (ورودی)، یه سری عملیات انجام میده، و یه جواب بهتون میده (خروجی). ماشین حساب کاری به بقیه جاهای دنیا نداره، فقط کار خودش رو میکنه.
برنامه نویسی تابعی یه سری مزیت های خوب داره:
چند تا مفهوم مهم توی برنامه نویسی تابعی وجود داره که باید باهاشون آشنا بشین:
بیایید یه مثال خیلی ساده رو با هم بررسی کنیم. فرض کنید میخوایم یه لیست از اعداد رو داشته باشیم و همه اونها رو ضربدر ۲ کنیم. توی برنامه نویسی معمولی (imperative programming) شاید اینطوری عمل کنیم:
numbers = [1, 2, 3, 4, 5]
new_numbers = []
for number in numbers:
new_numbers.append(number * 2)
print(new_numbers) # Output: [2, 4, 6, 8, 10]
اما توی برنامه نویسی تابعی میتونیم از یه تابع مرتبه بالاتر به اسم map
استفاده کنیم:
numbers = [1, 2, 3, 4, 5]
new_numbers = list(map(lambda x: x * 2, numbers))
print(new_numbers) # Output: [2, 4, 6, 8, 10]
توی این مثال، lambda x: x * 2
یه تابع کوچیکه که هر عددی رو ضربدر ۲ میکنه. تابع map
این تابع رو روی تک تک اعضای لیست numbers
اعمال میکنه و یه لیست جدید از جواب ها رو برمیگردونه.
یه مثال دیگه: فرض کنید میخوایم اعدادی که بزرگتر از ۲ هستن رو از یه لیست جدا کنیم.
numbers = [1, 2, 3, 4, 5]
filtered_numbers = list(filter(lambda x: x > 2, numbers))
print(filtered_numbers) # Output: [3, 4, 5]
توی این مثال، lambda x: x > 2
یه تابع کوچیکه که بررسی میکنه آیا یه عدد بزرگتر از ۲ هست یا نه. تابع filter
این تابع رو روی تک تک اعضای لیست numbers
اعمال میکنه و فقط اونهایی که شرط رو برآورده میکنن رو برمیگردونه.
برای اینکه بهتر متوجه بشین، بیایید یه مقایسه کوچیک بین برنامه نویسی تابعی و برنامه نویسی دستوری داشته باشیم:
ویژگی | برنامه نویسی دستوری | برنامه نویسی تابعی |
---|---|---|
نحوه تفکر | تغییر وضعیت (Changing State) | ارزیابی توابع (Evaluating Functions) |
تغییر متغیرها | مجاز | ممنوع (یا محدود) |
تاثیرات جانبی | رایج | اجتناب |
تست کردن | دشوارتر | آسان تر |
برنامه نویسی تابعی برای خیلی از پروژه ها مناسبه، به خصوص:
البته، این به این معنی نیست که باید همیشه از برنامه نویسی تابعی استفاده کنین. بعضی وقت ها، برنامه نویسی دستوری میتونه ساده تر و کارآمدتر باشه. بهترین کار اینه که با هر دو سبک آشنا باشین و بتونین بسته به نیاز پروژه تون، بهترین روش رو انتخاب کنین. در واقعیت، اکثر برنامه های مدرن ترکیبی از هر دو سبک هستن!
برنامه نویسی تابعی یه سبک برنامه نویسی قدرتمنده که به شما کمک میکنه کدهای خواناتر، قابل تست تر و قابل استفاده مجدد بنویسین. شاید اولش یکم گیج کننده به نظر برسه، ولی با تمرین و تکرار، حتما بهش عادت میکنید. سعی کنین کم کم از مفاهیم برنامه نویسی تابعی توی پروژه هاتون استفاده کنین و از مزایاش بهره مند بشین. یادتون باشه تمرین کلیدی موفقعیت است!
امیدوارم این مقاله تونسته باشه بهتون یه دید کلی در مورد برنامه نویسی تابعی بده. موفق باشید!
برنامه نویسی تابعی، Functional Programming، توابع خالص، Pure Functions، تغییر ناپذیری، Immutability، توابع مرتبه بالاتر، Higher-Order Functions، بازگشت، Recursion، برنامه نویسی دستوری، Imperative Programming.
امتیاز شما به این مطلب
امتیاز: 5 از 5 (مجموع 1 رای)
اولین نفری باشید که در مورد این مقاله نظر می دهید!
techfeed.ir© 2024 All rights reserved