برمجة

Go

ما هو Go؟

ظهرت Go عام 2009 في Google. يبقى الكود قصيراً، ويُبنى البرنامج ملفاً واحداً يعمل بلا بيئة لغة منفصلة. فيها جمع قمامة، وليس فيها أصناف أو وراثة. تُنجز العمل المتوازي عبر goroutine وchannel.

فيمَ يُستخدم Go؟

تُختار Go لخدمات الشبكة والأدوات. أجزاء كبيرة من Docker وKubernetes مكتوبة بـ Go.

  • واجهة HTTP وخدمة صغيرة
  • برنامج سطر أوامر
  • أداة ملفات وشبكة
  • مشروع سحابة وحاويات

ماذا يمكن فعله باستخدام Go؟

بـ Go تكتب خدمة ويب سريعة وعملاً في الخلفية وأداة تنتقل من جهاز إلى آخر بالطريقة نفسها. المكتبة القياسية فيها خادم HTTP وJSON وأداة اختبار. لا تحرّر الذاكرة يدوياً كما في C.

هل تعلم Go صعب؟

القواعد صغيرة، لذا يخرج البرنامج الأول سريعاً. الصعب هو generic وتكرار فحص الخطأ والمؤشرات. لا يوجد إطار بحجم Java: تكتب أكثر بنفسك أو تختار مكتبة صغيرة.

المزايا والحدود

الميزة: برنامج بملف واحد وأخطاء واضحة وعمل متوازٍ قوي. الحد: مكتبات نوافذ سطح المكتب ضعيفة، فليست الخيار الأول لواجهة أو تطبيق هاتف. قد يبدو السطر أطول من Java أو Kotlin لأن الخطأ يُفحص في كل خطوة.

أفكار أساسية

في Go الأساس هو الحزمة والدالة وstruct. الخطأ غالباً قيمة مُعادة، وليس سلسلة استثناءات.

  • go.mod يحفظ الاعتماديات
  • goroutine عمل متوازٍ خفيف
  • channel ينقل البيانات بين الأعمال
  • gofmt يوحّد شكل الكود

مثال قصير

هذا البرنامج يكتب سطراً في الطرفية. إذا كان اسم الملف main.go فالأمر go run main.go.

package main

import "fmt"

func main() {
    fmt.Println("Hello")
}

أسئلة شائعة

  • هل Go وGolang اللغة نفسها؟ نعم. الاسم الرسمي Go، وفي البحث يُستخدم Golang أيضاً.
  • هل تستبدل Go لغة Java؟ ليس في كل مكان. كثيراً في خدمة الشبكة، لا في تطبيق Android.
  • هل يلزم C قبل Go؟ لا. C تدير الذاكرة يدوياً، وGo لا تفعل.