Skip to content

مقدمة في لغة Go

ما هي Go؟

Go (المعروفة أيضاً بـ Golang) هي لغة برمجة ثابتة الأنواع ومُجمّعة ومتزامنة، مع خاصية جمع المهملات، طورتها Google. بدأ تصميم لغة Go في عام 2007، وأُعلن عنها رسمياً في نوفمبر 2009، وأُصدرت النسخة الأولى Go 1.0 في مارس 2012.

كان الهدف من تصميم لغة Go هو حل المشاكل التي واجهتها Google في تطوير البرمجيات واسعة النطاق، خاصة:

  • بطء عملية التجميع
  • تعقيد إدارة التبعيات
  • صعوبة البرمجة المتزامنة
  • ضعف قابلية قراءة الكود

الخصائص الرئيسية

1. صياغة بسيطة

صياغة لغة Go بسيطة جداً، تحتوي على 25 كلمة مفتاحية فقط، مقارنة باللغات الأخرى:

اللغةعدد الكلمات المفتاحية
Go25
C32
C++63
Java50
Python35

الصياغة البسيطة تجعل لغة Go سهلة التعلم والاستخدام، ونمط الكود موحد، وقابلية القراءة عالية.

2. تجميع سريع

سرعة تجميع لغة Go سريعة جداً، وذلك بفضل:

  • تحسين تحليل التبعيات
  • التجميع المعياري
  • تنفيذ المجمع بكفاءة

يمكن للمشاريع الكبيرة عادةً إكمال التجميع في بضع ثوانٍ إلى عشرات الثواني.

3. تزامن أصلي

لغة Go تدعم التزامن على مستوى اللغة، وتوفر بديلتين للتزامن:

  • Goroutine: خيوط خفيفة الوزن، المكدس الابتدائي 2KB فقط، ويمكن أن ينمو ديناميكياً
  • Channel: للتواصل بين Goroutines
go
// بدء goroutine
go func() {
    fmt.Println("مرحباً من goroutine")
}()

// استخدام channel للتواصل
ch := make(chan int)
go func() {
    ch <- 42
}()
value := <-ch

4. أمان الذاكرة

  • جمع المهملات التلقائي (GC)
  • نظام أنواع قوي
  • ضمان أمان الذاكرة، لا توجد عمليات على المؤشرات

5. مكتبة قياسية غنية

توفر لغة Go مكتبة قياسية غنية، تشمل:

  • الشبكات (HTTP، RPC، WebSocket)
  • التشفير (AES، RSA، SHA)
  • معالجة الملفات
  • تحليل JSON/XML
  • إطار الاختبار
  • وغيرها

6. التجميع المتقاطع

Go تدعم التجميع المتقاطع، يمكن تجميع ملفات تنفيذية لمنصات أخرى على منصة واحدة:

bash
# تجميع ملف تنفيذي لنظام Windows على Linux
GOOS=windows GOARCH=amd64 go build -o app.exe

مجالات التطبيق

لغة Go لها تطبيقات واسعة في المجالات التالية:

الحوسبة السحابية والبنية التحتية

  • Docker: تقنية الحاويات
  • Kubernetes: منصة تنسيق الحاويات
  • Prometheus: نظام المراقبة
  • etcd: مخزن القيم المفتاحية الموزع

خدمات الشبكة

  • بنية الخدمات المصغرة
  • بوابات API
  • موازنات الحمل
  • أطر RPC

البلوكتشين

  • Ethereum: عميل Ethereum Geth
  • Hyperledger Fabric
  • مشاريع البلوكتشين العامة المختلفة

أدوات سطر الأوامر

  • Terraform: البنية التحتية ككود
  • Consul: اكتشاف الخدمات
  • Vault: إدارة المفاتيح
  • Helm: مدير حزم Kubernetes

قواعد البيانات

  • TiDB: قاعدة بيانات موزعة
  • CockroachDB: قاعدة بيانات SQL موزعة
  • InfluxDB: قاعدة بيانات السلاسل الزمنية

المقارنة مع اللغات الأخرى

الخاصيةGoJavaPythonC++
سرعة التجميعسريعمتوسطلا حاجة للتجميعبطيء
أداء التنفيذعاليمتوسطمنخفضعالي
دعم التزامنأصليمكتبة خيوطمكتبة خيوط/asyncمكتبة خيوط
منحنى التعلمسهلمتوسطسهلصعب
إدارة الذاكرةGCGCGCيدوي
طريقة النشرملف واحدJVMمترجمملف واحد

فلسفة التصميم

يمكن تلخيص فلسفة تصميم لغة Go في:

الأقل هو الأكثر

تتجلى في:

  1. طريقة واحدة للقيام بالأمور: لا توفر طرقاً متعددة لتحقيق نفس الوظيفة
  2. الصريح أفضل من الضمني: سلوك الكود واضح ومرئي
  3. التركيب أفضل من الوراثة: استخدام الواجهات والتركيب بدلاً من الوراثة
  4. البساطة أفضل من التعقيد: الحفاظ على بساطة اللغة والمكتبات

تميمة لغة Go

تميمة لغة Go هي جرذ أزرق (Gopher)، صممته Renee French. أصبح هذا Gopher اللطيف رمزاً لمجتمع Go.

الخطوة التالية

Golang تم تحريره بواسطة www.golangdev.cn