در علوم کامپیوتر، برنامه نویسی تابعی ( به انگلیسی: Functional programming ) یک رویکرد برنامه نویسی است که در آن برنامه ها توسط محاسبه و ترکیب توابع ساخته می شوند. برنامه نویسی تابعی یک رویکرد برنامه نویسی اعلانی است که در آن تعریف توابع درخت هایی از عبارت ها هستند که هر کدام از این عبارات به جای یک توالی از عبارات دستوری که وضعیت برنامه را تغییر می دهند؛ صرفاً یک مقدار برمی گردانند.
در برنامه نویسی تابعی، توابع به عنوان شهروندان درجه یک تلقی می شوند، این بدان معنی است که توابع را می توان به نام ها ( از جمله شناسه های محلی ) مقید کرده، به عنوان آرگومان ارسال کرده و یا از توابع دیگر بازگرداند. دقیقاً مانند هر نوع داده دیگر. این ویژگی این امکان را فراهم می کند که برنامه ها به شکل اعلانی و ترکیب پذیر نوشته شوند، به طوری که که توابع کوچک به صورت پودمانی با هم ترکیب می شوند.
برنامه نویسی تابعی گاهی به عنوان مترادفی برای برنامه نویسی تابعی محض در نظر گرفته می شود. این نوع برنامه نویسی زیرمجموعه ای از برنامه نویسی تابعی است که در آن تمام توابع به عنوان توابع ریاضی و قطعی یا تابع سره تلقی می شوند. هنگامی که یک تابع سره با مجموعهٔ آرگومان های ثابت فراخونی می شود، همیشه همان نتیجه را برمی گرداند و نمی تواند تحت تأثیر هیچ گونه حالت قابل تغییر یا اثر جانبی دیگری باشد. این برخلاف توابع غیرسره است که معمولاً در برنامه نویسی دستوری استفاده می شود و می تواند اثرات جانبی داشته باشد ( مانند تغییر وضعیت برنامه یا گرفتن ورودی از یک کاربر ) . طرفداران برنامه نویسی تابعی محض ادعا می کنند که با محدود کردن اثر جانبی، برنامه ها اشکالات کمتری داشته؛ همچنین اشکال زدایی و تست نرم افزار آسان تر می شود. از سوی دیگر استفاده از این رویکرد برای دستیابی به درستی یابی صوری نرم افزار مناسب تر است. [ ۱] [ ۲]
منشأ برنامه نویسی تابعی ریشه در تحقیقات دانشگاهی دارد و از حساب لامبدا تکامل پیدا کرده است. حساب لاندا یک سیستم صوری محاسبات است که صرفاً مبتنی بر توابع می باشد. برنامه نویسی تابعی به شکل تاریخی کمتر از برنامه نویسی دستوری محبوب بوده است. با این حال بسیاری از زبان های تابع گرا امروزه در صنعت و آموزش دیده می شوند. از جمله لیسپ معمولی، اسکیم، کلوژر ، زبان برنامه نویسی ولفرام، [ ۳] راکت ، ارلنگ، اوکمل، هسکل، و F#. برنامه نویسی تابع گرا همچنین برای برخی از زبان های خاص منظوره موفق نقش کلیدی ایفا می کند. مانند R در آمار، J ، K و Q در آنالیز مالی، و XQuery / XSLT برای XML. زبان های اعلانی خاص منظوره مانند SQL و Lex / Yacc از برخی عناصر برنامه نویسی تابع گرا استفاده می کنند. مانند ممنوع کردن مقادیر قابل تغییر. همچنین بسیاری از زبان های برنامه نویسی، برنامه نویسی به سبک تابع گرا را پشتیبانی کرده و یا ویژگی های تابع گرایی پیاده سازی کرده اند. مانند C++11 ، کاتلین، [ ۴] پرل، [ ۵] پی اچ پی، [ ۶] پایتون، [ ۷] و اسکالا.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفدر برنامه نویسی تابعی، توابع به عنوان شهروندان درجه یک تلقی می شوند، این بدان معنی است که توابع را می توان به نام ها ( از جمله شناسه های محلی ) مقید کرده، به عنوان آرگومان ارسال کرده و یا از توابع دیگر بازگرداند. دقیقاً مانند هر نوع داده دیگر. این ویژگی این امکان را فراهم می کند که برنامه ها به شکل اعلانی و ترکیب پذیر نوشته شوند، به طوری که که توابع کوچک به صورت پودمانی با هم ترکیب می شوند.
برنامه نویسی تابعی گاهی به عنوان مترادفی برای برنامه نویسی تابعی محض در نظر گرفته می شود. این نوع برنامه نویسی زیرمجموعه ای از برنامه نویسی تابعی است که در آن تمام توابع به عنوان توابع ریاضی و قطعی یا تابع سره تلقی می شوند. هنگامی که یک تابع سره با مجموعهٔ آرگومان های ثابت فراخونی می شود، همیشه همان نتیجه را برمی گرداند و نمی تواند تحت تأثیر هیچ گونه حالت قابل تغییر یا اثر جانبی دیگری باشد. این برخلاف توابع غیرسره است که معمولاً در برنامه نویسی دستوری استفاده می شود و می تواند اثرات جانبی داشته باشد ( مانند تغییر وضعیت برنامه یا گرفتن ورودی از یک کاربر ) . طرفداران برنامه نویسی تابعی محض ادعا می کنند که با محدود کردن اثر جانبی، برنامه ها اشکالات کمتری داشته؛ همچنین اشکال زدایی و تست نرم افزار آسان تر می شود. از سوی دیگر استفاده از این رویکرد برای دستیابی به درستی یابی صوری نرم افزار مناسب تر است. [ ۱] [ ۲]
منشأ برنامه نویسی تابعی ریشه در تحقیقات دانشگاهی دارد و از حساب لامبدا تکامل پیدا کرده است. حساب لاندا یک سیستم صوری محاسبات است که صرفاً مبتنی بر توابع می باشد. برنامه نویسی تابعی به شکل تاریخی کمتر از برنامه نویسی دستوری محبوب بوده است. با این حال بسیاری از زبان های تابع گرا امروزه در صنعت و آموزش دیده می شوند. از جمله لیسپ معمولی، اسکیم، کلوژر ، زبان برنامه نویسی ولفرام، [ ۳] راکت ، ارلنگ، اوکمل، هسکل، و F#. برنامه نویسی تابع گرا همچنین برای برخی از زبان های خاص منظوره موفق نقش کلیدی ایفا می کند. مانند R در آمار، J ، K و Q در آنالیز مالی، و XQuery / XSLT برای XML. زبان های اعلانی خاص منظوره مانند SQL و Lex / Yacc از برخی عناصر برنامه نویسی تابع گرا استفاده می کنند. مانند ممنوع کردن مقادیر قابل تغییر. همچنین بسیاری از زبان های برنامه نویسی، برنامه نویسی به سبک تابع گرا را پشتیبانی کرده و یا ویژگی های تابع گرایی پیاده سازی کرده اند. مانند C++11 ، کاتلین، [ ۴] پرل، [ ۵] پی اچ پی، [ ۶] پایتون، [ ۷] و اسکالا.
wiki: برنامه نویسی تابعی