من أحد المترجمين: ترجم لك مقالة كتبها Ilad Leev حول الانتقال من Python إلى Go . ستكون هذه المقالة مفيدة ليس فقط للمبرمجين المبتدئين ، ولكن أيضًا لكل من يهتم بـ Go بطريقة أو بأخرى.أنا أحب بيثون. كانت هذه اللغة هي المفضلة لدي منذ خمس سنوات. إنه صديق وفعال وسهل التعلم. يستخدم في كل شيء تقريبًا: بدءًا من إنشاء برامج نصية بسيطة وتطوير الويب إلى تصوُّر البيانات والتعلم الآلي
إنطلق "التدرج" التدريجي لـ Go ، والمجتمع الواسع وحقيقة أن المزيد والمزيد من الشركات تعتمد هذه اللغة بعد الاختبارات الناجحة التي أجبرتني على الاهتمام بها والتعمق في الأدب.
لكن هذا المنشور ليس حول أيهما أفضل - Python أو Go : هناك الكثير من المقارنات على الشبكة. في رأيي ، كل هذا يتوقف على التطبيق. سأتحدث عن سبب اختيارك لـ Go ، مع إعطاء بعض النصائح والروابط لمصادر مفيدة لكل المهتمين بالموضوع.
توصي Skillbox بما يلي: مطور Python بالطبع العملي من البداية .
نذكرك: لجميع قراء "Habr" - خصم بقيمة 10،000 روبل عند التسجيل في أي دورة تدريبية في Skillbox باستخدام الرمز الترويجي "Habr".

الملاحظات
أول شيء فعلته في بداية الرحلة هو دراسة البرنامج التعليمي الممتاز الرسمي
لجولة الذهاب . أنه يعطي فهم بناء الجملة للغة.
من أجل تحسين معرفتي ، قرأت أيضًا كتاب "
Go for Python Programmers " ، الذي سمح لي بالانتقال إلى المرحلة التالية - التجربة والخطأ.
أخذت الوظائف المعتادة التي استخدمتها في Python (إجراء تسلسل JSON أو العمل مع مكالمات HTTP) ، وحاولت كتابتها في Go. بفضل هذه المقارنة المرئية ، تمكنت من تحديد الاختلافات الرئيسية بين اللغات.
تخطيط المشروعبادئ ذي بدء ، لا يتطلب Python تسلسلًا هرميًا للدليل المحدد ، بينما يتطلب Go.
يستخدم Go تخطيط "قياسي" أكثر تعقيدًا ويتطلب المزيد من العمل. من ناحية أخرى ، ونتيجة لذلك ، نحصل على قاعدة رمز جيدة التنظيم ، والتي تستخدم بنية معيارية ، وعند توسيع المشروع ، تظل الشفرة مرتبة بشكل صارم.
يشرح البرنامج التعليمي الرسمي "
How to Write Go Go " كيفية تنظيم عملك.
ثابت قوي الكتابةيتم كتابة Go بشكل ثابت ، وسيجعلك تشعر بالفقد بالنسبة لأولئك الذين اعتادوا على اللغات المكتوبة ديناميكيًا مثل Python و Ruby.
ليس هناك شك في أن اللغات الديناميكية أكثر عرضة للأخطاء ؛ فالمطور يحتاج إلى مزيد من الجهد في التحقق من بيانات الإدخال. مثال على ذلك دالة تقوم بحساب مجموع الأعداد الصحيحة. إذا قمت بتمرير سلسلة إلى دالة (وهي ليست نادرة جدًا) ، فسيؤدي ذلك إلى حدوث خطأ في TypeError.
لا يمكن أن يحدث هذا في Go ، لأنك تحتاج هنا إلى إعلان نوع لكل متغير ووظيفة ونوع المتغير الذي ستعود إليه الوظيفة.
في البداية كان الأمر مزعجًا: بدا لي أن ميزة Go هذه بدأت في التباطؤ ، ولكن بعد ذلك أصبح من المفهوم أن إعلان كل شيء يوفر الوقت ويقلل من احتمال حدوث أخطاء.
التزامن الأصليGo لديه دعم التزامن الأصلي باستخدام الروتينات والأنابيب - وهذا مناسب.
مفهوم القنوات في البداية يبدو مربكا بعض الشيء. ومع ذلك ، بمرور الوقت ، يصبح الأمر أكثر قابلية للفهم ، وتبدأ في الاستمتاع بفرص جديدة ، والعمل بنشاط معهم.
هنا تصور لكل ما قاله
إيفان دانيلوك .
package main func main() {

المزيد من الأمثلة
هنا وهنا .
العمل مع JSONحسنًا ، json.loads () لم يعد كذلك. كل شيء بسيط في Python: نحن نستخدم json.loads ولا توجد مشاكل.
لكن في Go ، وهي لغة مطبوعة بشكل ثابت ، تصبح هذه العملية أكثر تعقيدًا.
هنا ، عند استخدام JSON ، يتم تحديد كل شيء مسبقًا. سيتم تجاهل أي مجال لا يتناسب مع الهيكل المحدد ، وهذا جيد. يمكن اعتبار ذلك بمثابة بروتوكول متفق عليه مسبقًا بين الطرفين. يجب أن تكون البيانات التي تلقيتها في JSON متوقعة ، والحقول وأنواع JSON "متفق عليها" من قبل الطرفين.
{ “first”: “Elad”, “last”: “Leev”, “location”:”IL”, “id”: “93” }
type AccountData struct { First string `json:"first"` Last string `json:"last"` Location string `json:"location"` ID string `json:"id"` }
بالطبع ، يمكنك إلغاء تسلسل JSON بدون بنيات ، ولكن كلما كان ذلك ممكنًا يجب تجنب ذلك ويجب مراعاة الطبيعة الثابتة للغة.
وأوضح JSON فك التشفير على GO
في هذا المنصب أو
هنا .
كسول لتحويل JSON الخاص بك إلى الذهاب الهيكل؟ لا مشكلة ،
هذه الأداة سوف تفعل كل شيء لك .
كود نظيفسيحاول برنامج التحويل البرمجي Go دائمًا الحفاظ على رمزك نظيفًا. يعتبر المتغيرات غير المستخدمة خطأ ترجمة. يستخدم Go أسلوبًا فريدًا يسمح للنظام بحل معظم مشكلات التنسيق. لذلك ، ستقوم Go بتشغيل برنامج gofmt عند الحفظ أو التجميع وتصحيح التنسيق بشكل مستقل.
هل تهتم بالمتغيرات؟ حسنا! فقط استخدم _ (تسطير أسفل السطر) وقم بتعيينه لمعرف فارغ.
البرنامج التعليمي الصادق لهذا الجزء من العمل مع اللغة هو المعلومات من "
الانتقال الفعال ".
العثور على المكتبة المناسبة والإطاراستخدمت الأطر والمكتبات مع Python مثل Flask و Jinja2 و Request وحتى Kazoo مع Python ، لذلك كنت خائفًا من أنني لن أجد أي شيء مناسب لـ Go.
لكن المجتمع قام بالفعل بحل هذه المشكلات: تحتوي اللغة على مكتبات فريدة خاصة بها تسمح لك بنسيان ما استخدمته سابقًا.
هنا هي المفضلة.
طلبات بايثون => net / httpيوفر
net / http تطبيقًا مريحًا وسهل الاستخدام من عميل وخادم HTTP.
قارورة + Jinja2 => الجنGin عبارة عن إطار ويب HTTP مع واجهة برمجة تطبيقات بسيطة للغاية: معلمات المسار ، الملفات القابلة للتنزيل ، توجيه المجموعة (/ api / v1 ، / api / v2) ، تنسيقات السجل المخصصة التي تقدم ملفات ثابتة ، وتقديم HTML وبرنامج وسيط مخصص قوي بالفعل.
معدل
هذا المعيار.
CLI Creation => Cobraكوبرا هي مكتبة لإنشاء تطبيقات CLI قوية ، وكذلك برنامج لإنشاء تطبيقات وملفات دفعية.
يتم استخدام Cobra في العديد من مشاريع Go الكبيرة ، بما في ذلك Kubernetes و etcd و OpenShift.
فيما يلي بعض المكتبات التي أوصي بها بشدة:
Viper و
Gonfig وهذه القائمة
الرائعة هي
Awesome-Go .
موارد مفيدة أخرى
[1]
Francesc Campoy - تحتاج بالتأكيد إلى تقييم
قناة YouTube وملف تعريف GitHub .
[2]
GopherCon - فيديو .
[3]
اذهب أمثلة على الويب .
[4]
Golang Weekly ،
Gopher Academy ،
Golang News - Twitter Twitter.
لتلخيص
كمستخدم منتظم لبيثون لمدة خمس سنوات ، كنت أخشى من أن الذهاب إلى الذهاب سيكون مؤلمًا.
لكن لا: هناك الأساس الذي يقوم عليه مجتمع Go ، والذي يوسع ويكمل إمكانيات اللغة ، بالإضافة إلى العديد من الموارد المفيدة التي ستساعدك على الانتقال.
Go تنمو بسرعة ، وآمل أن تتمكن Google من جعلها اللغة الرئيسية لكتابة التطبيقات السحابية والبنية التحتية.
انضم الآن!

توصي Skillbox بما يلي: