الثلاثاء، 25 أغسطس 2026

لغة Go (أو Golang)

 لغة Go (أو Golang) هي لغة برمجة مفتوحة المصدر طورها فريق في شركة Google (بقيادة روبرت غريسمر، روب بايك، وكين ثومبسون) وصدرت لأول مرة عام 2009. تم تصميمها لحل مشاكل تطوير البرمجيات الضخمة وتحسين الإنتاجية في بناء الأنظمة الموزعة والخدمات السحابية.

أبرز خصائص لغة Go

  • البساطة والوضوح: تحتوي على عدد قليل جداً من الكلمات المفتاحية (حوالي 25 كلمة فقط)، مما يجعلها سهلة التعلم والقراءة.

  • الأداء العالي (Compiled): تُترجم مباشرة إلى لغة الآلة (Machine Code)، مما يعطيها سرعة تنفيذ قريبة من لغة C/C++.

  • إدارة الذكرى تلقائياً (Garbage Collection): توفر مُجمع قمامة فعال يمتلك زمن توقف قصير جداً لتنظيف الذاكرة تلقائياً دون الحاجة لإدارتها يدوياً.

  • دعم المعالجة المتوازية (Concurrency): صُممت من الأساس للاستفادة القصوى من المعالجات متعددة الأنوية عبر ألياف البرمجة خفيفة الوزن المسماة Goroutines.

  • سرعة البناء والتجميع (Fast Compilation): يتم تجميع مشاريع Go الكبيرة خلال ثوانٍ معدودة.

كيف تختلف Go عن اللغات الأخرى؟

وجه المقارنةGo (Golang)PythonC++Java
نوع الترجمةCompiled (تجميع مباشر)Interpreted (تفسير)Compiled (تجميع مباشر)JIT / Bytecode (بيئة JVM)
الأداءسريع جداًبطيء مقارنة بالبقيةالأسرع على الإطلاقسريع
إدارة الذاكرةGarbage CollectionGarbage Collectionيدوي (Manual)Garbage Collection
البرمجة كائنية التوجه (OOP)لا تدعم الوراثة التقليدية، تعتمد على Structs و InterfacesOOP كاملةOOP كاملةOOP كاملة
المعالجة المتوازيةGoroutines و Channels (بسيطة وفائقة الخفة)Async/Threads (أبطأ وأعقد)Threads (سريعة لكنها معقدة)Threads (أثقل مساحةً وأعقد)
سهولة التعلمسهلة جداًسهلة جداًصعبة ومشبعة بالتفاصيلمتوسطة

أهم نقاط الاختلاف الجوهرية

  • غياب الوراثة (No Inheritance): بدلاً من الفئات (Classes) والوراثة التقليدية، تعتمد Go على التكوين (Composition) واستخدام الواجهات المتضمنة (Implicit Interfaces) لتنفيذ التركيب المرن.

  • خفة الـ Goroutines: الـ Thread التقليدي في Java أو C++ يستهلك نحو 1 إلى 2 ميجابايت من الذاكرة، بينما تبدأ الـ Goroutine في Go بحجم 2 كيلوبايت فقط، مما يسمح بتشغيل مئات الآلاف منها بالتوازي دون استهلاك مفرط للموارد.

  • المعاملة الصارمة للأخطاء (Explicit Error Handling): لا تستخدم Go نظام الاستثناءات التقليدي (try/catch)؛ بل تعيد الدوال الخطأ كقيمة إضافية يجب التحقق منها صراحة (if err != nil).

  • غياب الميزات المعقدة: استغنت Go قصداً عن بعض المفاهيم مثل Overloading للمعاملات أو الدوال لضمان بقاء الكود واضحاً ومقروءاً لأي مطور.

متى تُستخدم Go؟

  • البنية التحتية والخدمات السحابية: معظم أدوات السحاب الشهيرة برمجت بها (مثل Docker و Kubernetes).

  • تطوير واجهات البرمجة والخدمات المصغرة (Backend & Microservices): لخفتها وسرعة معالجتها للطلبات المتزامنة (REST APIs & gRPC).

  • أدوات السطر الأوامر (CLI Tools) والأنظمة الموزعة.



ليست هناك تعليقات:

إرسال تعليق

لغة OCaml

  لغة OCaml (اختصار لـ Objective Caml) هي لغة برمجة عالية المستوى متعددة أنماط البرمجة (Multi-paradigm)، ولكنها تركز بشكل أساسي على البرمجة...