رمزگشایی از ++C (زبان برنامهنویسی)
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- تکامل تاریخی ++C را از «C با کلاسها» تا شکل مدرن آن، از جمله تأثیر ابزارهای اولیهای مانند Cfront، توضیح دهید. [input.txt | Word]
- ستونهای اصلی طراحی ++C را توصیف کنید: انتزاعهای با overhead صفر، RAII (کسب منبع هنگام مقداردهی اولیه) و سازگاری با C، و اینکه این اصول چگونه ویژگیهای زبان و بهترین شیوهها را شکل میدهند.
- نقش قالبها و برنامهنویسی عمومی را در امکانپذیر کردن استفاده مجدد از کد، انتزاع و توسعه کتابخانه استاندارد قالبها (STL) تحلیل کنید.
- ویژگیهای مدرن ++C مانند معنای انتقال، عبارتهای لامبدا، استنتاج نوع، اشارهگرهای هوشمند و مدل حافظه رسمی را درک کنید.
- مفاهیم پیشرفته زبان شامل conceptها، rangeها، Coroutines، ماژولها و محاسبات زمان کامپایل را بررسی کنید.
- کاربرد ++C را در حوزههای حساس به کارایی مانند موتورهای بازی، سیستمهای تعبیه، مرورگرها، پایگاههای داده، معاملات پرسرعت و محاسبات علمی ارزیابی کنید.
- اصول مدیریت حافظه در ++C را بیان کنید: مدت زمان نگهداری، طول عمر آبجکت، تخصیص پویا، placement new، همترازی و پدینگ
- سازوکارهای پلی مورفیسم (ارسال مجازی، جدولهای مجازی، type erasure) و جایگزینهای مدرن (std::function، std::variant، std::any) را مقایسه کنید.
- مدلهای همروندی و موازیسازی را در ++C خلاصه کنید: مدل حافظه، atomics، ترتیبهای حافظه، برنامهنویسی بدون قفل و الگوریتمهای موازی
- بهترین شیوهها و ابزارهای مربوط به پروفایلینگ، بنچمارکگیری، ایمنی در برابر استثنا، پایداری ABI و بهینهسازی کل برنامه را شناسایی کنید.
- اصطلاحات مدرن و زیرمجموعههای ایمنتر را برای نوشتن کد ++C مقاوم، قابل نگهداری و کارآمد تشخیص دهید.
- ویژگی های خوب و بد میان ++C و زبانهای دیگر (Rust ،Go ،Python) را از نظر کارایی، ایمنی و اکوسیستم بهطور انتقادی ارزیابی کنید.
- توجه: این یک دوره نظری است. شامل نمونه کد، آزمایشگاه عملی یا دستورالعملهای پیادهسازی نمیشود.
- تمرکز بر درک مفهومی، منطق طراحی زبان و اصول طراحی در سطح سیستم است.
پیشنیازهای دوره
- درک خوب از مفاهیم کلی برنامهنویسی (متغیرها، جریان کنترل، توابع، ساختارهای داده).
- آشنایی با سینتکس و معنای اولیه ++C (نیازی به کدنویسی پیشرفته نیست).
- آشنایی با مفاهیم برنامهنویسی سیستمی (مدیریت حافظه، کامپایل، همروندی) مفید است اما اجباری نیست.
- علاقه به طراحی زبان، معماری نرمافزار یا مهندسی کارایی
توضیحات دوره
این دوره نظری پیشرفته، بررسی عمیق در ++C به عنوان زبانی برای برنامهنویسی پرمحصول و سطح سیستم ارائه میدهد و بر تکامل، فلسفه طراحی و ویژگیهای پیشرفته آن تمرکز دارد. این دوره با تکیه بر محتوای جامع موجود در input.txt، سیر تکامل ++C را از خاستگاه آن به عنوان «C با کلاسها» تا نقش امروزی آن در زیرساخت نرمافزار مدرن دنبال میکند.
موضوعات کلیدی عبارتند از:
- توسعه تاریخی ++C و تأثیر ابزارهای اولیه مانند Cfront بر طراحی کامپایلر و زبان
- ستونهای اصلی طراحی: انتزاعهای با overhead صفر، RAII (کسب منبع هنگام مقداردهی اولیه)، و سازگاری با C
- ظهور و تأثیر قالبها، برنامهنویسی عمومی و کتابخانه استاندارد قالبها (STL)
- ویژگیهای مدرن زبان: معنای انتقال، لامبداها، استنتاج نوع، اشارهگرهای هوشمند و مدل حافظه رسمی
- مفاهیم پیشرفته: conceptها، rangeها، Coroutines، ماژولها و محاسبات زمان کامپایل
- ++C در حوزههای حساس به کارایی: موتورهای بازی، سیستمهای تعبیه، مرورگرها، پایگاههای داده، معاملات پرسرعت و محاسبات علمی
- مدیریت حافظه: مدت زمان نگهداری، طول عمر آبجکت، تخصیص پویا، placement new، همترازی و پدینگ
- پلی مورفیسم و type erasure: ارسال مجازی، جدولهای مجازی، type erasure و جایگزینهای مدرن مانند std::function، std::variant و std::any.
- همروندی و موازیسازی: مدل حافظه ++C، اتمیکها، ترتیبهای حافظه، برنامهنویسی بدون قفل و الگوریتمهای موازی
- ابزارها و بهترین شیوهها: پروفایلینگ، بنچمارکگیری، sanitizers، ایمنی در برابر استثنا، پایداری ABI و بهینهسازیهای کل برنامه
- اصطلاحات مدرن و زیرمجموعههای ایمنتر: تأکید بر شیوههای مقاوم، اصطلاحی و استانداردهای کدنویسی در ++C
نکته مهم:
این یک دوره نظری است. هدف آن ارائه درکی دقیق و عمیق از ++C و اکوسیستم آن در سطح مفهومی و معماری است. این دوره شامل نمونه کد، آزمایشگاههای عملی برنامهنویسی یا دستورالعملهای گامبهگام پیادهسازی نمیشود. در عوض، بر اصول، منطق و ویژگی های خوب و بد تمرکز دارد که زیربنای ویژگیهای زبان ++C، الگوهای طراحی و کاربردهای سطح سیستم آن هستند. [input.txt | Word]
در پایان این دوره، دانشجویان قادر خواهند بود طراحی ++C، ویژگیهای کارایی آن و کاربردش را در سیستمهای نرمافزاری پیچیده تحلیل کرده و درباره آن استدلال کنند. این دوره برای دانشجویان پیشرفته کارشناسی، دانشجویان تحصیلات تکمیلی یا متخصصانی که به دنبال تسلط نظری به ++C مدرن هستند، ایدهآل است.
این دوره برای چه کسانی مناسب است؟
- دانشجویان پیشرفته کارشناسی و تحصیلات تکمیلی در علوم کامپیوتر، مهندسی نرمافزار یا زمینههای مرتبط
- مهندسان نرمافزار حرفهای، معماران سیستم و رهبران فنی که به دنبال درکی نظری و دقیق از ++C مدرن هستند.
- توسعهدهندگانی که از زبانهای دیگر به ++C مهاجرت میکنند و میخواهند فلسفه طراحی و کاربردهای سطح سیستم آن را درک کنند.
- هر کسی که به مبانی مفهومی و ویژگیهای کارایی ++C در زیرساخت نرمافزار معاصر علاقه دارد.
رمزگشایی از ++C (زبان برنامهنویسی)
-
تکامل ++C — از «C با کلاسها» تا اصول مدرن 01:32
-
ستونهای طراحی استراستروپ — Overhead صفر، RAII و سازگاری با C 06:11
-
قالبها، برنامهنویسی عمومی و انقلاب STL 05:43
-
RAII، استثناها و مدیریت قطعی منابع 05:58
-
نقطه عطف استانداردسازی — C++98 و نخستین استاندارد ISO 06:06
-
پیشرفت بزرگ C++11 — معنای انتقال، لامبداها و ویژگیهای اصلی مدرن 06:10
-
تکامل از C++11 به بعد — constexpr ،Concepts ،Ranges ،Coroutines و ماژول ها 05:36
-
آزمون 1 None
-
چرا ++C برای سیستمهای حساس به کارایی؟ 05:40
-
موتورهای بازی و الگوهای گرافیک بلادرنگ 06:56
-
محدودیتهای سیستمهای تعبیه و بلادرنگ 06:27
-
مرورگرها و معماری اپلیکیشن های در مقیاس بزرگ 05:41
-
پایگاههای داده، موتورهای ذخیرهسازی و مدیریت حافظه 06:03
-
مالی، معاملات پرسرعت (HFT) و سیستمهای با تأخیر فوقالعاده کم 06:06
-
محاسبات با کارایی بالا و شبیهسازی علمی 05:09
-
زیرساخت یادگیری ماشین و پایپ لاین ها سرویسدهی 06:32
-
همکنشپذیری، پایداری ABI و پایگاههای کد بلندعمر 05:53
-
ویژگی های خوب و بد در برابر Rust ،Go و Python 07:16
-
آزمون 2 None
-
خط لوله کامپایل C++ — از منبع تا آبجکت 06:53
-
قالبها، نمونهسازی و بار کاری کامپایلر 07:24
-
Name Mangling و هویت Symbol 05:36
-
پیوند، درونخطی و قانون یک تعریف (ODR) 04:34
-
پیوند ایستا در برابر پویا و رویتپذیری نمادها 06:17
-
ABIها، قراردادهای فراخوانی و سازگاری باینری Cross-Platform 06:09
-
مدیریت استثنا، Unwinding و فراداده زمان اجرا 05:43
-
بهینهسازی فراتر از مرزها — بهینهسازی زمان پیوند (LTO)، بهینهسازی هدایتشده با پروفایل (PGO) و دید کل برنامه 06:34
-
ماژول ها، هدرها و غلبه بر مشکلات وابستگیها 04:15
-
آزمون 3 None
-
مدت زمان نگهداری و طول عمر آبجکت 06:31
-
ساخت، تخریب و ترتیب مقداردهی اولیه 06:00
-
تخصیص پویا، عملگرهای new/delete و (placement new 06:42
-
نمایش آبجکت، همترازی و پدینگ 07:08
-
نوعهای trivial ،standard-layout ،POD و aggregate 05:35
-
دستهبندیهای مقدار — lvalue ،xvalue ،prvalue و مادهسازی 06:42
-
کپی، انتقال و توابع عضو ویژه 05:49
-
حذف کپی، بهینهسازی مقدار بازگشتی (RVO) و معنای prvalue 05:42
-
Strict Aliasing، نوعگذاری مجدد و std::launder 04:26
-
آزمون 4 None
-
مدل نمونهسازی قالب و جستجوی دو مرحلهای 05:05
-
جستجوی وابسته به آرگومان (ADL) و حل ابهام overload در قالبها 05:40
-
SFINAE، الگوی تشخیص و انتخاب ایمن overload 05:59
-
conceptها، requires و محدودیتهای تمیزتر زمان کامپایل 05:34
-
الگوی CRTP (قالب بازگشتی عجیب) و پلی مورفیسم ایستا 05:52
-
ویژگیهای نوع، قالبهای alias و دستکاری نوع در زمان کامپایل 06:02
-
constexpr ،consteval و ارزیابی زمان کامپایل 06:30
-
استنتاج آرگومان قالب کلاس (CTAD) و راهنماهای استنتاج 06:10
-
ابتداییهای فرابرنامهنویسی پیشرفته — عبارت های Fold، پارامترهای قالب غیرنوع (NTTPها) و constexpr-if 07:03
-
آزمون 5 None
-
ارسال مجازی چگونه کار میکند؟ — vptrs و VTables 06:54
-
وراثت چندگانه و مجازی — طرح بندی، thunkها و تنظیم اشارهگر 05:13
-
هزینههای واقعی ارسال پویا — تأخیر، درونخطیسازی و مجازیزدایی 05:25
-
اطلاعات نوع زمان اجرا (RTTI) و dynamic_cast — اطلاعات نوع در زمان اجرا 06:06
-
استثناها، Unwinding و تعامل آنها با پلی مورفیسم 05:49
-
اصول Concepts - Type Erasure و بهینهسازی با بافر کوچک 04:52
-
std::function ،std::any و std::variant — سازوکارها و هزینهها 07:11
-
انتخاب میان پلی مورفیسم زمان اجرا و زمان کامپایل 06:23
-
آزمون 6 None
-
پشته در برابر heap — ویژگیهای نگهداری و کارایی 05:42
-
عملگرهای new/delete و مدل معنایی تخصیص 05:52
-
تخصیصدهندههای سفارشی، arenaها و راهبردهای پولینگ 06:03
-
بهینهسازیهای آبجکت کوچک و بافر کوچک 04:50
-
Placement new، تخریب صریح و استفاده مجدد از آبجکت 04:18
-
همترازی، پدینگ و نوعهای بیشهمتراز 04:37
-
ریشه اشارهگر، نوع مؤثر و قواعد Aliasing 04:29
-
رفتار تعریفنشده ناشی از نقض طول عمر — dangling، استفاده پس از آزادسازی و استفاده مجدد 04:43
-
قاعده as-if و فرضهای بهینهساز که به رفتار تعریفشده وابسته هستند 03:58
-
آزمون 7 None
-
Threads ،Data Races و رفتار تعریفنشده 04:17
-
مدل حافظه ++C و رابطه happens-before 05:17
-
std::atomic و معنای عملیات اتمیک 06:15
-
ترتیبهای حافظه — relaxed ،acquire/release ،acq_rel و seq_cst 05:17
-
fences، اولیههای همگامسازی و معنای mutex 04:54
-
برنامهنویسی Lock-Free و Wait-Free، مسئله ABA و تضمینهای پیشرفت 06:56
-
futureها، promiseها و همگامسازی مبتنی بر task 07:08
-
الگوریتمهای موازی، سیاستهای اجرا و قطعیبودن نتایج 07:07
-
Coroutineها، تعلیق اجرا و تعامل با زمانبندها و اجراکنندهها 07:08
-
آزمون 8 None
-
تضمینهای پیچیدگی و بیاعتبار شدن iteratorها 05:48
-
طرح بندی های کانتینر و ویژگی های خوب و بد عملکردی 05:37
-
مدل تخصیصدهنده و معنای انتشار 04:51
-
دستهبندیهای Iterator ،Concepts و تضمینهای عملی 05:29
-
الگوریتمها — پایداری، پیچیدگی و رفتار در برابر استثنا 04:28
-
تضمینهای ایمنی در برابر استثنا در کتابخانه استاندارد 05:12
-
std::string ،iostreamها و ویژگی های خوب و بد پردازش متن 06:01
-
نوعهای سبک و نوعهای جمعی — span ،optional ،variant و expected 05:34
-
پایداری ABI، پیادهسازیهای متعدد STL و پیامدهای مهاجرت 02:13
-
آزمون 9 None
مشخصات آموزش
رمزگشایی از ++C (زبان برنامهنویسی)
- تاریخ به روز رسانی: 1405/04/02
- سطح دوره:متوسط
- تعداد درس:88
- مدت زمان :07:51:59
- حجم :4.78GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy