"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تقنيات البناء: الغوص العميق في Go

تقنيات البناء: الغوص العميق في Go

تم النشر بتاريخ 2024-11-08
تصفح:335

Building Techniques: A Deep Dive into Go

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

في الجزء الأول، كشفنا النقاب عن أساسيات مرحلة بناء البرمجيات. في هذه المقالة، سنجعل هذا الأمر أكثر أهمية بمساعدة لغة لها مكانة خاصة في قلبي. في الواقع، على الرغم من أن أساسيات بناء البرمجيات متشابهة عبر اللغات، إلا أن كل نظام بيئي للغة له أدواته وممارساته الفريدة.

بدون مزيد من اللغط، دعنا نستكشف هذه الأمور، مع التركيز بشكل خاص على Go.

نهج الذهاب إلى البناء

يتبع برنامج Go، الذي صممته Google، أسلوبًا فريدًا في البناء يركز على البساطة والسرعة.

أمر

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

مثال:

go build main.go

التجميع المتقاطع في Go

إحدى الميزات الأكثر فائدة لبرنامج التحويل البرمجي Go هي القدرة على إجراء التحويل البرمجي المتقاطع بسهولة ملحوظة. كل ما عليك فعله هو ضبط متغيرات البيئة GOOS وGOARCH لاستهداف الأنظمة الأساسية المطلوبة.

مثال:

GOOS=windows GOARCH=amd64 go build main.go

سيؤدي هذا إلى إنشاء ملف قابل للتنفيذ لنظام التشغيل Windows ضمن بنية amd64.

وحدات الانتقال

جاء Go mod متأخرًا بعض الشيء لأنه تم تقديمه مع Go 1.11، ولكنه نظام إدارة تبعية مدمج. قبل ذلك، كان علينا وضع جميع مشاريع Go الخاصة بنا في دليل مخصص على جهازنا يسمى {$GOPATH}. أثناء نجاح الأمر، يمنحنا Go mod مزيدًا من المرونة الآن، وهو أمر رائع!

الاستخدام واضح جدًا، مثل كل شيء في Go.

  • يقوم go mod init بتهيئة وحدة نمطية جديدة.
  • يتتبع ملف go.mod التبعيات وإصداراتها.

يمكنك إضافة تجميع مشروط باستخدام علامات البناء، ولكن الميزة الأكثر إثارة للاهتمام، في رأيي، هي أن Go يقوم تلقائيًا بتخزين مخرجات البناء مؤقتًا لتسريع عمليات الإنشاء اللاحقة (بالطبع، يمكنك تنظيف ذاكرة التخزين المؤقت إذا لزم الأمر).

]

تقنيات البناء المتقدمة

تضمين الموارد

إذا كان لديك ملفات ثابتة تريد تضمينها في ملفك الثنائي، فيمكنك استخدام التوجيه //go:embed.

اكتشاف السباق

Go رائع عندما يتعلق الأمر بالتوازي. بفضل نظام goroutines وقنوات التواصل فيما بينها، يمكن للمطورين بسهولة تقسيم عبء عمل البرنامج على مراكز مختلفة. ولكن من السهل أيضًا إفساد الأمور وإنشاء "سباقات".

يحدث سباق البيانات عندما يصل اثنان من goroutines إلى نفس المتغير بشكل متزامن ويكون أحد عمليات الوصول على الأقل عبارة عن كتابة. راجع نموذج ذاكرة Go للحصول على التفاصيل.

يمكن أن يساعدك مترجم Go في العثور عليها!

استخدم علامة السباق للكشف عن ظروف السباق:

go build -race main.go

التنميط والتحسين

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

لن أخوض في التفاصيل، ولكن إذا كنت تريد التعمق في الموضوع، أدعوك لقراءة هذه الجوهرة: https://www.practical-go-lessons.com/chap-34-benchmarks

أوضاع البناء المخصصة

في بعض الأحيان، لا تقوم ببناء برنامج بل مكون إضافي أو مكتبة، على سبيل المثال. لقد حصل فريق Go على ظهرك. في Go، يمكنك تحديد وضع البناء للحصول على النتيجة التي تريدها!

  • إنشاء مكتبات مشتركة: انتقل إلى build -buildmode=c-shared
  • إنشاء المكونات الإضافية: انتقل إلى build -buildmode=plugin
  • احصل على القائمة الكاملة على https://pkg.go.dev/cmd/go#hdr-Build_modes

كما ترون، يوفر Go الكثير من الميزات في برنامج التحويل البرمجي والنظام البيئي الخاص به للسماح للمطورين بالحصول على أقصى استفادة من تقنية Go.

وهذا كل ما لدينا لهذا اليوم. سأقوم بإصدار مقال آخر هذا الأسبوع يعرض تقنيات البناء لـ TypeScript، لذا اشترك أو تابع إذا كنت تريد التأكد من عدم تفويت المقال!

حتى ذلك الحين، برمجة سعيدة!

بيان الافراج تم نشر هذه المقالة على: https://dev.to/gdsources/building-techniques-a-deep-dive-into-go-27ed?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3