لغة البرمجة GO الجزء الأول

المقدمة

هي لغة برمجة حديثة مفتوحة المصدر. تم تطويرها في شركة قوقل Google منذ عام 2007.
وتنتمي لعائلة لغات البرمجة من نوع Cross-Platform أي متعددة المنصات . والمقصود بذلك أنه يمكن أن يتم كتابة برنامج ضمن جهاز حاسوب ونظام تشغيل معين ليتم تنفيذه على جهاز آخر ونظام تشغيل مختلف. على سبيل المثال: يمكن كتابة برنامج في نظام وندوز ليتم تشغيله ضمن نظام لينوكس.

تشبه لغة البرمجة GO في قواعدها كثيرا من قواعد لغة البرمجة C . وهي أيضا سريعة وذات أداء عالي.
لذلك يتم استخدامها في كتابة برامج و تطبيقات الشبكات و مواقع الانترنت من جهة الخادم Server-Side .

وهي لغة برمجة ستاتيكية أو ما يسمى Statically typed . أي أنه يجب تحديد أنواع جميع المكونات من متغيرات وتوابع في مرحلة البرمجة وقبل تجميع البرنامج . وليس في مرحلة التشغيل كما هو الحال في لغات البرمجة الديناميكية مثل بايثون أو جافاسكريبت مثلا.

سوف نتعلم لغة البرمجة GO في هذه الدورة من خلال الأمثلة. ولكن في البداية نحتاج تثبيت بعض البرامج الضرورية لكتابة وتشغيل الأكواد البرمجية.

تثبيت أدوات لغة البرمجة

نحتاج قبل كتابة أي برنامج بلغة البرمجة إلى تثبيت مجموعة من البرامج الضرورية. وفي حالتنا هذه نحتاج إلى Compiler أو ما يسمى المجمّع وهو موجود في الموقع الرسمي لهذه اللغة في الرابط التالي:
https://golang.org/dl
لغة البرمجة هذه مدعومة من أغلب أنظمة التشغيل, لذلك نختار الحزمة البرمجية التي نحتاجها حسب نظام التشغيل الذي نستخدمه.
بعد تحميل وتثبيت لغة البرمجة نقوم بالتأكد من أن كل شيء يعمل بشكل جيد من خلال التحقق من اصدار لغة البرمجة المثبتة وذلك بكتابة الأمر التالي في محرر الأوامر:

go version

وبتنفيذ هذا الأمر تظهر لنا معلومات عن اصدار هذه اللغة. وفي حالتنا هنا الاصدار هو go1.19.1

أيضا نحتاج إلى محرر نص لكتابة البرامج , ويمكن استخدام أي محرر نصوص. لكن من الأفضل استخدام محرر أكواد برمجية أو بيئة برمجة مثل Visual Studio Code مثلا. وهذا ما سنعتمد عليه في هذه الدورة.
لذلك نقوم بتحميل Visual Studio Code من موقع شركة مايكروسوفت الرسمي.

وللاستفادة من جميع ميزات بيئة البرمجة Visual Studio Code نقوم بتثبيت الإضافة GO المدعومة من شركة google والموجودة في الرابط التالي VS Code Go extension.
أو من خلال بيئة البرمجة, نفتح قسم الإضافات ونكتب في صندوقالبحث كلمة GO . كما في الشكل:

بعد تثبيت هذه الإضافة نقوم بإعداد بيئة البرمجة للعمل مع هذه اللغة من خلال مايلي:
– نضغط كل من : Ctrl + Shift + p
فتظهر لنا نافذة البحث في الأعلى . نكتب فيها ما يلي :
Go: Install/Update Tools

فتظهر مجموعة من الخيارات نقوم بتحديدها جميعا ونضغط موافق OK .
كما في الشكل :

هذا كل مانحتاجه من اعدادات. ولننتقل لإنشاء أول مشروع لنا في هذه الدورة.

أولا نقوم بإنشاء مجلد نضع فيه ملفات البرنامج. وليكن اسمه helloGo ونفتح هذا المجلد في بيئة البرمجة VS Code .
ثم نفتح محرر الأوامر وننتقل إلى داخل المجلد الذي أنشأناه. وفي حالتنا هنا مثلا المجلد ضمن المسار التالي:

D:\Tutorials\GO\helloGo

ونكتب الأمر التالي :

go mod init example/hello

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

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

لنبدأ بإنشاء ملف ضمن مجلد المشروع ونسميه hello.go
ولنكتب فيه الكود التالي:

package main
import ("fmt")

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

هذا عبارة عن برنامج بلغة البرمجة GO . وقبل شرح البرنامج سنقوم بتشغيله ولنرى النتيجة.
في محرر الأوامر نكتب الأمر التالي:

go run .\hello.go

هذا الأمر يعني تشغيل الملف hello.go الموجود ضمن المجلد الحالي.
فتظهر لنا نتيجة تشغيل البرنامج كما في الصورة:

هذا دليل على أن جميع الأدوات تعمل بشكل صحيح. و أن البرنامج الذي كتبناه قد تم تنفيذه بنجاح.

لنشرح الآن البرنامج المكتوب ونفهم طريقة البرمجة بلغة GO.

  • أولا : في لغة البرمجة GO كل برنامج يتبع لحزمة معينة. أو ما يسمى package
    ويمكن أن نختار اسم الحزمة كما نشاء ولكن مع مراعاة بعض الشروط مثل أن لاتحتوي فراغات أو أحرف غير الأبجدية الإنكليزية و لا تبدأ برقم.
    وفي مثالنا هذا مثلاً فإن برنامجنا يتبع للحزمة main لذلك كتبنا في أول سطر من البرنامج التعليمة التي تحدد ذلك وهي :
package main
  • يمكن إدراج محتوى ملفات حزمة معينة وتضمينه ضمن البرنامج عبر التعليمة import
    حيث قمنا بتضمين ملفات الحزمة fmt في برنامجنا السابق كما يلي:
import ("fmt")
  • يتم تعريف التوابع في لغة البرمجة GO عبر الكلمة func ,وفي مثالنا هذا قمنا بتعريف التابع main باستخدام هذه الكلمة. وبعدها كتبنا اسم التابع ومن ثم يليه الأقواس المغلقة.
    أما الأقواس المنحنية {} فتمثل بداية ونهاية هذا التابع. أي أن كل ما يوجد من تعليمات بين هذه الأقواس سيتم تنفيذها عند استدعاء هذا التابع.
  • وهنا نأتي لمحتوى التابع main من تعليمات. حيث يوجد فقط التعليمة التالية:
fmt.Println("Hello!!")

هذه التعليمة تعني استدعاء للتابع PrintLn الموجود في الحزمة fmt . والذي يفيد في طباعة نص على الشاشة.
حيث نكتب في البداية اسم الحزمة ويليه نقطة ومن ثم اسم التابع. ثم نضع بين قوسين البيانات التي نريد أن تكون دخلاً لهذا التابع.
وفي حالتنا هذه فإن دخل التابع هو عبارة عن نص أو كلمة Hello . ثم يقوم بطباعة النص على الشاشة عند تنفيذه .كما هو واضح من الصورة السابقة.

إذاً يمكن إعادة تبسيط كل ما سبق في هذا المثال كما يلي:
– عند البداية نقوم بتحديد الحزمة التي يتبع لها هذا البرنامج.
– ثم يتم تضمين أو إدراج محتوى الحزمة fmt في البرنامج.
– ثم بعدها كتبنا التابع main الذي يتم تنفيذه مباشرة عند تشغيل البرنامج. أو يمكن اعتباره نقطة بداية التنفيذ في لغة البرمجة GO

والآن نأتي للخطوة الأخيرة وهي تحويل هذا البرنامج إلى ملف تنفيذي exe .
حيث في السابق قمنا بتشغيله فقط من خلال موجه الأوامر. ولكن نريد أن نقوم بتجميع هذا البرنامج. أو مايسمى بناء الملف التنفيذي.
يمكن ذلك من خلال كتابة الأمر التالي في موجه الأوامر:

go build 

وبعد تنفيذ هذا الأمر يظهر لدينا ملف جديد ضمن مجلد المشروع اسمه hello.exe وهو الملف التنفيذي لهذا البرنامج.

يمكن تشغيل هذا البرنامج مباشرة من موجه الأوامر مثل تشغيل أي برنامج ضمن نظام التشغيل وندوز. وتظهر لنا نتيجة تنفيذ هذا البرنامج والتي هي طباعة كلمة Hello على الشاشة كما نرى في الشكل:

التعليقات Comments

التعليقات هي ما نقوم بكتابته ضمن البرنامج من ملاحظات تفيد في ترتيب الكود ومعرفة مايجري ضمن كل جزء من أجزاء البرنامج.
لكن لا يتم تنفيذها خلال عمل البرنامج وإنما يتم تجاهلها من قبل المجمع أو ما يسمى Compiler قبل تحويل البرنامج إلى ملف تنفيذي.

ولدينا طريقتين لكتابة التعليقات:

  • الأولى هي باستخدام الرمز // كما هو الحال في اغلب لغات البرمجة.
    حيث كل ما نقوم بكتابته بعدها يتم اعتباره تعليق لا قيمة له برمجياً . حتى ننتقل إلى سطر جديد ضمن البرنامج.
    ومثالاً على ذلك البرنامج التالي:
func main() {
  // هذا تعليق وليس تعليمات برمجية

  fmt.Println("Hello World!")
}
  • الحالة الثانية عندما نريد كتابة تعليق له بداية ونهاية محددة.
    – هنا لتحديد بداية التعليق نستخدم الرمز / ومن ثم الرمز * قبل التعليق
    – وبعد كتابة التعليق نكتب الرمز * ومن ثم / للدلالة على نهايته
    المثال التالي يوضح ذلك :
package main
import ("fmt")

func main() {
  /*
هذا تعليق يبدأ هنا في هذا السطر
ويستمر هنا أيضاً
وينتهي هنا 
 */

  fmt.Println("Hello World!" /* أنا تعليق */)
}

الملاحظة هنا أنه في النوع الثاني من التعليقات يمكن أن نكتب تعليق يستمر لأكثر من سطر .
وأيضا يسمح لنا بكتابة تعليق ضمن أجزاء التعليمة دون التأثير عليها برمجياً . كما هو الحال في التعليق ضمن تعليمة الطباعة.

هكذا نكون تعرفنا على لغة البرمجة GO وكيفية كتابة برنامج بسيط وتشغيله. وبذلك نكون وصلنا إلى نهاية هذا الجزء من الدورة.