ما هي لغة البرمجة Go أو Golang؟

0 الأسهم
0
0
0
0

مقدمة

Go، المعروفة أيضًا باسم Golang أو Go، هي لغة برمجة مفتوحة المصدر طورتها جوجل. يستخدم مطورو البرامج Go على مجموعة من المنصات وأطر العمل لتطوير تطبيقات الويب، والخدمات السحابية والشبكية، وأنواع أخرى من البرامج.

لغة Go ثابتة الكتابة، صريحة، ومصممة على غرار لغة البرمجة C. سرعة بدء تشغيل Go، وانخفاض تكلفة تشغيلها، وقدرتها على العمل بدون آلة افتراضية (VM) جعلتها لغة شائعة جدًا لكتابة الخدمات المصغرة والتطبيقات الأخرى. بالإضافة إلى ذلك، تُستخدم Go في البرمجة المتزامنة - وهي استراتيجية تنفيذ مهام متعددة في آنٍ واحد، بشكل غير مرتب أو جزئي.

استُلهمت لغة Go من كفاءة بايثون وبساطتها النسبية. تستخدم روتينات جو، أو عمليات خفيفة، ومجموعة من الحزم لإدارة التبعيات بكفاءة. صُممت لحل العديد من المشكلات، بما في ذلك بطء أوقات البناء، والتبعيات غير المنضبطة، وتكرار الجهود، وصعوبة كتابة الأدوات الآلية، والتطوير متعدد اللغات.

فيما يلي بعض الميزات الرئيسية لـ Go:

  1. البساطة: صُممت لغة Go لتكون سهلة التعلم والاستخدام. بنيتها النحوية بسيطة ومباشرة، مما يجعلها خيارًا مثاليًا للمبتدئين والمبرمجين ذوي الخبرة على حد سواء.
  2. التزامن: تتمتع Go بدعم مدمج للتزامن، مما يسمح للمطورين بكتابة كود فعال وقابل للتطوير للأنظمة متعددة النواة والموزعة.
  3. جمع القمامة: تتمتع Go بإدارة تلقائية للذاكرة مما يحرر المطورين من القلق بشأن تخصيص الذاكرة وإلغاء تخصيصها.
  4. وقت تجميع سريع: تتمتع Go بمُجمِّع سريع يجعل من السهل التكرار بسرعة أثناء التطوير.
  5. دعم عبر الأنظمة الأساسية: يمكن تجميع Go لتشغيله على العديد من الأنظمة الأساسية المختلفة، بما في ذلك Windows وLinux وmacOS.
  6. الكتابة القوية: Go هي لغة ذات نوع ثابت تساعد على اكتشاف الأخطاء في وقت التجميع وليس وقت التشغيل.
  7. تتمتع لغة Go بمجتمع كبير ومتنامٍ من المطورين وتستخدمها العديد من الشركات المعروفة بما في ذلك Google وUber وDropbox.

فيما يلي بعض النقاط المهمة حول لغة البرمجة Go:

  1. Go هي لغة ذات نوع ثابت، مما يعني أنه يجب الإعلان عن نوع المتغير قبل أن يتم استخدامه.
  2. يحتوي Go على جامع قمامة مدمج يقوم بتحرير الذاكرة تلقائيًا عندما لا تكون هناك حاجة إليها بعد الآن.
  3. تتمتع لغة Go بدعم قوي للتزامن، مما يسمح للمطورين بكتابة أكواد فعالة وقابلة للتطوير للأنظمة متعددة النواة والموزعة.
  4. تتمتع لغة Go بقواعد نحوية بسيطة وسهلة التعلم والقراءة.
  5. تتمتع لغة Go بمُجمِّع سريع يُنتج كودًا مُحسَّنًا للهندسة المعمارية للأجهزة الحديثة.
  6. تحتوي لغة Go على مكتبة قياسية تدعم مجموعة واسعة من الوظائف، بما في ذلك الشبكات، والتشفير، وإدارة الملفات.
  7. تتمتع لغة Go بمجتمع متنامٍ من المطورين ونظام بيئي حيوي من الحزم والأدوات التابعة لجهات خارجية.
  8. يتم استخدام Go من قبل العديد من الشركات الشهيرة لبناء أنظمة موزعة واسعة النطاق وتطبيقات عالية الأداء.
  9. بشكل عام، تُعدّ Go لغة برمجة قوية وفعّالة، ومناسبة تمامًا لبناء التطبيقات الحديثة والأنظمة الموزعة. دعمها القوي للتزامن والقواعد النحوية البسيطة يجعلها خيارًا جذابًا للمطورين الراغبين في بناء تطبيقات قابلة للتطوير وفعالة.

تتمتع لغة Go أيضًا بقواعد نحوية بسيطة ونظام نوع بسيط، مما يجعلها سهلة التعلم والاستخدام حتى بالنسبة للأشخاص الذين ليس لديهم خبرة سابقة في البرمجة.

فيما يلي برنامج "Hello World" في Go:

package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}

توجد العديد من بيئات التطوير المتكاملة عبر الإنترنت مثل The Go Playground، وrepl.it، وما إلى ذلك، والتي يمكن استخدامها لتشغيل برامج Go دون الحاجة إلى التثبيت.
لتثبيت Go على جهاز الكمبيوتر الشخصي أو الكمبيوتر المحمول، نحتاج إلى البرنامجين التاليين: محرر النصوص والمترجم.
محرر النصوص: يوفر لك محرر النصوص منصة لكتابة شيفرتك المصدرية. فيما يلي قائمة بمحررات النصوص:

  • مفكرة ويندوز
  • أمر تحرير نظام التشغيل
  • مختصر
  • إبسيلون
  • vm أو vi
  • إيماكس
  • كود VS

العثور على مُجمِّع Go: يتوفر توزيع Go كملفات ثنائية قابلة للتثبيت لنظام FreeBSD (الإصدار 8 وما فوق)، وLinux، وMac OS X (Snow Leopard وما فوق)، وأنظمة التشغيل Windows مع معماريات معالج x86 32 بت (386) و64 بت (amd64).

كتابة برنامجك الأول بلغة Go:

package main 
import "fmt"
func main() {
// prints geeksforgeeks
fmt.Println("Hello, geeksforgeeks") 
}

شرح بناء جملة برنامج Go:

السطر الأول: يحتوي على حزمة البرنامج الرئيسية، التي تحتوي على المحتوى العام للبرنامج. وهو نقطة البداية لتنفيذ البرنامج، لذا من الضروري كتابته.

السطر الثاني: يحتوي على جملة الاستيراد "fmt". في لغة Go (Golang)، تُستخدم جملة الاستيراد لتضمين حزم خارجية تُوفر وظائف إضافية تتجاوز ميزات اللغة المُدمجة. في هذه الحالة، تُمثل "fmt" حزمة تُوفر وظائف لتنسيق الإدخال والإخراج.

السطر 3: تبدأ الوظيفة الرئيسية تنفيذ البرنامج.

السطر الرابع: دالة fmt.Println() هي دالة مكتبة قياسية لطباعة البيانات على الشاشة. في هذه الحزمة، تتضمن fmt دالة Println المستخدمة لعرض النتائج.

التعليقات: تُستخدم التعليقات لشرح الكود، وتُستخدم بطريقة مشابهة في جافا أو سي أو سي++. تتجاهل المُجمِّعات مُدخلات التعليقات ولا تُنفِّذها. يمكن أن تكون التعليقات سطرًا واحدًا أو عدة أسطر.

لماذا هذه "لغة جو"؟

لأن Go هي محاولة للجمع بين سهولة برمجة لغة مُفسّرة ومُكتوبّة ديناميكيًا وكفاءة وأمان لغة مُكتوبة ومُجمّعة. كما تهدف إلى أن تكون حديثة مع دعم الحوسبة الشبكية ومتعددة الأنوية.

ما هو الموجود في اللغات الأخرى، باستثناء لغة جو؟
  • تسعى لغة Go جاهدةً لتقليل الكتابة بكل معانيها. طوال تصميمها، عمل المطورون على تقليل الفوضى والتعقيد.
  • لا توجد إعلانات توجيهية ولا ملفات رأسية. يُعلن كل شيء مرة واحدة فقط.
  • يتم تقليل التلعثم من خلال اشتقاق النوع البسيط باستخدام بنية := declaration-and-initialize.
  • لا يوجد أي نوع من التسلسل الهرمي: الأنواع موجودة فقط، ولا يتعين عليها الإعلان عن علاقاتها.
قيود الأجهزة

لقد رأينا أنه في عقد من الزمان، يتغير تكوين الأجهزة والمعالجة بمعدل بطيء للغاية. في عام 2004، كانت سرعة ساعة P4 3.0 جيجاهرتز والآن في عام 2018، تبلغ سرعة ساعة MacBook Pro ما يقرب من (2.3 جيجاهرتز مقابل 2.66 جيجاهرتز). ولتسريع الأداء، نستخدم المزيد من المعالجات ولكن استخدام المزيد من المعالجات يزيد أيضًا من التكلفة. وبسبب هذا فإننا نستخدم معالجات محدودة وباستخدام معالج محدود لدينا لغة برمجة ثقيلة تستهلك تقنية Threading المزيد من الذاكرة وتقلل من أداء نظامنا. وبالتالي، للتغلب على هذه المشكلة، تم تصميم Golang بطريقة تستخدم Goroutine بدلاً من استخدام تقنية Threading وهو ما يشبه تقنية Threading ولكنه يستهلك ذاكرة أقل بكثير.
على سبيل المثال، يستهلك الترابط 1 ميجا بايت بينما يستهلك Goroutine 2 كيلوبايت من الذاكرة، لذا في نفس الوقت، يمكننا تشغيل ملايين Goroutines.
لذا فإن النقطة التي ناقشناها أعلاه تجعل Golang لغة قوية تتعامل مع C++ وJava في نفس الوقت.

مميزات وعيوب لغة جو

المزايا:
  • مرنة - موجزة، بسيطة، وسهلة القراءة.
  • التزامن - يسمح ذلك بتشغيل عمليات متعددة في وقت واحد وبكفاءة.
  • نتيجة سريعة - وقت التجميع سريع جدًا.
  • المكتبة - توفر مكتبة غنية بالمعايير.
  • جمع القمامة - إحدى الميزات الرئيسية لـ Go هي أن Go تتفوق في توفير قدر كبير من التحكم في تخصيص الذاكرة وقد قللت بشكل كبير من زمن الوصول في أحدث إصدارات جمع القمامة.
  • يتم التحقق من صحة تضمين الواجهة والنوع.
  • التزامن: توفر Go دعمًا ممتازًا للتزامن، مما يُسهّل كتابة أكواد برمجية تُنفّذ مهام متعددة في آنٍ واحد. يتحقق ذلك من خلال الروتينات الفرعية والقنوات، التي تُمكّنك من كتابة أكواد برمجية تُنفّذ عمليات متعددة في آنٍ واحد.
  • الأداء: صُممت لغة Go لتكون سريعة وفعالة، مع التركيز على الأداء واستهلاك منخفض للذاكرة. هذا يجعلها مثالية لبناء خدمات شبكات عالية الأداء، بالإضافة إلى حل المشكلات الحسابية المعقدة.
  • البساطة: تتمتع لغة Go ببنية نحوية بسيطة ونظام نوع بسيط، مما يجعلها سهلة التعلم والاستخدام حتى بالنسبة للأشخاص الذين ليس لديهم خبرة سابقة في البرمجة.
  • جمع البيانات المهملة: يحتوي Go على جامع بيانات مهملة مدمج يُدير الذاكرة تلقائيًا نيابةً عنك. هذا يُلغي الحاجة إلى إدارة الذاكرة يدويًا، ويُقلل من احتمالية تسرب الذاكرة والأخطاء الأخرى التي قد تنشأ عن إدارتها اليدوية.
  • كتابة ثابتة: لغة Go هي لغة كتابة ثابتة، أي أن الأنواع تُحدَّد عند التجميع. هذا يوفر أمانًا أقوى للأنواع ويُسهِّل اكتشاف أخطاء الأنواع قبل حدوثها.
العيوب:
  • لا يوجد دعم للأنواع العامة، على الرغم من وجود الكثير من المناقشات حول هذا الموضوع.
  • تعتبر الحزم الموزعة مع لغة البرمجة هذه مفيدة للغاية، ولكن Go ليست موجهة للكائنات بالمعنى التقليدي.
  • بعض المكتبات مفقودة، وخاصة مجموعة أدوات واجهة المستخدم.
  • ميزات محدودة للبرمجة كائنية التوجه: تفتقر لغة Go إلى ميزات متكاملة للبرمجة كائنية التوجه، مثل الوراثة وتعدد الأشكال. هذا قد يُصعّب كتابة البرامج المعقدة، خاصةً للمطورين المُعتادين على لغات البرمجة كائنية التوجه التقليدية.
  • لا يوجد Generics: لا يوجد لدى Go دعم مدمج للـ Generics، مما يجعل من الصعب كتابة كود قابل لإعادة الاستخدام.
  • مكتبة المعايير غير الناضجة: مكتبة Go القياسية جديدة نسبيًا ولا تزال في مرحلة النضج، مما قد يجعل من الصعب العثور على الأدوات التي تحتاجها لمهمة معينة.
بعض التطبيقات الشائعة التي تم تطويرها بلغة Go
  • Docker: مجموعة من الأدوات لنشر حاويات Linux
  • Openshift: منصة الحوسبة السحابية كخدمة من Red Hat.
  • Kubernetes: مستقبل عمليات النشر الآلية الموحدة
  • Dropbox: نقل بعض مكوناته الأساسية من Python إلى Go.
  • Netflix: لجزأين من بنية الخادم الخاصة بهم.
  • InfluxDB: هي قاعدة بيانات مفتوحة المصدر لسلاسل زمنية تم تطويرها بواسطة InfluxData.
  • جولانج: اللغة نفسها مكتوبة بلغة جو.
اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً