این مقاله را میتوانید در مدت زمان 7 دقیقه مطالعه کنید منتشر شده در تاریخ: اسفند ۱۱ام, ۱۴۰۰ آخرین بروزرسانی: اسفند ۱۱ام, ۱۴۰۰
برنامهنویسی انواع مختلفی دارد. یعنی براساس ویژگیها و قابلیتهایی که زبانهای برنامهنویسی دارند میشود تقسیمشان کرد. دراصطلاح تخصصی، از پارادایمهای برنامهنویسی (Programming Paradigms) صحبت میشود. پارادایمها همان دستهها هستند که زبانهای برنامهنویسی با ویژگیهای مشترک را درون خودشان جای دادند.
زبانهای برنامهنویسی ممکن است در چند پارادایم قرار بگیرند. یعنی ممکن است یک زبان این امکان را داشته باشد که بشود با آن به چند شکل مختلف برنامهنویسی کرد. اگر بخواهم پارادایمهای مهم را نام ببرم، باید به پارادایم دستوری (Imperative programming)، پارادایم رویهای (Procedural programming)، برنامهنویسی یا پارادایم شیگرا (Object-Oriented Programming)، برنامهنویسی اعلانی ( Declarative programming) و برنامهنویسی یا پارادایم منطقی (Logic Programming) اشاره کنم. افزونبر پارادایمهایی که نام برده شد، پارادایم یا برنامهنویسی فانکشنال، تابعی یا تابع گرا (Functional) یکی از پارادایمهای اصلی و رایج در برنامهنویسی است.
در این مطلب قصد دارم شما را با برنامهنویسی یا پارادایم فانکشنال آشنا کنم. چون از مهمترین و کاربردیترین زبانهایی که در این پارادایم قرار میگیرد پایتون است، در عنوانی جداگانه دربارهی برنامهنویسی تابعگرا در پایتون نیز بحث شده است.
برنامهنویسی تابعی پارادایمی است که در آن همهچیز به شیوهی ریاضی محض نوشته میشود. برنامهنویسی فانکشنال نوعی از برنامهنویسی اعلانی هم هست. در برنامهنویسی تابعی (و اعلانی) تمرکز اصلی بر این است که «چه باید حل شود» درحالیکه در برنامهنویسی دستوری تمرکز اصلی بر «چگونه حلکردن» است.
در پارادایم فانکشنال همهچیز براساس توابع ریاضی نوشته میشود. به زبان دیگر، همهچیز بهصورت جملههای شرطی بیان میشود. اگر در برنامهنویسی دستوری مجموعهای از جملات دستوری دنبال هم میآیند و با اجرای آنها ساختار و وضعیت سایت مشخص میشود، در برنامهنویسی فانکشنال ساختاری درختی و شاخهای از توابع مقادیر را بهیکدیگر پیوند میدهند. Lisp, Python, Erlang, Haskell Clojure از معروفترین زبانهای برنامهنویسی تابعی هستند. زبانهای دیگری مثل #PHP, Katlin ,Java 8 and higher, C نیز قابلیت برنامهنویسی تابعگرا را تاحدودی دارند. برهمیناساس، زبانهای برنامهنویسی فانکشنال به دو دسته تقسیم میشوند:
Pure Functional Languages: زبانهایی که فقط با پارادایم تابعی سازگار هستند مثل زبان Haskell و نمیشود با آنها به پارادایمهای دیگر، مثلا دستوری، نوشت.
Impure Functional Languages: این زبانها علاوهبر پارادایم تابعگرا با پارادایم دستوری هم سارگاز هستند، مثل زبان Lisp.
زبان پایتون زبان مهمی است. چون زبانی است که در پیشرفت هوش مصنوعی و ماشین لرنینگ سهم داشته است و درآینده هم سهم قابلملاحظهای خواهد داشت. اگر علاقهمند هستید دربارهی تاریخچه هوش مصنوعی بیشتر بدانید، «هرآنچهکه باید درباره تاریخچهی هوش مصنوعی بدانید» را مطالعه کنید.
درکنار همهی مزیتهای این نوع از برنامهنویسی باید به معایب آنهم اشاره کرد:
همانطور که اشاره شد، زبان پایتون زبانی است فانکشنال. البته، پایتون بعضی از قابلیتها و ویژگیهای لازم برای برنامهنویسیهای دیگر را هم دارد. در پایتون همهچیز یک شئ (Object) است. تابعها هم مانند اعداد و حلقهها در پایتون شئ هستند. پس، میشود به این نتیجه رسید که هرکاری که در پایتون میشود با اعداد و حلقهها کرد با توابع هم شدنی است. البته، این نتیجهگیری چند استثنای کوچک نیز دارد. برای مثال، در پایتون با اپراتور + میشود دو شئ را بههم افزود. اما این اپراتور برای افزودن توابع بهیکدیگر تعریف نشده است.
در پایتون میشود یک متغیر را درقالب یک تابع تعریف کرد و با آن متغیر رفتاری مانند تابع داشت:
>>> def func(): ... print("I am function func()!") ... >>> func() I am function func()! >>> another_name = func >>> another_name() I am function func()!
همچنین در پایتون بهراحتی میشود مهمترین ویژگیهای برنامهنویسی فانکشنال را پیاده کرد: یک تابع را در قالب یک استدلال (Argument) به تابع دیگر منتقل کرد و یک تابع بهعنوان مقدار بازگشتی تابع دیگری فراخوانده شود. پایتون کار را برای اینکه بشود یک تابع را در درون تابع دیگری قرار داد بسیار راحت کرده و میانبری تعریف کرده است بهنام Decorator.
>>> def inner(): ... print("I am function inner()!") ... >>> def outer(function): ... function() ... >>> outer(inner) I am function inner()!
>>> def outer(): ... def inner(): ... print("I am function inner()!") ... ... # Function outer() returns function inner() ... return inner ... >>> function = outer() >>> function <function outer.<locals>.inner at 0x7f18bc85faf0> >>> function() I am function inner()! >>> outer()() I am function inner()!
اینها نمونههای سادهای هستند از کارهایی که با برنامهنویسی فانکشنال در پایتون، میشود انجام داد. کارهای پیچیدهتر به تابع و Iterableها در پایتون مربوط میشود. Iterable مجموعهای از دادههای قابلشمارش در پایتون است که میشود ازمیان اعضای آن انتخاب کرد. Iterable را تکرارگرها یا پیمایشگر ترجمه کردهاند. در سه حالت زیر میشود براساس یک تابع عضوی را از مجموعه انتخاب کرد یا مجموعه را محدود به اعضای مشخصی کرد یا حتی کل مجموعه را به یک متغیر تبدیل کرد.
map():
map(<f>, <iterable>)
filter():
filter(<f>, <iterable>)
reduce():
reduce(<f>, <iterable>)
۱. برنامه نویسی فانکشنال یا تابعی یا تابع گرا از پارادایمهای برنامهنویسی است.
۲. در زبانهای برنامهنویسی فانکشنال همهچیز با توابع ریاضی و عبارات شرطی بیان میشوند.
۳. زبان پایتون از زبانهای برنامهنویسی تابعی است. بههمیندلیل است که در آموزش پایتون علاوهبر بحثهای مربوط به توابع و اعداد و حلقهها، برنامه نویسی فانکشنال هم در سرفصلهای آموزشی گنجانده شده است.
برای نوشتن این محتوا از منابع زیر کمک گرفته شده است:
پایتون که برخی آن را پایتان (python) نیز میگویند یک زبان برنامه نویسی سطح بالا ،شئ گرا ، Open Source و تفسیری است که دارای دستورها و کدهای ساده و پویاست. زبان برنامه نویسی پایتون بسیار ساده تر از زبان های برنامه نویسی دیگر است. بوسیله پایتون ساخت برنامه های کاربردی به صورت ساده تر برای ما ممکن شد.
پایتون از سال 1991 ایجاد شد و از آن زمان و مخصوصا سال های اخیر توجه بسیاری از برنامه نویسان و کسانی که میخواهند با برنامه نویسی آشنا شوند را به خود جلب کرد . یکی از مهم ترین دلیل های توجه بسیار به این زبان برنامه نویسی دوست داشتنی کابردها و قابلیت های فراوان آن است :
ادامه...
پایتون که برخی آن را پایتان (python) نیز میگویند یک زبان برنامه نویسی سطح بالا ،شئ گرا ، Open Source و تفسیری است که دارای دستورها و کدهای ساده و پویاست. زبان برنامه نویسی پایتون بسیار ساده تر از زبان های برنامه نویسی دیگر است. بوسیله پایتون ساخت برنامه های کاربردی به صورت ساده تر برای ما ممکن شد.
پایتون از سال 1991 ایجاد شد و از آن زمان و مخصوصا سال های اخیر توجه بسیاری از برنامه نویسان و کسانی که میخواهند با برنامه نویسی آشنا شوند را به خود جلب کرد . یکی از مهم ترین دلیل های توجه بسیار به این زبان برنامه نویسی دوست داشتنی کابردها و قابلیت های فراوان آن است :
ادامه...
مهدیه اسماعیلی