اكتسبت شهرة الشهرة كواحدة من أبسط لغات البرمجة ، بما في ذلك مزاياها - سهولة الكتابة وقراءة الكود ، في معظم الحالات ، دعم أبسط لقاعدة الكود. نتحدث عن العديد من مزايا Go ، والتي بفضلها استخدمناها في SimbirSoft في عدد من المشاريع المحملة بشكل كبير مع مختلف الهياكل ، سواء خدمة الويب أو الخدمة الصغيرة (SOA).
تطبيق
تعد لغة النظام هذه مفيدة لمعظم مهام الشبكة ، وأي خدمات ميكروية وخدمات ماكرو ، وخدمات ويب ، وكذلك لأدوات النظام - فليس من دون سبب أن العديد من خبراء DevOps يحبونها. تجد Go استخدامها في Machine Learning ، وحتى بعض المطورين يكتبون مواقع الويب معه. في ممارستنا ، تحولنا إلى Go عندما قمنا بتطوير CRM منفصلة ومنتجات البرامج للاستخدام الداخلي ، على سبيل المثال ، لشركات التأمين. يحتوي مستودع Go language القياسي أيضًا على حزمة لتطوير المحمول ، لا تزال هذه الحزمة مدعومة ، على الرغم من وجود أدوات أكثر مناسبة لهذا الغرض.
الذهاب: التنمية والاعتراف
في Google ، بدأ تطوير لغة Go في عام 2007. قبل ذلك ، استخدمت الشركة Java و Python و C ++ ، ومع ذلك ، كان لديهم عيوب معينة (على وجه الخصوص ، ارتفاع استهلاك الذاكرة) أو استخدام محدود. ثم بدأت جوجل في تطوير لغة جديدة لتلبية احتياجاتهم.
ما هي متطلبات اللغة:
- ملف تنفيذي واحد (بدون تبعيات)
- تجميع سريع
- وقت تشغيل سريع (على الأقل على قدم المساواة مع Java و C ++)
- جامع القمامة يقلل من تسرب الموارد
- الأمثل لأنظمة متعددة المعالجات
- كتابة ثابتة
- بساطتها
- خفة النحوية
- تعددية الأجسام (حتمية ، وظيفية ، موجهة للكائنات)
بالنسبة لأولئك الذين لا يعملون مع Go ، اذكر باختصار تاريخ إنشائها. بدأت Google في التفكير في مواصفات اللغة في عام 2007. تم إطلاق الإصدار 1.0 في عام 2012 ، وفي عام 2015 تم إصدار الإصدار 1.5 ، بالفعل بدون سطر واحد من كود C ++. من تلك اللحظة فصاعدًا ، تجمع اللغة نفسها ، مما سمح لنا بتسريع عملية تطوير المهام الفردية أثناء التنقل.
يبلغ متوسط العمر التقديري للغة الجديدة في المجتمع حوالي 10 سنوات ، لكن Go تعد بالفعل واحدة من أكثر اللغات شعبية. في يونيو 2019 ، قفز Go في المرتبة 15 من حيث الشعبية في العالم ، وفقًا لمؤشر
TIOBE ، مضيفًا ثلاثة مراكز في السنة. من بين أسباب نجاحها ما يلي:
- مكتبة قياسية قوية
- ضبط قياسي بارد
- يتم عرض معظم الوظائف الضرورية في "المربع" ، ويتم إعطاء المكتبات مفتوحة المصدر
- مجتمع ودود للغاية
على سبيل المثال ، يتم تضمين الحزم التالية في المكتبة القياسية (القائمة غير كاملة):
الرسم التوضيحي - github.com/ashleymcnamara/gophersإذا لم تكن راضيًا عن سرعة تطبيقك أو معلمات أخرى ، فيمكنك العمل مع المُنشئ خارج الصندوق. للقيام بذلك ، تحتاج إلى:
- سجل استيراد ملفات التعريف: import _ "net / http / pprof"
- أضف خادم http لتلقي النتائج من البروفايل: go http.ListenAndServe ("0.0.0.0:8080" ، لا شيء)
الذهاب الأدوات
واحدة من فوائد Go هي مجموعتها الواسعة من الأدوات القياسية. لقد اخترنا بعض الأدوات المساعدة الأكثر إثارة للاهتمام ، في رأينا (في الواقع ، هناك الكثير منها):
- benchcmp - المقارنة المعيارية ، والأداء قبل وبعد التغييرات
- اذهب غطاء أداة - تحليل تغطية رمز عن طريق الاختبارات
- godoc - توليد الوثائق القائمة على التعليق
- goimports - تحليل الاستيراد (إزالة غير مستخدمة ، إضافة مفقود)
- gorename - إعادة بيع المنازل
- ضبط العرض الحالي
- تذهب البيطري - كثيرا ما واجه خطأ لينتر
- الذهاب الاختبارات المدى التشغيل والاختبارات
- اذهب الإصلاح - إصلاح التغييرات عند تغيير API (قبل الإصدار 1.0)
- الذهاب أداة pprof - التنميط
- الذهاب fmt - تنسيق التعليمات البرمجية حسب نمط الرمز
- كاشف السباق - العثور على سباق البيانات في وقت التشغيل
القدرة التنافسية
قوة أخرى في Go هي أنه من السهل كتابة كود تنافسي بهذه اللغة. للقيام بذلك ، يمكنك ببساطة استخدام الكلمات الأساسية قبل استدعاء الوظيفة.

الذهاب التدريب
إذا كنت ترغب في البرنامج على Go ، فستستغرق البداية وقتًا قليلًا نسبيًا. يدعم المطورون - Core Team - دورة A Tour of Go بعدة لغات ، بما في ذلك الروسية. يمكن إكمال هذه الدورة في 1-3 أيام فقط. من حيث التعلم ، تعد Go واحدة من أبسط اللغات.
فماذا تقرأ:
ORM في الذهاب
ويعتقد أن واحدة من نقاط الضعف في الذهاب هو ORM. ربما يرجع هذا جزئيًا إلى حقيقة أن اللغة صغيرة - حيث بدأت للتو تطوير العديد من الأدوات الضرورية. على وجه الخصوص ، يمكنك استخدام حزمة قاعدة البيانات / sql للعمل مع قواعد البيانات. ما هي متطلبات الحزمة:
- حزمة عامة لجميع قواعد بيانات SQL
- محمول: لا يحتوي على أي ميزات في مجال العمل مع قواعد البيانات. من الناحية المثالية ، يجب أن يعمل كل شيء بشكل صحيح إذا قمت بتغيير برنامج التشغيل.
- تحويل أنواع الانتقال إلى أنواع قواعد البيانات القياسية (يجب أن يكون من الممكن معالجة أنواع محددة)
- يحتوي على تجمع الاتصال
- موضوع السلامة ل goroutines
نموذج استعلام SELECT باستخدام قاعدة بيانات / sql
defer rows.Close() for rows.Next() { var message string err := rows.Scan(&message) if err != nil { log.Panic(err) } fmt.Println(message) } if err := rows.Err(); err != nil { log.Panic(err) }
كما ترى من المثال ، سيتعين تنفيذ الكثير من إجراءات القوالب في كل مرة. على سبيل المثال:
- كائن صف وثيق: تأجيل الصفوف. إغلاق ()
- تحقق من وجود أخطاء err: = rows.Err ()؛ يخطئ! = لا شيء منذ ذلك الحين ليس من الواضح لماذا أعادتنا الصفوف. (التالي) كاذبة
من كل هذا ، أريد استخدام شيء أكثر عالمية وبساطة ، على سبيل المثال ، ORM.
أنواع تطبيقات ORM
عندما يواجه المطورون اختيار ORM للعمل مع Go ، فإنهم غالباً ما يسترشدون بالتصنيف على github. عندما اخترنا ORM لأنفسنا ، حصل Beego على أفضل تصنيف (18 ألف "نجوم"). ومع ذلك ، في الممارسة العملية ، يعد ORM جزءًا من الإطار ، وبالتالي فإن التقييم ليس موضوعيًا تمامًا (إذا قمت بتحديد ORM فقط). ومن بين القادة أيضًا ، يدعم Gorm ، الذي تم تطويره منذ عام 2013 ، المعاملات وله العديد من المزايا الأخرى.

ومع ذلك ، كما أوضحت تجربتنا مع Gorm ، هناك بعض المشاكل المحتملة عند استخدامه ، خاصة عند الاختبار: على سبيل المثال ، سباق البيانات أو حذف مفتاح خارجي. يمكننا افتراض الأسباب التالية لمثل هذه الأخطاء في Gorm:
- يرتكب على الفور في الماجستير
- علامات مفقودة
- بناء SQL غير متوقعة
في الوقت الحالي ، في عملنا ، نفضل العديد من ORM التي لا تستخدم الواجهة {} - هذه هي Kallax و Reform و Sqlboiler. عادة ما نستخدم حزمة
Golang لعمليات الترحيل ومستودع
orm bench مع علامات ORM على Go. في الوقت نفسه ، يجب أن لا تطارد المعايير فقط. في أغلب الأحيان ، لا تعد السرعة مهمة مثل جودة الكود ووظائفه.
لتلخيص
تشمل مزايا لغة Go للمطور وللأعمال زيادة إنتاجية التطوير ، والقدرة على استخدام عدد أقل من الخوادم ، وسهولة التركيب اللغوي ووقت التدريب الأسرع للمطورين الجدد ، ومجموعة كبيرة من الأدوات ومجتمع صديق. على الرغم من أنها لغة شابة ، إلا أنها تنمو وتتطور باستمرار. تجعل ميزات Go اللغة المثالية لمجموعة واسعة من المشاريع ، بدءًا من مهام الشبكة وحتى الخدمات المصغرة و blockchain.
تم إعداد المقال على أساس تقريرنا في اجتماع Hot Backend في سمارة.