پرش به محتوای اصلی

مسیر یادگیری متن‌باز و پروژه‌محور

از Python و Django تا Go در سطح Senior

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

۶
فاز
۸۳
درس
۸
پروژه
۴۱۸
ساعت

یک کار، دو طرز فکر: خطا در Go یک مقدار است و در Python یک exception.

config.goGo
func ReadConfig(path string) (Config, error) {
	data, err := os.ReadFile(path)
	if err != nil {
		return Config{}, fmt.Errorf("read config: %w", err)
	}

	var cfg Config
	if err := json.Unmarshal(data, &cfg); err != nil {
		return Config{}, fmt.Errorf("parse config: %w", err)
	}
	return cfg, nil
}

Go در برابر Python

شش تفاوتی که طرز فکر شما را عوض می‌کند

این‌ها فقط تفاوت syntax نیستند. هر کدام روش طراحی برنامه را تغییر می‌دهد و در درس‌ها با کد و جزئیات runtime بررسی می‌شود.

  • خطا یک مقدار است

    Go
    تابع مقدار error برمی‌گرداند و فراخواننده همان‌جا آن را بررسی می‌کند.
    Python
    خطا با raise بالا می‌رود و جایی دورتر با except گرفته می‌شود.
  • interface ضمنی

    Go
    هر نوعی که methodهای لازم را داشته باشد، بدون اعلام، interface را برآورده می‌کند.
    Python
    نزدیک‌ترین معادل typing.Protocol است؛ ABC به ارث‌بری صریح نیاز دارد.
  • هم‌روندی در خود زبان

    Go
    goroutine و channel بخشی از زبان‌اند و روی همهٔ هسته‌ها موازی اجرا می‌شوند.
    Python
    باید بین asyncio، thread و process انتخاب کنید و GIL را در نظر بگیرید.
  • یک فایل اجرایی

    Go
    خروجی build یک binary مستقل است که بدون نصب چیزی اجرا می‌شود.
    Python
    برای اجرا به مفسر، محیط مجازی و بسته‌های نصب‌شده نیاز دارید.
  • zero value به‌جای None

    Go
    هر متغیر از لحظهٔ تعریف مقدار معتبر دارد: 0، رشتهٔ خالی یا nil.
    Python
    نام تعریف‌نشده خطا می‌دهد و None باید صریح مدیریت شود.
  • composition به‌جای وراثت

    Go
    رفتار با embedding و interfaceهای کوچک ترکیب می‌شود؛ کلاس و وراثت وجود ندارد.
    Python
    وراثت چندگانه و mixin رایج است و MRO ترتیب را تعیین می‌کند.

مسیر یادگیری

شش فاز، از نصب ابزار تا درون runtime

فازها پشت سر هم ساخته شده‌اند و سختی به‌تدریج بالا می‌رود. پیشرفت شما در هر فاز همین‌جا دیده می‌شود.

پروژه‌ها

هشت پروژه که روی هم ساخته می‌شوند

هر پروژه مهارت‌های قبلی را به کار می‌گیرد و با code review در سطح Senior تمام می‌شود. پروژهٔ چهارم یک بار با Go و یک بار با Django ساخته و مقایسه می‌شود.

  • 01

    CLI Task Manager

    یک مدیر کار خط فرمان با ذخیره‌سازی در فایل JSON و پوشش تست.

    • struct
    • slice
    • JSON
    • file I/O
    • testing
  • 02

    Concurrent Web Crawler

    خزندهٔ هم‌روند وب با کنترل عمق، لغو و محدودیت نرخ درخواست.

    • goroutine
    • channel
    • context
    • rate limiting
  • 03

    URL Shortener

    سرویس کوتاه‌کنندهٔ پیوند؛ ابتدا با ذخیره‌سازی در حافظه و سپس PostgreSQL.

    • net/http
    • PostgreSQL
    • layering
    • slog
  • 04

    REST API با Go و Django

    یک API کامل که هم با Go و هم با Django/DRF ساخته و از نظر معماری و کارایی مقایسه می‌شود.

    • CRUD
    • migration
    • validation
    • auth
    • DRF
  • 05

    Auth Service

    سرویس احراز هویت با JWT، refresh token، هش گذرواژه و middleware امنیتی.

    • JWT
    • refresh token
    • argon2
    • middleware
  • 06

    Rate Limiter و Cache Service

    پیاده‌سازی token bucket و sliding window روی Redis همراه با benchmark.

    • Redis
    • token bucket
    • sliding window
    • benchmark
  • 07

    Microservices با gRPC و صف پیام

    چند سرویس با ارتباط gRPC و طراحی رویدادمحور روی NATS.

    • gRPC
    • Protobuf
    • NATS
    • event-driven
  • 08

    Capstone

    یک سیستم production-grade با observability، Docker، CI/CD، load testing و مستندات.

    • OpenTelemetry
    • Docker
    • CI/CD
    • load testing

ساختار هر درس

هر درس یک قالب ثابت دارد

قالب یکسان کمک می‌کند روی مفهوم تمرکز کنید: هدف، مفهوم، کد، مقایسه، دام‌های رایج، نکته‌های Senior، تمرین و آزمون.

  1. ۱

    Go کنار Python

    هر مثال با نزدیک‌ترین کد idiomatic در Python و یک جدول مقایسه همراه است.

  2. ۲

    زیر کاپوت

    می‌بینید در runtime خود Go و در CPython دقیقاً چه اتفاقی می‌افتد.

  3. ۳

    تمرین در چهار سطح

    از Easy تا Senior Challenge، با کد شروع و تست خودکار که با make exercise اجرا می‌شود.

  4. ۴

    آزمون و چک‌لیست

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

آماده‌اید اولین برنامهٔ Go را بنویسید؟

از فاز ۰ شروع کنید: نصب ابزار، اولین برنامه و طرز فکر Go.