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

مرجع

واژه‌نامه

اصطلاح‌های انگلیسی Go همراه با برابر فارسی، توضیح کوتاه و نزدیک‌ترین مفهوم در Python.

۳۴ اصطلاح

arrayآرایه
دنباله‌ای با طول ثابت که طولش بخشی از نوع آن است؛ برای نمونه [4]int و [5]int دو نوع متفاوت‌اند. هنگام انتساب کپی می‌شود.
Python: معادل مستقیم ندارد؛ tuple با طول ثابت کمی شبیه آن است.
binaryفایل اجرایی
خروجی go build: یک فایل کد ماشین که runtime خود Go را درون خود دارد و بدون نصب Go اجرا می‌شود.
Python: معادل مستقیم ندارد؛ برنامهٔ Python برای اجرا به مفسر نیاز دارد.
build cacheحافظهٔ نهان ساخت
محلی که نتیجهٔ کامپایل هر package نگه داشته می‌شود تا کد تغییرنکرده دوباره کامپایل نشود. مسیر آن در متغیر GOCACHE است.
Python: نقش آن شبیه پوشهٔ __pycache__ است.
channelکانال
مجرای نوع‌دار برای فرستادن و گرفتن مقدار بین goroutineها. ارتباط و هم‌گام‌سازی را با هم انجام می‌دهد.
Python: شبیه queue.Queue یا asyncio.Queue.
closureبستار
تابعی که به متغیرهای محدودهٔ بیرونی خود دسترسی دارد و آن‌ها را زنده نگه می‌دارد.
Python: همان مفهوم closure در Python.
contextزمینه
مقداری که مهلت زمانی، سیگنال لغو و دادهٔ وابسته به درخواست را بین لایه‌ها و goroutineها منتقل می‌کند.
deferتعویق
اجرای یک فراخوانی را تا لحظهٔ بازگشت تابع به تأخیر می‌اندازد. برای آزاد کردن منابع مثل فایل و قفل استفاده می‌شود.
Python: نقش try/finally و context manager با with را دارد.
embeddingجاسازی
قرار دادن یک نوع بدون نام فیلد درون struct یا interface دیگر، تا فیلدها و methodهای آن ارتقا پیدا کنند. ابزار composition در Go است.
Python: جایگزین بسیاری از کاربردهای وراثت.
errorخطا
یک interface داخلی با تنها method به نام Error. خطا در Go یک مقدار بازگشتی معمولی است که صریح بررسی می‌شود.
Python: جایگزین مدل exception در Python.
escape analysisتحلیل گریز
تحلیلی در کامپایلر که تعیین می‌کند یک متغیر می‌تواند روی stack بماند یا باید به heap منتقل شود.
garbage collectorزباله‌روب
بخشی از runtime که حافظهٔ بدون ارجاع را خودکار آزاد می‌کند. در Go هم‌روند و از نوع mark and sweep است.
Python: CPython عمدتاً از شمارش ارجاع و یک جمع‌آور چرخه‌ای استفاده می‌کند.
genericsنوع‌های عمومی
امکان نوشتن تابع و نوع با پارامتر نوعی، تا یک کد برای چند نوع مختلف کار کند و ایمنی نوع حفظ شود.
Python: نزدیک به TypeVar و generic در typing.
GOPATHپوشهٔ کاری Go
پوشهٔ کاری Go که پیش‌فرض آن پوشهٔ go در خانهٔ کاربر است. cache ماژول‌ها و ابزارهای نصب‌شده با go install در آن قرار می‌گیرند. دیگر لازم نیست کد پروژه داخل آن باشد.
GOROOTریشهٔ نصب Go
پوشه‌ای که خود toolchain و کتابخانهٔ استاندارد در آن قرار دارد. معمولاً نیازی به تنظیم دستی آن نیست.
Python: شبیه محل نصب مفسر Python.
goroutineگوروتین
یک تابع در حال اجرای هم‌روند که runtime خود Go آن را زمان‌بندی می‌کند. بسیار سبک‌تر از thread سیستم‌عامل است و با کلیدواژهٔ go ساخته می‌شود.
Python: نزدیک‌ترین معادل: coroutine در asyncio یا thread، با این تفاوت که goroutine می‌تواند واقعاً موازی روی چند هسته اجرا شود.
interfaceواسط
مجموعه‌ای از امضای methodها. هر نوعی که همهٔ آن methodها را داشته باشد، بدون اعلام صریح، آن interface را برآورده می‌کند.
Python: نزدیک به typing.Protocol و duck typing؛ برخلاف ABC نیازی به ارث‌بری نیست.
mapنگاشت
ساختار کلید به مقدار مبتنی بر جدول درهم‌سازی. ترتیب پیمایش آن تضمین‌شده نیست و برای دسترسی هم‌زمان امن نیست.
Python: معادل dict، با این تفاوت که dict ترتیب درج را نگه می‌دارد.
methodمتد
تابعی که به یک نوع وصل است و یک receiver دارد. روی هر نوع تعریف‌شده در همان package قابل تعریف است، نه فقط struct.
middlewareمیان‌افزار
تابعی که یک http.Handler را می‌گیرد و Handler دیگری برمی‌گرداند تا رفتاری مثل لاگ یا احراز هویت را پیش و پس از درخواست اضافه کند.
Python: همان نقش middleware در Django.
moduleماژول
مجموعه‌ای از packageها که با هم نسخه‌بندی و منتشر می‌شوند و با فایل go.mod تعریف می‌شوند.
Python: نزدیک به یک پروژه با pyproject.toml.
mutexقفل انحصاری
قفلی که تضمین می‌کند در هر لحظه فقط یک goroutine به بخش بحرانی دسترسی دارد.
Python: معادل threading.Lock.
nilتهی
zero value نوع‌های pointer، slice، map، channel، تابع و interface. برخلاف None یک شیء یکتا نیست و نوع دارد.
Python: نزدیک به None.
packageبسته
واحد سازمان‌دهی و کامپایل کد در Go. همهٔ فایل‌های یک پوشه عضو یک package هستند و نام‌هایی که با حرف بزرگ شروع می‌شوند از بیرون دیده می‌شوند.
Python: نزدیک به module و package در Python.
panicوحشت
توقف ناگهانی جریان عادی برنامه برای خطاهای غیرقابل ادامه، مثل دسترسی بیرون از محدودهٔ slice. برای خطاهای عادی از مقدار error استفاده می‌شود، نه panic.
Python: شبیه بالا آمدن exception، ولی فقط برای موارد استثنایی.
pointerاشاره‌گر
مقداری که نشانی یک متغیر را نگه می‌دارد. در Go حساب اشاره‌گر وجود ندارد و حافظه را garbage collector مدیریت می‌کند.
Python: در Python همهٔ نام‌ها ارجاع به شیء هستند و اشاره‌گر صریح وجود ندارد.
race conditionوضعیت رقابتی
خطایی که وقتی رخ می‌دهد که چند goroutine هم‌زمان و بدون هم‌گام‌سازی به یک داده دسترسی دارند و دست‌کم یکی می‌نویسد. با پرچم -race قابل کشف است.
receiverگیرنده
پارامتر ویژهٔ method که مشخص می‌کند method روی چه نوعی تعریف شده است. می‌تواند مقداری (value receiver) یا اشاره‌گری (pointer receiver) باشد.
Python: نقش self را دارد.
recoverبازیابی
تابع داخلی که درون یک تابع deferشده جلوی ادامهٔ panic را می‌گیرد و کنترل را برمی‌گرداند.
runeرون
نام دیگر نوع int32 که یک code point از Unicode را نگه می‌دارد. برای کار درست با متن غیر ASCII مثل فارسی لازم است.
Python: در Python هر عنصر str یک code point است.
sliceبرش
نمایی پویا روی یک آرایهٔ پشتیبان، شامل اشاره‌گر، طول (length) و ظرفیت (capacity). پرکاربردترین ساختار دنباله‌ای در Go است.
Python: نزدیک به list، ولی چند slice می‌توانند یک آرایهٔ پشتیبان مشترک داشته باشند.
structساختار
نوع ترکیبی با فیلدهای نام‌دار. مقداری است، یعنی هنگام انتساب و ارسال به تابع کپی می‌شود.
Python: شبیه dataclass، ولی بدون وراثت.
toolchainزنجیرهٔ ابزار
مجموعهٔ کامپایلر، linker و ابزارهای همراه دستور go. نسخهٔ آن در go.mod قفل می‌شود و در صورت نیاز خودکار دانلود می‌شود.
worker poolاستخر کارگر
الگویی که تعداد ثابتی goroutine کارها را از یک channel مشترک برمی‌دارند تا میزان هم‌روندی محدود بماند.
Python: شبیه ThreadPoolExecutor یا workerهای Celery.
zero valueمقدار صفر
مقدار پیش‌فرض هر نوع وقتی متغیر بدون مقداردهی تعریف می‌شود: 0 برای عددها، رشتهٔ خالی برای string، false برای bool و nil برای pointer، slice، map، channel، تابع و interface.
Python: معادل ندارد؛ نام تعریف‌نشده NameError می‌دهد.