اهمیت برنامه‌نویسی تابعی در پایتون - مصاحبه با Steven Lott

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 22 تیر 1397
دسته بندی ها : پایتون

پایتون در حال حاضر یکی از محبوب‌ترین زبان‌های برنامه‌نویسی در دنیا است. دلیل اصلی این محبوبیت مربوط به سادگی، سریع بودن و استفاده در پروژه‌های مختلف توسعه نرم‌افزار بوده است. اگرچه پایتون یک زبان برنامه‌نویسی شئ‌گرا است اما از پارادایم‌های دیگر برنامه‌نویسی مانند برنامه‌نویسی تابعی پشتیبانی می‌کند. در این پارادایم، توابع همه چیز مربوط به یک برنامه می‌شود. استفاده از این پارادایم به دلیل اجازه دادن برای برنامه‌نویسی موازی و کدنویسی بدون خطا، کارایی بسیاری را به شما می‌بخشد.

ما به تازگی با Steven Lott یکی از برنامه‌نویسان حرفه‌ای پایتون و نویسنده چندین کتاب در این حوضه صحبت کرده‌ایم. Steven در رابطه با پایتون مدرن و شیوه تطبیق یافتن زبان با برنامه‌نویسی تابعی برای‌مان می‌گوید. همچنین وی در این زمینه کتابی با عنوان Functional Python Programming نوشته که خواندن آن خالی از لطف نیست. 

موارد کلیدی در این مصاحبه:

  • چرا باید پایتون را یاد بگیریم؟ یکی از دلایلی که اکثر توسعه‌دهندگان به سراغ پایتون می‌رون ساده بودن آن است. با استفاده از آن شما می‌توانید به صورت خلاصه، اپلیکیشن‌های کاملی را ایجاد کنید. برای مثال، دانشمندان داده پایتون را به این دلیل ترجیح می‌دهند که می‌توانند ابزارهای آنالیز پیشرفته را با استفاده از توابع ساده ایجاد کرده و نتایج مفیدی را دریافت کنند. 
  • دلیل استفاده از برنامه‌نویسی تابعی چیست؟ قالب‌های مربوط به پارادایم برنامه‌نویسی تابعی، پایه‌ای بسیار عالی برای توسعه‌دهندگانی است که قصد ایجاد اپلیکیشن با استفاده از معماری Serverless را دارند. 
  • اما پایتون ذاتا یک زبان تابعی نیست. اگرچه برنامه‌نویسی شئ‌گرا در قلب این زبان قرار دارد، پایتون می‌تواند توابع سطح بالا و ویژگی‌های دیگر مربوط به برنامه‌نویسی تابعی را ایجاد کند. پایتون ۳ این کار را حتی آسان‌تر کرده است.

مصاحبه کامل

- پایتون یکی از بهترین زبان‌های برنامه‌نویسی است. ۳ ویژگی پایتون که باعث شده برنامه‌نویسان عاشق آن باشند را نام ببرید.

  • علاقه برنامه‌نویسان به پایتون در قدم اول ممکن است به دلیل این باشد که پایتون به آن‌ها اجازه نوشتن برنامه‌های عظیم را در قالب کدنویسی با حجم کم می‌دهد. 
  • وجود کتاب‌خانه‌های بسیار زیاد برای پایتون و جامعه توسعه‌دهنده بزرگ یکی دیگر از دلایل اصلی رشد پایتون است.
  • بسیاری دیگر از مردم پایتون را به این دلیل دوست دارند که موانع زیادی برای نوشتن پایتون وجود ندارد: تنها کافی است آن را دانلود کرده و شروع به کار کنید.

شما برای بیشتر از یک دهه است که مشغول کار با پایتون هستید. تجربه شما در استفاده از پایتون به عنوان ابزار اصلی برای توسعه چه بوده است؟

در طی ۴۰ سال تجربه کار برنامه‌نویسی، من از زبان‌های مختلفی استفاده کرده‌ام. در این مدت متوجه شدم که پایتون بسیار کارآمد است. یک تیم می‌توانند اپلیکیشن‌های مبتنی بر میکروسرویس را با آن ایجاد کرده و گسترش دهند. دانشمندان داده می‌توانند ابزارهای آنالیز پیچیده را با استفاده از توابع ساده‌ای ایجاد کرده و درگیر پیچیدگی کامپایلر و محیط توسعه نشوند. 

زمانی که پایتون ۳ منتشر شد، نظرات مخالف بسیاری برای اینکه پایتون یک زبان برنامه‌نویسی تابعی باشد وجود داشت. چگونه پایتون از آن به بعد پیشرفت کرد؟ 

براساس هسته اصلی، پایتون یک زبان برنامه‌نویسی شئ‌گرا است. بنابراین برخی از ویژگی‌های برنامه‌نویسی تابعی در آن پیاده‌سازی نشده است. یکی از ابزارهای اصلی برنامه‌نویسی تابعی، ایجاد توابع سطح بالا است که می‌توانیم آن را در برنامه‌های پایتون نیز مشاهده کنیم. استفاده بیشتر از توابع سازنده در پایتون ۳ باعث شد که برنامه‌نویسی تابعی در پایتون بیشتر مورد استفاده قرار بگیرد. برخی از برنامه‌های پایتون هیبریدی و چندگانه هستند، در آن‌ها از تلفیق برنامه‌نویسی شئ‌گرا و تابعی استفاده شده است. برای اینکه چنین موضوعی را به صورت عملی مشاهده کنید نگاهی به mypy بیاندازید. 

برای یک توسعه‌دهنده که پارادایم برنامه‌نویسی تابعی را برای اولین بار انتخاب می‌کند، چه پیش‌نیازهایی لازم دارد؟

برنامه‌نویسی تابعی بسیار به ایده‌های ریاضیات در توابع و ترکیب توابع مشابهت دارد. بنابراین داشتن دانش پایه از برنامه‌نویسی بسیار مهم است.  برای برنامه‌نویسانی که در حال حاضر روی برنامه‌نویسی رویه‌ای کار می‌کنند، درک کردن مقدمات شئ‌گرایی نیز کمک کننده خواهد بود.

آیا می‌توانید در رابطه با برنامه‌نویسی تعاملی تابعی و شیوه کمک کردن آن در پایتون به پیاده‌سازی معماری‌های مدرنی مانند Cloud Native و Serverless را توضیحاتی ارائه دهید؟

ایده اصلی برنامه‌نویسی Serverless -مجموعه‌ای از توابع ایزوله شده- به زیبایی با پارادایم برنامه‌نویسی تابعی همخوان است. پردازش در این حالت عموما همراه با توابعی که منتظر ورودی‌هایی هستند، بی‌وضعیت است. ایده اصلی به این صورت است که بتواند با تولید خروجی، به ورودی‌ها پاسخ دهیم. قرار گرفتن در چنین وضعیتی با استفاده از این توابع باعث می‌شود که همه چیز با دقت از همدیگر جدا شده و پردازش‌ها روی همدیگر تاثیر نداشته باشند. این موضوع در نهایت باعث می‌شود که ابزارهایی با قابلیت درک آسان برای فهمیدن بوجود بیاید. همچنین کدهای چنین ابزاری بسیار به خوبی بیانگر الگوریتم اصلی خواهد بود.

۳ دلیل برای توسعه‌دهندگان که کتاب‌تان را به عنوان کتابی برای برنامه‌نویسی تابعی در پایتون انتخاب کنند:

  • برنامه‌نویسانی که قصد ایجاد کدهای قدرتمند را با حجم کم بنویسند، می‌توانند از قدرت طراحی تابعی استفاده کنند. در این کتاب نمونه‌های بسیار زیادی وجود دارد که می‌شود از آن‌ها بهره برد.
  • در بسیاری از حالات، توابع سازنده و پردازش کُندرو، استفاده از این شیوه بسیار در کارایی بهبود ایجاد می‌کند. یک تابع سازنده از حافظه کمتر از یک مجموعه داده بزرگ فضا را اشغال می‌کند. تغییر این موضوع می‌تواند تغییر زیادی به وجود بیاورد. در این کتاب نمونه‌هایی از این پردازش و توابع وجود دارد.
  • کار کردن با نکات مربوط به نوع‌ها می‌تواند کمی پیچیده باشد. در این کتاب با استفاده از مثال‌های واقعی و پیچیده به خوبی همه چیز توضیح داده شده است.

منبع

مقالات پیشنهادی

Full-Stack Designer کيست و چرا بايد يکي از آنها باشيد

سريع بودن و موثر واقع شدن در مهارت ها و تمركز روي زندگي حرفه اي مون ارزش زيادي داره . عنواني كه ما استفاده ميكنيم ميتونه به شكل موثري به ديگران بگه ك...

با پایتون می‌توانید چکارهایی را انجام دهید؟

اگر دارید به یادگیری پایتون فکر می‌کنید و یا اینکه جدیدا شروع به یادگیری آن کرده‌اید، ممکن است از خودتان بپرسید که از پایتون برای چکارهایی می‌تونم است...

ایجاد افزونه کروم با استفاده از پایتون

تا به حال از افزونه‌های کروم استفاده کرده‌اید؟ اگر جواب‌تان بله است، پس مطمئنا تا به حال از خودتان پرسیده‌اید که این افزونه‌ها چگونه ساخته می‌شود. اگر...

ایجاد اپلیکیشنی مدرن با استفاده از Django و Vue.js - بخش اول

در این مقاله ما قصد داریم از چهارچوب Django و Django REST برای بک‌اند و Vue.js برای فرانت‌اند است. APIها با کمک Axois (یک کتابخانه HTTP Client) از طری...