آموزش زبان‌های برنامه‌نویسی، بخش اول - آخرین آپدیت

دانلود Programming Languages, Part A

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره: این دوره مقدمه‌ای بر مفاهیم پایه زبان‌های برنامه‌نویسی با تمرکز ویژه بر برنامه‌نویسی تابعی (Functional Programming) است. در این دوره از زبان‌های ML، Racket و Ruby برای آموزش مفاهیم استفاده می‌شود، اما هدف اصلی این است که شما به اندازه کافی درباره نحوه ساختار و ارتباط اجزای هر زبان بیاموزید تا بتوانید در هر زبان دیگری برنامه‌نویسی مؤثرتری داشته باشید و یادگیری زبان‌های جدید برایتان آسان‌تر شود. این دوره نه صرفاً تئوری است و نه فقط درباره جزئیات خاص برنامه‌نویسی؛ بلکه چارچوبی برای درک نحوه استفاده مؤثر از ساختارهای زبانی و طراحی برنامه‌های صحیح و زیبا به شما ارائه می‌دهد. با استفاده از زبان‌های مختلف، یاد می‌گیرید که عمیق‌تر از سطح نحو (Syntax) یک زبان خاص فکر کنید. تمرکز بر برنامه‌نویسی تابعی برای یادگیری نحوه نوشتن برنامه‌های قدرتمند، قابل استفاده مجدد، ترکیب‌پذیر و ظریف ضروری است. در واقع، بسیاری از مهم‌ترین ایده‌های زبان‌های مدرن ریشه در برنامه‌نویسی تابعی دارند. آماده باشید تا راهی تازه و زیبا برای نگاه به نرم‌افزار و لذت بردن از ساختن آن بیاموزید. این دوره فرض را بر این می‌گذارد که شما تجربه قبلی در برنامه‌نویسی دارید، همان‌طور که در ماژول اول با جزئیات بیشتر توضیح داده شده است. این مجموعه شامل سه دوره Coursera است: بخش A، بخش B و بخش C. همان‌طور که در ماژول اول بخش A توضیح داده شده، کل دوره شامل مطالب چالش‌برانگیز و سنگینی است، بنابراین قالب سه بخشی امکان ایجاد دو ایستگاه میانی و فرصتی برای استراحت قبل از ادامه مسیر را فراهم می‌کند. سه بخش به گونه‌ای طراحی شده‌اند که باید به ترتیب تکمیل شوند و شما را برای ادامه تا پایان بخش C مشتاق نگه دارند. طول این سه بخش با هم برابر نیست: بخش A تقریباً به اندازه بخش‌های B و C با هم سنگین است. هفته اول از بخش A شامل لیست دقیق‌تری از موضوعات برای هر سه بخش دوره است، اما انتظار می‌رود که اکثر شرکت‌کنندگان (هنوز!) معنای دقیق تمام این مباحث را ندانند.

سرفصل ها و درس ها

مقدمه و اطلاعات عمومی دوره (از اینجا شروع کنید) Introduction and Course-Wide Information (Start Here)

  • خوش آمدید! (و برخی از مکانیسم‌های دوره) Welcome! (And Some Course Mechanics)

  • اختیاری: من کی هستم / قدردانی Optional: Who I Am / Acknowledgments

  • موضوع دوره چیست / انگیزه اولیه What the Course is About / Initial Motivation

  • پیش‌نیازهای پیشنهادی Recommended Background

  • چرا بخش A، بخش B و بخش C؟ Why Part A, Part B, Part C

  • سیاست نمره‌دهی Grading Policy

  • اختیاری: طرح کلی بسیار سطح بالا Optional: Very High-Level Outline

نصب نرم‌افزار و تکلیف شماره ۰ Software Installation and Homework 0

  • مقدمه نصب نرم‌افزار Software Installation Introduction

  • نصب Emacs Emacs installation

  • نصب SML SML installation

  • نصب SML Mode SML Mode installation

بخش ۱ و تکلیف شماره ۱ Section 1 and Homework 1

  • اتصالات متغیرها و عبارت‌ها در ML ML Variable Bindings and Expressions

  • قوانین مربوط به عبارت‌ها Rules for Expressions

  • محیط REPL و خطاها The REPL and Errors

  • سایه‌اندازی (Shadowing) Shadowing

  • مفاهیم غیررسمی توابع Functions Informally

  • مفاهیم رسمی توابع Functions Formally

  • جفت‌ها و سایر چندتایی‌ها (Tuples) Pairs and Other Tuples

  • معرفی لیست‌ها Introducing Lists

  • توابع لیست List Functions

  • عبارت‌های Let Let Expressions

  • توابع تو در تو Nested Functions

  • Let و کارایی Let and Efficiency

  • گزینه‌ها (Options) Options

  • بولین‌ها و عملیات مقایسه‌ای Booleans and Comparison Operations

  • مزایای عدم تغییر حالت (No Mutation) Benefits of No Mutation

  • اختیاری: تغییر حالت در Java Optional: Java Mutation

  • اجزای یک زبان Pieces of a Language

بخش ۲ و تکلیف شماره ۲ Section 2 and Homework 2

  • ساخت انواع ترکیبی Building Compound Types

  • رکوردها (Records) Records

  • چندتایی‌ها به عنوان قند سینتکسی Tuples as Syntactic Sugar

  • اتصالات نوع داده (Datatype Bindings) Datatype Bindings

  • عبارت‌های Case Case Expressions

  • انواع داده‌های مفید Useful Datatypes

  • الگوی تطبیق (Pattern Matching) تا اینجا Pattern Matching So Far

  • مثال دیگری از عبارت‌ها Another Expression Example

  • مترادف‌های نوع (Type Synonyms) Type Synonyms

  • لیست‌ها و گزینه‌ها به عنوان انواع داده Lists and Options are Datatypes

  • انواع داده‌های چندریختی (Polymorphic) Polymorphic Datatypes

  • الگوی تطبیق / حقیقت درباره توابع Each of Pattern Matching / Truth About Functions

  • کمی استنتاج نوع (Type Inference) A Little Type Inference

  • انواع چندریختی و برابری Polymorphic and Equality Types

  • الگوهای تو در تو Nested Patterns

  • الگوهای تو در تو بیشتر More Nested Patterns

  • الگوهای تو در تو به صورت دقیق Nested Patterns Precisely

  • اختیاری: الگوهای تابعی Optional: Function Patterns

  • استثناها (Exceptions) Exceptions

  • بازگشت دنباله‌ای (Tail Recursion) Tail Recursion

  • انباشت‌گرها برای بازگشت دنباله‌ای Accumulators for Tail Recursion

  • دیدگاهی درباره بازگشت دنباله‌ای Perspective on Tail Recursion

بخش ۳ و تکلیف شماره ۳ و انگیزه یادگیری دوره Section 3 and Homework 3 -- and Course Motivation

  • مقدمه‌ای بر توابع درجه اول (First Class Functions) Introduction to First-Class Functions

  • توابع به عنوان آرگومان Functions as Arguments

  • انواع چندریختی و توابع به عنوان آرگومان Polymorphic Types and Functions as Arguments

  • توابع بی‌نام (Anonymous Functions) Anonymous Functions

  • پوشش غیرضروری تابع Unnecessary Function Wrapping

  • نقشه‌برداری (Map) و فیلتر (Filter) Map and Filter

  • تعمیم مباحث قبلی Generalizing Prior Topics

  • محدوده لغوی (Lexical Scope) Lexical Scope

  • محدوده لغوی و توابع مرتبه بالا Lexical Scope and Higher-Order Functions

  • چرا محدوده لغوی؟ Why Lexical Scope

  • بستارها (Closures) و بازمحاسبه Closures and Recomputation

  • Fold و بستارهای بیشتر Fold and More Closures

  • الگوی بستار: ترکیب توابع Closure Idiom: Combining Functions

  • الگوی بستار: کارینگ (Currying) Closure Idiom: Currying

  • اعمال جزئی (Partial Application) Partial Application

  • جمع‌بندی کارینگ Currying Wrapup

  • ارجاعات تغییرپذیر Mutable References

  • الگوی بستار: بازگشت‌ها (Callbacks) Closure Idiom: Callbacks

  • مستندات کتابخانه استاندارد Standard-Library Documentation

  • اختیاری: انواع داده انتزاعی با بستارها Optional: Abstract Data Types With Closures

  • اختیاری: الگوهای بستار بدون بستار Optional: Closure Idioms Without Closures

  • اختیاری: Java بدون بستار Optional: Java Without Closures

  • اختیاری: C بدون بستار Optional: C Without Closures

  • مقدمه انگیزه دوره Course-Motivation Introduction

  • چرا مفاهیم عمومی زبان‌های برنامه‌نویسی را مطالعه کنیم؟ Why Study General PL Concepts?

  • آیا همه زبان‌های برنامه‌نویسی یکسان هستند؟ Are All PLs the Same?

  • چرا زبان‌های تابعی؟ Why Functional Languages?

  • چرا ML، Racket و Ruby؟ Why ML, Racket, and Ruby?

بخش ۴ و آزمون بخش A Section 4 and Part-A Exam

  • مقدمه بخش Section Introduction

  • استنتاج نوع چیست؟ What is Type Inference

  • استنتاج نوع در ML ML Type Inference

  • مثال‌های استنتاج نوع Type Inference Examples

  • مثال‌های چندریختی Polymorphic Examples

  • اختیاری: محدودیت مقدار و سایر چالش‌های استنتاج نوع Optional: The Value Restriction and Other Type-Inference Challenges

  • بازگشت متقابل (Mutual Recursion) Mutual Recursion

  • ماژول‌ها برای مدیریت فضای نام Modules for Namespace Management

  • امضاها و پنهان‌سازی موارد Signatures and Hiding Things

  • یک مثال ماژول A Module Example

  • امضاها برای مثال ما Signatures for Our Example

  • تطبیق امضا Signature Matching

  • یک ساختار معادل An Equivalent Structure

  • یک ساختار معادل دیگر Another Equivalent Structure

  • ماژول‌های متفاوت، انواع متفاوت تعریف می‌کنند Different Modules Define Different Types

  • توابع معادل Equivalent Functions

  • معادل‌های استاندارد Standard Equivalences

  • معادل بودن در مقابل کارایی Equivalence Versus Performance

  • جمع‌بندی بخش A و پیش‌نمایش بخش‌های B و C Part A Wrap-Up & Parts B&C Preview

نمایش نظرات

آموزش زبان‌های برنامه‌نویسی، بخش اول
جزییات دوره
29h 44m
97
(آخرین آپدیت)
207,388
4.9 از 5
دارد
دارد
دارد
Chris Croft
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Chris Croft Chris Croft

مربی مدیریت، سخنران، نویسنده