Go: سلاح التطوير عبر المنصات الذي لم تقدره حقًا

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Go: كيف تنسى "يعمل عندي" وتبدأ في غزو العوالم

\n\n

هل سبق لك أن كتبت سكريبت رائع بلغة Python، وأرسلته إلى صديق يستخدم Windows، فرد عليك: "لا يعمل لدي، لم يتم تثبيت Python"؟ مألوف؟ مرحبًا بك في جحيم التبعيات، البيئات الافتراضية، وإصدارات المفسرات. والآن تخيل: كتبت الكود مرة واحدة، ضغطت على زر واحد - وحصلت على ملف ثنائي يعمل على Windows وLinux وmacOS دون الحاجة إلى تثبيت أي شيء. بدون Python، بدون Node، بدون JVM.

\n\n

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

\n\n

لماذا Go هي الخيار المثالي للتطوير عبر المنصات؟

\n\n

في عالم Golang عبر المنصات، هذه ليست ميزة، بل أساس. على عكس Python التي تتطلب مفسرًا، أو Java التي تحتاج إلى آلة افتراضية، يتم ترجمة Go إلى كود آلة أصلي. هذا يعني أن ملفك الثنائي يحتوي على كل ما هو ضروري للتشغيل: وقت التشغيل، جامع القمامة، والكود الخاص بك. لا مكتبات خارجية، ولا "pip install". قم بالتنزيل والتشغيل.

\n\n

لكن الأهم هو الترجمة المتقاطعة Go. أنت تجلس على MacBook، تكتب الكود، ثم بأمر واحد تقوم ببناء ملف تنفيذي لـ Windows، Linux، Raspberry Pi (ARM)، أو حتى لـ FreeBSD القديم. لا تحتاج إلى آلة افتراضية أو Docker للبناء. متغير بيئة واحد - وانتهى الأمر.

\n\n

بالنسبة لمطور Python، يبدو هذا كالسحر، لكنه ببساطة Go. دعنا ننتقل إلى التطبيق العملي.

\n\n

كتابة أداة مساعدة عبر المنصات بلغة Go

\n\n

لنتخيل أننا بحاجة لكتابة برنامج بسيط ولكنه مفيد: سيجمع معلومات عن النظام (نظام التشغيل، البنية، اسم المضيف) ويحفظها في ملف JSON. هذه مهمة كلاسيكية لـ DevOps أو مسؤول النظام. بلغة Python، كنت ستستخدم platform و json، لكن في Go يبدو هذا أكثر أناقة.

\n\n

الخطوة 1: الهيكل والاستيراد

\n\n

أنشئ ملفًا باسم main.go. أول ما سنفعله هو تعريف هيكل البيانات واستخدام الحزم runtime و os للحصول على معلومات النظام. لاحظ: runtime.GOOS و runtime.GOARCH هما ثوابت مدمجة تعرفها Go حتى في مرحلة الترجمة.

\n\n
package main\n\nimport (\n    "encoding/json"\n    "fmt"\n    "os"\n    "runtime"\n)\n\ntype SystemInfo struct {\n    OS         string `json:"os"`\n    Arch       string `json:"arch"`\n    Hostname   string `json:"hostname"`\n    GoVersion  string `json:"go_version"`\n}
\n\n

الخطوة 2: جمع المعلومات

\n\n

الآن سنكتب دالة تجمع البيانات. سنستخدم os.Hostname() - وهي تعمل عبر المنصات وتعمل على جميع الأنظمة.

\n\n
func getSystemInfo() (SystemInfo, error) {\n    hostname, err := os.Hostname()\n    if err != nil {\n        return SystemInfo{}, fmt.Errorf("خطأ في الحصول على اسم المضيف: %w", err)\n    }\n\n    return SystemInfo{\n        OS:        runtime.GOOS,\n        Arch:      runtime.GOARCH,\n        Hostname:  hostname,\n        GoVersion: runtime.Version(),\n    }, nil\n}
\n\n

الخطوة 3: الكتابة إلى JSON

\n\n

لنكمل برنامجنا: نحصل على المعلومات، ونرمزها إلى JSON، ونكتبها إلى ملف. سنضيف أيضًا معالجة الأخطاء - وهذا أسلوب جيد في التطوير عبر المنصات بلغة Go، لأن مسارات الملفات تختلف بين أنظمة التشغيل المختلفة.

\n\n
func main() {\n    info, err := getSystemInfo()\n    if err != nil {\n        fmt.Printf("خطأ: %v\\n", err)\n        os.Exit(1)\n    }\n\n                

المدونات

توصيات الكتب