دوره آموزشی برنامهنویسی تابعی در سی پلاس پلاس
4 ساعت 25 دقیقهمتوسط2025-04-01
مدرسین

Troy Miles
Award-winning Software Engineer, Speaker, and Author
جزئیات دوره
تو این دوره، اصول برنامهنویسی تابعی رو توی C++ مدرن با ویژگیهایی که تو نسخههای C++17، C++20 و C++23 معرفی شدن، بررسی میکنی. مدرس این دوره، تروی مایلز، بهت یاد میده چطور با استفاده از ویژگیهایی مثل لامبداها، رنجها، کروتینها و کانسپتها کدهایی بنویسی که مدولارتر، بیانگر و بیشتر بهینه باشن. توی این دوره، یاد میگیری چطور با استفاده از پایپلاینهای تابعی، متاپروگرمینگ و واژهنامه constexpr روش حل مشکلات توی C++ رو تغییر بدی. همچنین، مباحثی مثل برنامهنویسی واکنشی تابعی، الگوهای تطبیق و ترکیب سبکهای تابعی و دستوری رو هم پوشش میده تا بتونی تکنیکهای پیشرفته C++ رو به خوبی یاد بگیری.
🎓 اهداف یادگیری:
استفاده از ویژگیهای C++ مدرن مثل لامبداها، رنجها و کروتینها برای نوشتن کدهای تابعی کارآمدتر و بیانگرتر.
مقایسه مزایای برنامهنویسی تابعی در C++ با استفاده از راهحلهای تابعی و دستوری برای حل مشکلات رایج.
ارزیابی استفاده از کانسپتها و محدودیتهای نوع برای اطمینان از برنامهنویسی ژنریک ایمن در C++20 و C++23.
ایجاد پایپلاینهای تابعی با استفاده از کتابخانه رنجها برای تبدیل و پردازش دادهها به سرعت و بهینه.
ترکیب اصول برنامهنویسی تابعی با متاپروگرمینگ و استفاده از واژهنامه constexpr برای پیادهسازی محاسبات در زمان کامپایل و بهبود عملکرد.
🎓 اهداف یادگیری:
استفاده از ویژگیهای C++ مدرن مثل لامبداها، رنجها و کروتینها برای نوشتن کدهای تابعی کارآمدتر و بیانگرتر.
مقایسه مزایای برنامهنویسی تابعی در C++ با استفاده از راهحلهای تابعی و دستوری برای حل مشکلات رایج.
ارزیابی استفاده از کانسپتها و محدودیتهای نوع برای اطمینان از برنامهنویسی ژنریک ایمن در C++20 و C++23.
ایجاد پایپلاینهای تابعی با استفاده از کتابخانه رنجها برای تبدیل و پردازش دادهها به سرعت و بهینه.
ترکیب اصول برنامهنویسی تابعی با متاپروگرمینگ و استفاده از واژهنامه constexpr برای پیادهسازی محاسبات در زمان کامپایل و بهبود عملکرد.
مهارت ها
C++Programming FoundationsProgramming LanguagesOpen SourceSoftware DevelopmentOne-Off
سرفصل ها
مقدمه
- مقدمه
برنامه نویسی تابعی در سی پلاس پلاس مدرن
- برنامه نویسی تابعی چیست
- لامبدا و بسته شدن
- الگوریتمهای استاندارد (تبدیل، مشاهده، تجمع)
- تجمع و کاهش
- کاربرد جزئی و کاری (std - - bind)
- ترکیب توابع با الگوریتمهای استاندارد کتابخانه
- چالش - اضافه پیوسته فاکتوریل
- حل - اضافه فاکتوریل پیوسته
مفاهیم و محدودیتهای نوع در C++20
- چرا مفاهیم
- نحو مفهوم پایه
- تعریف مفاهیم سفارشی
- ترکیب مفاهیم
- مفاهیم در مقابل SFINAE (Pre-C++20)
- چالش - عملکرد محدود به مفاهیم
- راه حل - تابع محدود شده توسط مفاهیم
Ranges and Pipelines در C++20 23
- محدودهها و خطوط لوله در C++20 23
- چرا از محدودهها استفادهکنیم (تبدیل یک مجموعه)
- ترکیب فیلترها و تبدیل ها
- ارزیابی تنبل با کوروتینها (ژنراتور فیبوناچی بی نهایت)
- ترکیب عملیات چند دامنه برای تبدیل مجموعه ها
- چالش - یک خط لوله کاربردی بسازید
- راه حل - ساخت یک خط لوله کاربردی
فرابرنامه نویسی قالب و constexpr
- فرابرنامه نویسی قالب و constexpr
- قالبهای بازگشتی در C++
- فاکتوریل با استفاده از constexpr
- محاسبه زمان کامپایل پیشرفته - دنباله فیبوناچی
- چرا ضرب ماتریس زمان کامپایل؟
- چالش - اجرای فاکتوریل constexpr
- راه حل - فاکتوریل constexpr را اجرا کنید
توابع و ترکیبات مرتبه بالاتر در C++23
- مقدمه ای بر توابع درجه بالاتر
- استفاده از std - - تابع move only برای توابع مرتبه بالاتر
- ترکیب تابع با lambdas و std - - invoke
- مزایای نوشتن توابع برای کدهای ماژولارتر
- موارد استفاده در دنیای واقعی از توابع درجه بالاتر در ++C مدرن
- چالش - خط لوله ترکیب تابع
- راه حل - خط لوله ترکیب تابع
کتابخانههای برنامه نویسی کاربردی
- استفاده از الگوریتمهای تابعی با استفاده از STL
- تبدیل و جمع بندی فهرست
- فیلتر کردن مقادیر با std - - محدوده - - فیلتر (C++20)
- دستکاری تاپل با Boost.Hana
- ترکیب Boost.Hana با تکنیکهای تابعی استاندارد در C++
- چالش - فیلتر و تبدیل با STL و Boost.Hana
- راه حل - فیلتر و تبدیل با STL و Boost.Hana
برنامه نویسی واکنشی تابعی
- برنامه ریزی واکنشی تابعی
- جریان RxCpp ساده
- Coroutine با RxCpp و محدوده
- پردازش جریان داده در زمان واقعی به روشی کاربردی
- مزایای برنامه نویسی کاربردی برای مدیریت رویدادهای ناهمزمان
- چالش - فرکانس شمار ورد با RxCpp
- راه حل - فرکانس شمار ورد با RxCpp
تطبیق و انواع الگوها در C++23
- مقدمه ای بر تطبیق الگو و ریشههای برنامه نویسی کاربردی آن
- تطبیق الگوی پایه با متغیر std - -
- سربارهای نوع خاص با std - - بازدید
- بهبود وضوح کد با تکنیکهای تطبیق الگو
- کاربردهای std - - variant و std - - بازدید در سناریوهای دنیای واقعی
- چالش - تطبیق الگو با std - - variant
- راه حل - تطبیق الگو با std - - variant
کوروتینهای پیشرفته و برنامه نویسی ناهمزمان
- کوروتینهای پیشرفته و برنامه نویسی ناهمزمان
- مولد توالی تنبل با هم بازده
- مدیریت وظایف ناهمزمان با کوروتین ها
- ترکیب کوروتینها با ارزیابی تنبل برای اجرای کارآمد
- انجام وظایف همزمان به صورت عملکردی
- چالش - مدیر وظیفه ناهمزمان
- راه حل - مدیر وظایف ناهمزمان
ترکیب سبکهای کاربردی و امری
- ترکیب سبکهای کاربردی و امری
- خطوط لوله عملکردی با حلقههای ضروری
- شبیه سازی دادههای تغییرناپذیر با std - - shared ptr
- تبدیل کد دستوری به یک سبک عملکردی برای وضوح
- ایجاد تعادل در عملکرد و قابلیت نگهداری با استفاده از سبکهای برنامه نویسی ترکیبی
- چالش - کد امری را به یک سبک عملکردی تبدیل کنید
- راه حل - کد امری را به یک سبک عملکردی تبدیل کنید