×
ribbon

دوره آموزش اصول طراحی کامپایلر

کامپایلر یکی از اساسی ترین اجزای برنامه نویسی است که به شما کمک می کند کدهای نوشته شده... بیشتر
3.6 (14 امتیاز)
6,842دانشجو
مقدماتی
دانشگاه صنعتی شریف

محمد هادی فروغمند

مشخصات دوره
محتوای دوره
توضیحات دوره
دیدگاه کاربران
درباره مدرس

آنچه در این دوره می‌آموزید

آموزش طراحی کامپایلر

یادگیری مفاهیم درس کامپایلر

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

آموزش رایگان اصول طراحی کامپایلر

محتوای دوره

1 فصل24 جلسه20 ساعت ویدیو
فیلم های آموزشی
  مبانی کامپایلر
مشاهده
"29:48
  ساختار کامپایلر
مشاهده
"72:08
  واژه یابی بخش اول / الگوریتم های DFA و NFA
مشاهده
"54:00
  واژه یابی بخش دوم / اسکنر
"62:41
  معرفی انواع گرامرها
"51:11
  طراحی پارس بخش اول / تجزیه پایین به بالا
"48:41
  طراحی پارسر بخش دوم / مجموعه های Follow و First
"72:40
  معرفی تجزیه کننده های LR
"44:28
  طراحی اسکنر و پارسر در قالب Decaf / تجزیه بالا به پایین بخش اول
"61:26
  تجزیه بالا به پایین بخش دوم
"18:40
  کدهای میانی و متغیرهای آن
"62:12
  IR / Semantic Analytics
"55:12
  بررسی زبان ماشین
"58:29
  CFG / Control flow / بهینه سازی Basic Block
"32:06
  بهینه سازی عبارت ها
"51:18
  بهینه سازی کامپایلر
"59:40
  عملیات بر روی متغیرها
"60:32
  بهینه‌سازی اکسپرشن‌ها
"41:52
  Instruction Scheduling
"56:24
  Loop Optimization بخش اول
"54:27
  Loop Optimization بخش دوم
"28:17
  Register Allocation و گراف ها
"48:48
  Parallelization، موازی بخش اول
"43:28
  Parallelization، موازی بخش دوم
"47:15

توضیحات دوره

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

دوره آموزش اصول طراحی کامپایلر

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

هدف از یادگیری دوره آموزش طراحی اصول کامپایلر چیست؟

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

دوره آموزش طراحی اصول کامپایلر مناسب چه کسانی است؟

این دوره آموزشی از طراحی اصول کامپایلر در واقع توسط «جناب آقای محمدهادی فروغمند» استادیار دانشکده علوم ریاضی دانشگاه صنعتی شریف ضبط شده است که در کلاس‌های درسی خود تدریس می‌کردند؛ بنابراین اگر دانشجوی مهندسی کامپیوتر هستید و قصد دارید این درس را با موفقیت بیشتری پشت سر بگذارید و یا نیاز دارید یک کامپایلر طراحی کنید، این دوره آموزش اصول طراحی کامپایلر برای شما مناسب خواهد بود. البته علاقه‌مندان به یادگیری زبان‌های سطح پایین به‌صورت کاربردی نیز می‌توانند از این دوره بهره‌مند شوند. 

بعد از فراگیری دوره آموزش طراحی اصول کامپایلر چه مهارت‌هایی کسب خواهید کرد؟

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

چه کسانی بهترین کاندید برای یادگیری دوره آموزش اصول طراحی کامپایلر هستند؟

تمامی دانشجویان رشته کامپیوتر، علاقمندان به زبان برنامه نویسی مانند جاوا اسکریپت و غیره می‌توانند در این آموزش اصول طراحی کامپایلر  شرکت کنند یا با مشاهده آموزش تصویری و فیلم‌های آموزشی دانش خود را ارتقاء دهند. تمامی شرکت کنندگان در دوره‌ها بعد از اتمام دوره‌های آموزشی قادر به درک کامل از پردازش‌هایcpu  در زمان کامپایل و یا تفسیر کدها و زبان خاص ساخته شده خواهند بود. در نتیجه، شرکت کنندگان مهارت بهینه کردن کدها با هدف افزایش سرعت کامپایل را کسب خواهند کرد.

سرفصل‌ دوره‌ آموزش طراحی اصول کامپایلر چیست؟

در این بخش قصد داریم تا فهرستی از سرفصل‌های مشترک دوره‌های آموزشی ارائه دهیم. سرفصل‌ها و رئوس مطالب به شرح زیر است:

1. مقدمه و معرفی کامپایلر

  • تعریف اولیه کامپایلر
  • انواع روش‌های ترجمه و اجرای برنامه ها، دلیل و لزوم استفاده از برنامه کامپایلر
  • جلوبندی و عقب بندی ( اجرا بر روی ماشین‌های گوناگون)
  • فازهای مختلف کامپایلر (تحلیلگر لغوی، نحوی)

2. تحلیلگر لغوی

  • معرفی عملکرد تحلیلگر لغوی و ارتباطان با تحلیلگر نحوی
  • کاهش حالات در ماشین خودکار
  • انواع لغات در برنامه – نشانه ها
  •  ایجاد DFA از روی عبارت باقاعده
  • ماشین خودکار متناهی (DFA, NFA)
  • عملکرد تحلیلگر لغوی
  • جدول نماد (ارتباط بین لغات و نشانه ها)
  • الگوریتم تبدیل NFA به  DFA
  • معرفی زبان ها و رشته کامپیوتر (عملیات بر روی زبان ها، معرفی اولیه زبان ها، عبارات منظم)
  • ایجاد ماشین خودکار غیرقطعی (NFA) با روش  Thompson

3. گرامرها

  • گرامر های مبهم
  • درختان تجزیه ( اشتقاق و...)
  • تعریف گرامر – انواع گرامرها ( سلسله مراتب چامسکی  (Chomsky))
  • بازگشتی چپ و حذف آن

4. تجزیه بالا به پایین

  • مجموعه های First و FOLLOW
  • نحوه عملکرد تجزیه کننده بالا به پایین
  • تجزیه کننده پیش بینی کننده غیربازگشتی – جدول تجزیه
  • تجزیه کننده پیش بینی کننده – پیش بینی کننده بازگشتی
  • گرامرهای  LL1
  • تبدیل گرامر LL1 به فاکتورگیری چپ – حذف بازگشتی چپ
  • مفهوم پوشش خطا در تجزیه
  • مدیریت خطا در تجزیه کننده

5. تجزیه کننده پایین به بالا

  • مفهوم دستگیره  (Handle)
  • نحوه عملکرد تجزیه کننده پایین به بالا
  • تجزیه کننده های  LR
  • معرفی تجزیه کننده‌های پایین بالا - تجزیه کننده اولویت با عملگر و LR
  • تجزیه کننده اولویت با عملگر
  • معرفی روش های تجزیه  LR
  • گرامرهای مبهم و تجزیه های کننده های LR
  • گرامرهای  LR0
  • گرامرهای  LR1
  • گرامرهای  SLR1
  • گرامرهای  LALR1

پیش نیازهای دوره آموزش طراحی اصول کمپایلرها چیست؟

توجه داشته باشید که جهت یادگیری کامپایلر نیاز به آگاهی از علوم مختلف از جمله علوم زیر دارید:

1. الگوریتم‌ها

2. مهندسی نرم افزارها

3. آشنایی با زبان های برنامه نویسی مثل اسمبلی

4. نظریه زبان‌ها

5. معماری ماشین‌ها و کامپیوترها

6. کار با ویژوال بیسیک

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

اطلاعات بیشتر

امتیاز و نظرات کاربران

3.6

از مجموع 14 امتیاز

5نظر

10 ماه پیش

عالی

دانشجوی دوره

7 ماه پیش

به خوبی تخته نمایش داده نمیشه این مورد توی دقیقه 24 به بعد مشخصه عبارت منظم فقط استاد مشخصه و صحبتاشون ئه تخته

علیرضا اکبری

4 سال پیش

مطالب خیلی پراکنده بود

فاطمه ماهوت چی

3 سال پیش

قدرت انتقال خوبی ندارند ولی محتوا عالی بود و اطلاعات مدرس خوب بود

دانشجوی دوره

4 سال پیش

اصلا منظم نبود ، کیفیت فیلمبرداری و صدا خیلی بد ! متاسفم

میلاد نوروزی

دوره‌های پیشنهادی مشابه

درباره استاد

محمد هادی فروغمند
5دوره
12,199دانشجو

محمد هادی فروغمند، استادیار دانشکده علوم ریاضی دانشگاه شریف می‌باشد. زمینه‌های تحقیقاتی ایشان نظریه گراف و تجزیه و تحلیل شبکه‌های پیچیده، مدل‌های محاسباتی جدید و پیچیده، بیوانفورماتیک، تجزیه و تحلیل توالی ترکیبی و جستجو الگوریتم، الگوریتم‌ها و (ترکیبی) بهینه سازی و فلسفه علوم کامپیوتر است.

ایشان در سال 2001 عضو تیم المپیاد کامپیوتر ایران بودند و در این سال توانستند مدال طلا این مسابقات را کسب کنند و همچنین در سال‌های 2005 و 2007 جز سرپرستان تیم بودند که در هر کدام از سال‌ها مجموعا 4 مدال توسط تیم المپیاد کامپیوتر بدست آمده است.

اطلاعات بیشتر

دیگر دوره‌های محمد هادی فروغمند

سوالات پرتکرار

آیا ممکن است برخی جلسات یک درس ناقص باشند؟

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

اگر لینک دانلود یا پخش ویدئو مشکل داشت، چه کاری باید انجام داد؟

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

آیا می‌توان ویدئوهای یک درس را به‌صورت سی‌دی یا دی‌وی‌دی از شما تهیه کرد؟

در حال حاضر امکان ارسال دروس به‌صورت سی‌دی یا دی‌وی‌دی وجود ندارد و همه محتواها به شکل آنلاین ارائه می‌شوند.