مجله آموزش زبان EnglishVocabulary.ir

لغات ضروری زبان برنامه‌نویسی گو (Go/Golang)

در این راهنما، ما **لغات زبان Go** را به سادگی و گام به گام برای شما تشریح می‌کنیم تا دیگر هرگز در مسیر یادگیری Go احساس سردرگمی نکنید. آماده‌اید تا با اطمینان خاطر در دنیای Go قدم بگذارید؟

لغت کلیدی (Keyword) کاربرد اصلی (Main Usage) توضیح مختصر (Brief Explanation)
package سازماندهی کد (Code Organization) مجموعه‌ای از فایل‌های سورس که کد مرتبط را گروه‌بندی می‌کند.
func تعریف توابع (Function Definition) کلمه کلیدی برای تعریف یک تابع یا متد.
var / const تعریف متغیر / ثابت (Variable / Constant Definition) var برای متغیرها (مقدار قابل تغییر)، const برای ثابت‌ها (مقدار ثابت).
go هم‌روندی (Concurrency) اجرای یک تابع به عنوان یک “گوروتین” (goroutine) جدید و سبک‌وزن.
chan ارتباط بین گوروتین‌ها (Goroutine Communication) کانالی برای ارسال و دریافت مقادیر بین گوروتین‌ها.
📌 نگاهی به این مقاله بیندازید:گل “Sweaty” یعنی چی؟ (و چرا همه ازش بدشون میاد؟)

چرا تسلط بر لغات Go برای شما حیاتی است؟

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

نگران نباشید اگر در ابتدا برخی از این مفاهیم کمی پیچیده به نظر می‌رسند. این طبیعی است و بسیاری از یادگیرندگان با آن دست و پنجه نرم می‌کنند. ما اینجا هستیم تا با ساده‌سازی و مثال‌های عملی، این مسیر را برای شما هموار کنیم.

📌 مطلب مرتبط و خواندنی:اصطلاح “No Pain, No Gain”: فقط یه شعار نیست!

مفاهیم اساسی و لغات مربوطه (Fundamental Concepts & Vocabulary)

Package (بسته)

package یک کلمه کلیدی است که مجموعه‌ای از فایل‌های سورس Go را که منطقاً به هم مرتبط هستند، سازماندهی می‌کند. این مکانیسم شبیه به ماژول‌ها یا کتابخانه‌ها در زبان‌های دیگر است و به سازماندهی، قابلیت استفاده مجدد و جلوگیری از تداخل نام‌ها کمک می‌کند.

مثال:

package main // بسته اصلی برنامه
import (
"fmt" // وارد کردن بسته fmt برای توابع قالب‌بندی ورودی/خروجی
)
func main() {
fmt.Println("Hello, Go!")
}

Variables & Constants (متغیرها و ثابت‌ها)

در Go، var برای تعریف متغیرها (مکانی برای ذخیره داده که مقدار آن می‌تواند در طول زمان تغییر کند) و const برای تعریف ثابت‌ها (مقادیری که پس از تعریف قابل تغییر نیستند) استفاده می‌شود.

مثال:

func main() {
var message string = "Welcome" // تعریف متغیر با نوع صریح
var count int                // تعریف متغیر بدون مقدار اولیه (مقدار پیش‌فرض صفر)
count = 10                   // مقداردهی به متغیر
isActive := true             // اعلان متغیر کوتاه (نوع bool)
const PI float64 = 3.14159   // تعریف ثابت
// PI = 3.14 // ❌ Incorrect: نمی‌توان مقدار یک ثابت را تغییر داد.
fmt.Println(message, count, isActive, PI)
}

Functions (توابع)

توابع در Go با کلمه کلیدی func تعریف می‌شوند. آن‌ها بلوک‌هایی از کد هستند که وظایف خاصی را انجام می‌دهند و می‌توانند ورودی (آرگومان) دریافت کرده و خروجی (مقادیر برگشتی) تولید کنند.

مثال:

func add(a int, b int) int { // تابع add دو int می‌گیرد و یک int برمی‌گرداند
return a + b
}
func greet(name string) { // تابع greet یک string می‌گیرد و چیزی برنمی‌گرداند
fmt.Println("Hello,", name)
}
func main() {
sum := add(5, 3)
fmt.Println("Sum:", sum)
greet("Alice")
}
📌 همراه با این مقاله بخوانید:چطور تلفن رو “مودبانه” قطع کنیم؟ (بدون اینکه طرف ناراحت بشه)

Concurrency (هم‌روندی) – قلب Go

یکی از نقاط قوت اصلی Go، پشتیبانی داخلی و قدرتمند آن از هم‌روندی (concurrency) است. این بخش شامل لغات بسیار مهمی است که برای هر توسعه‌دهنده Go ضروری است.

Goroutine (گوروتین)

یک goroutine یک تابع یا متد است که به صورت هم‌زمان با سایر توابع یا متدها در حال اجراست. آن‌ها معادل سبک‌وزن (lightweight) نخ‌ها (threads) هستند که مدیریت آن‌ها بسیار ساده‌تر و کم‌هزینه‌تر است.

مثال:

import (
"fmt"
"time"
)
func sayHello() {
time.Sleep(1 * time.Second) // شبیه‌سازی کاری که زمان می‌برد
fmt.Println("Hello from Goroutine!")
}
func main() {
go sayHello() // اجرای sayHello در یک گوروتین جدید
fmt.Println("Hello from Main!")
time.Sleep(2 * time.Second) // منتظر می‌مانیم تا گوروتین فرصت اجرا پیدا کند
}

Channel (کانال)

channel ها وسیله اصلی ارتباط بین goroutine ها هستند. آن‌ها یک مسیر امن برای ارسال و دریافت مقادیر بین دو یا چند گوروتین فراهم می‌کنند و به جلوگیری از مشکلات هم‌روندی مانند Race Condition کمک می‌کنند.

مثال:

import "fmt"
func worker(done chan bool) {
fmt.Println("Worker started...")
// Simulate some work
fmt.Println("Worker finished.")
done <- true // ارسال سیگنال اتمام کار به کانال
}
func main() {
done := make(chan bool) // ایجاد یک کانال بولین
go worker(done)         // اجرای worker در یک گوروتین جدید
<-done // منتظر دریافت سیگنال از کانال می‌مانیم تا worker کارش تمام شود
fmt.Println("Main received signal, exiting.")
}
📌 موضوع مشابه و کاربردی:اصطلاح “Ghosting”: چرا یهو غیبش زد؟

Error Handling (مدیریت خطا)

مدیریت خطا در Go با استفاده از بازگرداندن مقادیر error به عنوان آخرین مقدار برگشتی از یک تابع انجام می‌شود.

مثال:

import (
"errors"
"fmt"
)
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("cannot divide by zero") // بازگرداندن یک خطا
}
return a / b, nil // بازگرداندن nil اگر خطایی نیست
}
func main() {
result, err := divide(10, 2)
if err != nil { // بررسی وجود خطا
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
// مثال defer
file, err := openFile("example.txt") // فرض کنید تابعی برای باز کردن فایل است
if err != nil {
fmt.Println(err)
return
}
defer closeFile(file) // تضمین می‌کند که فایل در پایان تابع بسته شود
// ادامه کار با فایل...
fmt.Println("File processed.")
}
📌 بیشتر بخوانید:حساب حساب، کاکا برادر: یعنی Account is Account؟ اشتباه نکن!

Types & Structs (انواع و ساختارها)

Go یک زبان Static Type است، به این معنی که انواع داده‌ها در زمان کامپایل مشخص می‌شوند. struct ها راهی برای ایجاد انواع داده‌های مرکب سفارشی هستند.

مثال:

import "fmt"
type Person struct { // تعریف یک struct به نام Person
Name string
Age  int
}
// تعریف یک interface
type Greeter interface {
SayHello() string
}
// متد برای struct Person که interface Greeter را پیاده‌سازی می‌کند
func (p Person) SayHello() string {
return fmt.Sprintf("Hi, my name is %s and I am %d years old.", p.Name, p.Age)
}
func main() {
p := Person{Name: "Alireza", Age: 30} // ایجاد یک نمونه از Person
fmt.Println(p.SayHello())
var g Greeter = p // یک Person می‌تواند به عنوان Greeter استفاده شود
fmt.Println(g.SayHello())
}
📌 پیشنهاد ویژه برای شما:قانون “Never Skip Leg Day” (پای مرغی نباش!)

Common Myths & Mistakes (باورهای غلط و اشتباهات رایج)

اشتباه در استفاده از nil

بلاک شدن Goroutineها یا فراموش کردن بستن کانال‌ها

نادیده گرفتن مدیریت خطا

📌 شاید این مطلب هم برایتان جالب باشد:چرا همه تو چت مینویسن “F”؟ (ریشه اصلی Press F to Pay Respects)

Common FAQ (سوالات متداول)

1. تفاوت اصلی بین goroutine و thread چیست؟

goroutine ها بسیار سبک‌وزن‌تر از thread ها هستند. Go runtime مدیریت زمان‌بندی (scheduling) goroutine ها را بر روی thread های سیستم‌عامل انجام می‌دهد و این کار را بسیار کارآمدتر از مدیریت مستقیم thread ها توسط برنامه‌نویس یا سیستم‌عامل انجام می‌دهد. هزاران goroutine می‌توانند بر روی تعداد کمی از thread های سیستم‌عامل اجرا شوند.

2. آیا باید همیشه کانال‌ها را close کنم؟

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

3. چرا Go از try-catch برای مدیریت خطا استفاده نمی‌کند؟

Go فلسفه متفاوتی برای مدیریت خطا دارد. به جای try-catch (که می‌تواند flow کنترل برنامه را پیچیده کند)، Go از بازگرداندن صریح مقدار error به عنوان آخرین مقدار برگشتی از توابع استفاده می‌کند. این رویکرد به برنامه‌نویسان کمک می‌کند تا خطاها را به صورت محلی و صریح مدیریت کنند و خوانایی کد را افزایش می‌دهد. تمرکز بر این است که خطاها بخشی از جریان عادی برنامه باشند و نه استثنائات نادر.

📌 این مقاله را از دست ندهید:اصطلاح “Stablecoin”: تتر (USDT) چیه و چرا مثل بیت‌کوین بالا پایین نمیشه؟

Conclusion (نتیجه‌گیری)

تبریک می‌گوییم! اکنون با مجموعه‌ای قوی از **لغات ضروری زبان Go** آشنا شده‌اید که پایه و اساس درک عمیق‌تر این زبان برنامه‌نویسی هستند. به یاد داشته باشید که یادگیری یک زبان برنامه‌نویسی، یک سفر است و تسلط بر واژگان تنها قدم اول است.

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

این پست چقدر برای شما مفید بود؟

برای امتیاز دادن روی ستاره‌ها کلیک کنید!

امتیاز میانگین 0 / 5. تعداد رای‌ها: 0

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

31 پاسخ

  1. سلام! ممنون بابت مقاله خوبتون. یک سوال در مورد کلمه ‘package’ دارم. در انگلیسی عمومی، ‘package’ بیشتر به معنی بسته یا جعبه به کار میره. آیا مفهوم ‘Code Organization’ و گروه بندی فایل‌ها از همون ریشه میاد یا اینجا یک اصطلاح تخصصی کاملاً جدیده؟

    1. سلام سارا خانم! سوال بسیار خوبی پرسیدید. بله، مفهوم ‘package’ در برنامه‌نویسی، ریشه‌ای مشترک با معنی عمومی ‘بسته’ یا ‘مجموعه’ دارد. در واقع، در هر دو مورد به مجموعه‌ای از اجزا (چه فیزیکی و چه فایل‌های کد) اشاره دارد که برای یک هدف خاص کنار هم قرار گرفته‌اند. این نشان می‌دهد که چطور زبان انگلیسی مفاهیم موجود را برای اصطلاحات جدید گسترش می‌دهد. در برنامه‌نویسی Go، ‘package’ دقیقاً همان کار سازماندهی و بسته‌بندی کد مرتبط را انجام می‌دهد.

  2. مقاله خیلی مفید بود، خسته نباشید. من همیشه در تلفظ ‘goroutine’ مشکل دارم. می‌تونید راهنمایی کنید که تلفظ صحیحش چطوریه؟

    1. سلام امیر عزیز! بله حتماً. تلفظ صحیح ‘goroutine’ به صورت /ɡoʊˈruːtiːn/ است. اگر بخواهیم ساده‌سازی کنیم، چیزی شبیه به ‘گُو-روتین’ (با تاکید روی ‘رو’) شنیده می‌شود. تمرین کنید و از شنیدن تلفظ آن در دیکشنری‌های آنلاین یا ویدئوهای آموزشی استفاده کنید تا کاملاً مسلط شوید.

  3. ممنون از توضیحات عالی و ساده‌تون! واقعا برای یادگیری Go لازم بود. مخصوصا درک ‘Concurrency’ و ‘Goroutine Communication’ با این واژگان خیلی راحت‌تر میشه.

  4. آیا ‘func’ در Go، یک شکل مختصر یا عامیانه (informal) از ‘function’ در انگلیسی عمومی محسوب میشه؟ یا در محیط‌های تخصصی برنامه‌نویسی کاملاً پذیرفته شده و استاندارده؟

    1. سلام زهرا خانم! ‘func’ در زبان Go کاملاً یک کلمه کلیدی استاندارد و رسمی است و به هیچ وجه یک شکل عامیانه یا غیررسمی محسوب نمی‌شود. بسیاری از زبان‌های برنامه‌نویسی برای سادگی و کارایی، کلمات کلیدی خود را کوتاه می‌کنند. مثلاً ‘var’ برای ‘variable’ یا ‘const’ برای ‘constant’. این رویه در مستندات رسمی و جامعه برنامه‌نویسی Go کاملاً پذیرفته شده است.

  5. در مورد ‘chan’، آیا این کلمه مخفف ‘channel’ هست؟ و آیا ‘channel’ در اینجا فقط یک اصطلاح تخصصی Go است یا در انگلیسی عمومی هم برای ارتباطات این چنینی استفاده می‌شود؟

    1. بله علی جان، ‘chan’ دقیقاً مخفف ‘channel’ است. کلمه ‘channel’ در انگلیسی عمومی نیز به معنی ‘کانال’ یا ‘مسیر ارتباطی’ کاربرد وسیعی دارد، مثلاً ‘communication channel’ (کانال ارتباطی) یا ‘TV channel’ (کانال تلویزیون). در Go، این کلمه به زیبایی مفهوم یک ‘کانال’ برای ارسال و دریافت اطلاعات بین بخش‌های مختلف برنامه (goroutines) را منتقل می‌کند، که کاملاً با معنی عمومی آن هم‌راستا است.

  6. توضیح ‘var’ و ‘const’ خیلی واضح بود. می‌خواستم بدونم در یک جمله انگلیسی معمولی، برای اشاره به چیزی که مقدارش ثابت یا متغیر هست، از ‘variable value’ یا ‘constant value’ استفاده می‌کنیم یا اصطلاحات دیگری رایج‌تره؟

    1. سوال خوبی پرسیدید مریم خانم. بله، اصطلاحات ‘variable value’ و ‘constant value’ در انگلیسی عمومی و فنی کاملاً رایج و صحیح هستند، به خصوص وقتی در مورد مقادیر عددی یا داده‌ای صحبت می‌کنیم. برای مثال، می‌توانید بگویید ‘The temperature is a variable value’ (دما یک مقدار متغیر است) یا ‘Pi is a constant value’ (عدد پی یک مقدار ثابت است). همچنین از ‘fixed value’ (مقدار ثابت) هم به جای ‘constant value’ استفاده می‌شود.

  7. سلام و خسته نباشید! فکر می‌کنم یکی از اصطلاحات مهم دیگه در Go، ‘interface’ هست. اگه بشه یه توضیح مختصر انگلیسی و فارسیش رو هم به این لیست اضافه کنید خیلی عالی میشه. از نظر انگلیسی، تفاوت ‘interface’ با ‘abstract class’ چیه؟

    1. سلام رضا جان، پیشنهاد بسیار خوبیه! حتماً در آپدیت‌های بعدی به ‘interface’ و سایر اصطلاحات مهم Go خواهیم پرداخت. در مورد سوالتان، ‘interface’ در برنامه‌نویسی (خصوصاً در زبان‌هایی مثل Go یا Java) به معنی مجموعه‌ای از متدهاست که یک نوع (type) باید آن‌ها را پیاده‌سازی کند. در انگلیسی عمومی، ‘interface’ به معنی ‘رابط’ یا ‘سطح مشترک’ است، مثلاً ‘user interface’ (رابط کاربری). تفاوت اصلی آن با ‘abstract class’ (که بیشتر در زبان‌های شیءگرا مثل Java یا C++ دیده می‌شود) در این است که ‘interface’ فقط ‘چه کاری انجام شود’ را مشخص می‌کند و هیچ پیاده‌سازی‌ای ندارد، در حالی که ‘abstract class’ می‌تواند هم متدهای پیاده‌سازی نشده (abstract methods) و هم متدهای پیاده‌سازی شده داشته باشد و حتی فیلد (state) هم نگه دارد. در Go، ‘interface’ یک مفهوم بسیار قدرتمند برای Polymorphism است.

  8. خیلی ممنون از مقاله آموزنده‌تون. در مورد کلمه کلیدی ‘go’ برای ‘Concurrency’، آیا این کاربرد تخصصی ‘go’ به نوعی با معنی عمومی ‘رفتن’ یا ‘شروع کردن’ در ارتباطه؟ یعنی انگار میگیم ‘این کار رو برو انجام بده’؟

    1. سلام حسین جان! بله، تحلیل شما بسیار دقیق است. ارتباط معنایی عمیقی بین ‘go’ در نقش کلمه کلیدی برای هم‌روندی و معنی عمومی آن در انگلیسی وجود دارد. وقتی می‌گوییم ‘go foo()’ در Go، در واقع داریم به سیستم می‌گوییم ‘این تابع foo را به صورت مستقل و هم‌زمان (برو) اجرا کن’. این مثال خوبی از چگونگی استفاده از کلمات رایج انگلیسی برای ایجاد مفاهیم جدید و شهودی در حوزه فنی است.

  9. ممنون از مطلب جامع و مفیدتون. جمع ‘goroutine’ چیه؟ آیا ‘goroutines’ میشه یا شکل خاصی داره؟

    1. سلام کیانا خانم! سوال خوبی پرسیدید. بله، جمع ‘goroutine’ دقیقاً ‘goroutines’ است، با اضافه کردن ‘s’ به آخر کلمه. این قاعده برای اکثر اسامی در زبان انگلیسی صدق می‌کند و ‘goroutine’ هم از همین الگو پیروی می‌کند. مثلاً: ‘One goroutine, many goroutines’.

  10. واقعاً تبریک میگم بابت این محتوای عالی. اینکه چطور ‘Concurrency’ و ‘Goroutine Communication’ رو با لغات کلیدی Go توضیح دادید، خیلی کمک می‌کنه تا مفاهیم رو بهتر درک کنیم.

  11. در بخش جدول، ‘Main Usage’ به کار رفته. آیا می‌تونستیم به جاش از ‘Primary Use’ استفاده کنیم؟ از نظر انگلیسی، این دو تا اصطلاح کاملاً به جای هم استفاده میشن یا تفاوت‌های ظریفی دارند؟

    1. سلام شیرین خانم! بله، ‘Main Usage’ و ‘Primary Use’ هر دو کاملاً صحیح و قابل تعویض هستند و در اکثر موارد به جای یکدیگر به کار می‌روند، به خصوص در متون فنی یا آموزشی که به کاربرد اصلی چیزی اشاره می‌کنند. هر دو به معنای ‘کاربرد اصلی’ یا ‘هدف اصلی’ هستند و تفاوت ظریفی بینشان وجود ندارد. انتخاب هر کدام بیشتر به سلیقه نگارنده برمی‌گردد.

  12. من کلمه ‘channel’ رو در حوزه‌های دیگه تکنولوژی هم شنیدم، مثلاً ‘data channel’. آیا معنی کلی ‘channel’ در انگلیسی برای انواع انتقال اطلاعات یکسانه؟

    1. بله سعید جان، کاملاً درست است. معنی کلی ‘channel’ در انگلیسی، به معنای ‘مسیر’ یا ‘مجرایی’ است که اطلاعات، سیگنال‌ها، یا حتی مایعات از طریق آن منتقل می‌شوند. چه در ‘data channel’ برای انتقال داده، چه در ‘communication channel’ برای ارتباطات انسانی، و چه در ‘chan’ در Go برای انتقال مقادیر بین goroutineها، مفهوم اصلی یکسان است: یک مسیر تعریف شده برای جریان یافتن چیزی. این یکی از زیبایی‌های زبان انگلیسی است که یک کلمه می‌تواند با حفظ هسته معنایی خود، در زمینه‌های مختلف به کار رود.

  13. به جای ‘Brief Explanation’ میشه ‘Short Description’ هم گفت؟ کدومش در انگلیسی رایج‌تره برای یک توضیح مختصر؟

    1. سلام الهه خانم! هم ‘Brief Explanation’ و هم ‘Short Description’ هر دو کاملاً صحیح و رایج هستند و به یک معنی (توضیح کوتاه) به کار می‌روند. در متون آموزشی و فنی، هر دو به کرات استفاده می‌شوند و انتخاب بین آنها بیشتر به سبک نوشتاری نویسنده بستگی دارد. هیچ‌کدام بر دیگری برتری معناداری ندارد.

  14. خیلی وقت‌ها در جملات انگلیسی، بین ‘variable’ و ‘changeable’ یا ‘constant’ و ‘fixed’ قاطی می‌کنم. آیا این اصطلاحات کاملاً به جای هم به کار میرن یا کاربرد متفاوتی دارن؟

    1. سلام داوود عزیز! سوال بسیار مهمی است. کلمات ‘variable’ و ‘changeable’ در بسیاری موارد می‌توانند مترادف باشند، اما ‘variable’ بیشتر در زمینه‌های علمی، ریاضی، یا برنامه‌نویسی به یک کمیت یا مقداری که می‌تواند تغییر کند اشاره دارد. ‘Changeable’ بیشتر یک صفت عمومی است برای هر چیزی که قابلیت تغییر دارد (مثل ‘changeable weather’). به همین ترتیب، ‘constant’ و ‘fixed’ نیز در اکثر مواقع مترادف هستند، اما ‘constant’ اغلب به چیزی اشاره دارد که در طول زمان ثابت می‌ماند (مثل ‘constant speed’ یا ‘constant value’ در ریاضیات)، در حالی که ‘fixed’ می‌تواند به معنای ‘تعیین شده’ یا ‘غیرقابل جابجایی’ هم باشد (مثلاً ‘fixed price’ یا ‘fixed object’). در برنامه‌نویسی، ‘variable’ و ‘constant’ اصطلاحات دقیق و تخصصی هستند و به معنای ‘متغیر’ و ‘ثابت’ به کار می‌روند.

  15. این مقاله واقعا عالیه! اینکه لغات تخصصی انگلیسی رو اینقدر شفاف و ساده توضیح میدید، یادگیری رو خیلی راحت‌تر می‌کنه. ممنون از زحماتتون.

  16. در ‘Code Organization’، کلمه ‘organization’ اینجا اسم هست یا فعل؟ گاهی در تشخیص noun از verb در انگلیسی دچار مشکل میشم. چطور میشه تشخیص داد؟

    1. سلام آرش جان! سوالی که پرسیدید یک نکته گرامری مهم در انگلیسی است. در عبارت ‘Code Organization’، کلمه ‘organization’ یک اسم (noun) است. این را می‌توان از چند طریق تشخیص داد: اولاً، اغلب وقتی کلمه‌ای با ‘tion-‘ یا ‘sion-‘ تمام می‌شود، اسم است (مثل ‘information’, ‘decision’). ثانیاً، در این عبارت، ‘Code’ نقش متمم اسم (مثل صفت) را برای ‘Organization’ بازی می‌کند و مشخص می‌کند چه نوع سازماندهی‌ای مد نظر است. اگر فعل بود، معمولاً به شکل ‘to organize code’ یا ‘organizing code’ می‌آمد. پس ‘Code Organization’ به معنای ‘سازماندهی کد’ است که در اینجا یک مفهوم اسمی است.

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

    1. سلام یاسمن خانم! پیشنهاد شما عالی است و حتماً به آن خواهیم پرداخت. به طور خلاصه، در زبان انگلیسی و در زمینه برنامه‌نویسی، ‘function’ (تابع) یک بلوک کد مستقل است که می‌تواند فراخوانی شود. اما ‘method’ (متد) یک ‘function’ است که به یک شیء (object) یا ساختار (struct) خاص تعلق دارد و روی داده‌های آن شیء عمل می‌کند. این تمایز در زبان‌های برنامه‌نویسی شیءگرا و حتی در Go (که متدها را روی typeها تعریف می‌کند) بسیار مهم است. برای مثال، در Go، وقتی ‘func (t MyType) doSomething()’ را می‌نویسید، ‘doSomething’ یک متد برای نوع ‘MyType’ است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *