Python سے Go تک میرا سفر - تجاویز اور وسائل کا اشتراک

Python سے Go تک میرا سفر - تجاویز اور وسائل کا اشتراک

مترجم سے: منتقل آپ کے لیے، Ilad Leev کا Python سے Go میں منتقلی کے بارے میں مضمون. مضمون نہ صرف نوسکھئیے پروگرامرز کے لیے، بلکہ ہر اس شخص کے لیے بھی مفید ہو گا جو کسی نہ کسی طرح گو میں دلچسپی رکھتا ہے۔

مجھے ازگر پسند ہے۔ یہ زبان پچھلے پانچ سالوں سے میری پسندیدہ رہی ہے۔ وہ دوستانہ، موثر اور سیکھنے میں آسان ہے۔ تقریباً ہر چیز کے لیے استعمال کیا جاتا ہے: سادہ اسکرپٹنگ اور ویب ڈویلپمنٹ سے لے کر ڈیٹا ویژولائزیشن اور مشین لرننگ تک

گو کی بتدریج "پختگی"، وسیع برادری اور یہ حقیقت کہ زیادہ سے زیادہ کمپنیاں کامیاب ٹیسٹوں کے بعد اس زبان کو اپنا رہی ہیں، نے مجھے اس پر توجہ دینے اور ادب میں جانے پر مجبور کیا۔ لیکن یہ پوسٹ اس بارے میں نہیں ہے کہ کون سا بہتر ہے - Python یا Go: انٹرنیٹ پر موازنے کی ایک بڑی تعداد موجود ہے۔ میری رائے میں، یہ سب درخواست پر منحصر ہے. میں اس بارے میں بات کرنے جا رہا ہوں کہ میں نے Go کا انتخاب کیوں کیا، اس موضوع میں دلچسپی رکھنے والے ہر فرد کے لیے مفید وسائل کے لیے کچھ تجاویز اور لنکس دیتا ہوں۔

Skillbox تجویز کرتا ہے: پریکٹیکل کورس شروع سے ازگر کا ڈویلپر.

ہم آپ کو یاد دلاتے ہیں: "Habr" کے تمام قارئین کے لیے - "Habr" پروموشنل کوڈ کا استعمال کرتے ہوئے کسی بھی Skillbox کورس میں داخلہ لینے پر 10 rubles کی رعایت۔

Python سے Go تک میرا سفر - تجاویز اور وسائل کا اشتراک

مشاہدات

اپنے سفر کے آغاز میں سب سے پہلا کام جو میں نے کیا وہ بہترین سرکاری ٹیوٹوریل کا مطالعہ کرنا تھا۔ٹور آف گو" یہ زبان کے نحو کی سمجھ دیتا ہے۔

اپنے علم میں بہتری لانے کے لیے میں نے کتاب بھی پڑھی۔Python پروگرامرز کے لیے جائیں۔"، جس نے ہمیں اگلے مرحلے پر جانے کی اجازت دی - آزمائش اور غلطی۔

میں نے وہ مانوس فنکشنز لیے جو میں نے ازگر میں استعمال کیے تھے (JSON سیریلائزیشن یا HTTP کالوں کو ہینڈل کرنا) اور انہیں Go میں لکھنے کی کوشش کی۔ اس واضح موازنہ کی بدولت، میں زبانوں کے درمیان کلیدی فرقوں کی نشاندہی کرنے میں کامیاب رہا۔

پروجیکٹ لے آؤٹ

سب سے پہلے، Python کو کسی مخصوص ڈائرکٹری کے درجہ بندی کی ضرورت نہیں ہے، جبکہ Go کرتا ہے۔

Go "معیاری" لے آؤٹ کا استعمال کرتا ہے، جو تھوڑا زیادہ پیچیدہ ہے اور مزید کام کی ضرورت ہے۔ دوسری طرف، نتیجہ ایک اچھی ساختہ کوڈ بیس ہے جو ایک ماڈیولر ڈھانچہ استعمال کرتا ہے، اور کوڈ سختی سے منظم رہتا ہے جیسے جیسے پروجیکٹ پھیلتا ہے۔

سرکاری ٹیوٹوریل "گو کوڈ کیسے لکھیں۔اپنے کام کو منظم کرنے کا طریقہ بتاتا ہے۔

مستحکم مضبوط ٹائپنگ

گو کو مستحکم طور پر ٹائپ کیا گیا ہے، جو کہ پائیتھن اور روبی جیسی متحرک طور پر ٹائپ کی جانے والی زبانوں کے عادی افراد کو بے چینی محسوس کرے گا۔

اس میں کوئی شک نہیں کہ متحرک زبانیں زیادہ خرابی کا شکار ہوتی ہیں اور ان پٹ ڈیٹا کی توثیق کرنے کے لیے ڈویلپر کی جانب سے مزید محنت کی ضرورت ہوتی ہے۔ ایک مثال ایک فنکشن ہے جو دو عدد کے مجموعہ کا حساب لگاتا ہے۔ اگر آپ کسی فنکشن میں سٹرنگ پاس کرتے ہیں (جو کہ بہت کم نہیں ہے)، تو اس کے نتیجے میں TypeError ہو جائے گا۔

گو میں ایسا نہیں ہو سکتا کیونکہ آپ کو ہر متغیر اور فنکشن کے لیے ایک قسم کا اعلان کرنا ہوگا اور فنکشن کس قسم کا متغیر واپس کرے گا۔

پہلے تو یہ پریشان کن تھا — میں نے سوچا کہ گو کی اس خصوصیت نے چیزوں کو سست کر دیا — لیکن پھر میں نے محسوس کیا کہ ہر چیز کا اعلان کرنے سے درحقیقت وقت کی بچت ہوتی ہے اور غلطیوں کے امکانات کم ہو جاتے ہیں۔

مقامی ہم آہنگی

Go کے پاس سب روٹینز اور پائپس کا استعمال کرتے ہوئے مقامی ہم آہنگی کی مدد ہے، جو کہ آسان ہے۔

چینلز کا تصور پہلے تھوڑا سا الجھا ہوا لگتا ہے۔ تاہم، وقت کے ساتھ، یہ واضح ہو جاتا ہے، اور آپ نئے مواقع سے لطف اندوز ہونے لگتے ہیں اور فعال طور پر ان کے ساتھ کام کرتے ہیں۔

یہاں سے کہی گئی ہر چیز کا تصور ہے۔ ایوان ڈینیلیوک.

package main
 
func main() {
    // create new channel of type int
    ch := make(chan int)
 
// start new anonymous goroutine
    go func() {
        // send 42 to channel
        ch <- 42
    }()
    // read from channel
    <-ch
}

Python سے Go تک میرا سفر - تجاویز اور وسائل کا اشتراک

مزید مثالیں۔ یہاں и یہاں.

JSON کے ساتھ کام کرنا

ٹھیک ہے، json.loads() اب نہیں ہے۔ Python میں سب کچھ آسان ہے: ہم json.loads استعمال کرتے ہیں، اور کوئی مسئلہ نہیں ہے۔

لیکن گو میں، ایک مستحکم طور پر ٹائپ شدہ زبان، یہ عمل زیادہ پیچیدہ ہو جاتا ہے۔

یہاں، 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 کو ڈی سیریلائز کر سکتے ہیں، لیکن اگر ممکن ہو تو اس سے گریز کیا جائے اور زبان کی جامد نوعیت کو مدنظر رکھا جائے۔

GO پر JSON کو ڈی کوڈ کرنا بہترین ہے۔ اس پوسٹ میں وضاحت کی یا یہاں.

اپنے JSON کو گو ڈھانچے میں تبدیل کرنے میں بہت سست ہیں؟ کوئی مسئلہ نہیں، یہ ٹول آپ کے لیے سب کچھ کرے گا۔.

کوڈ صاف کریں۔

گو کمپائلر ہمیشہ آپ کے کوڈ کو صاف رکھنے کی کوشش کرے گا۔ یہ غیر استعمال شدہ متغیرات کو تالیف کی غلطی سمجھتا ہے۔ گو ایک منفرد طریقہ استعمال کرتا ہے جو سسٹم کو فارمیٹنگ کے زیادہ تر مسائل کو حل کرنے کی اجازت دیتا ہے۔ لہذا، گو محفوظ یا مرتب کرتے وقت gofmt پروگرام چلائے گا اور فارمیٹنگ کو خود درست کرے گا۔

کیا آپ متغیرات کی پرواہ نہیں کرتے؟ ٹھیک ہے! بس _ (انڈر سکور) استعمال کریں اور اسے خالی آئی ڈی پر تفویض کریں۔

زبان کے ساتھ کام کرنے کے اس حصے کے لیے ماسٹرڈ ٹیوٹوریل "موثر جانا".

صحیح لائبریری اور فریم ورک تلاش کرنا

میں نے فریم ورک اور لائبریریاں جیسے فلاسک، جنجا 2، درخواستیں، اور یہاں تک کہ کازو کو ازگر کے ساتھ استعمال کیا ہے، اس لیے مجھے ڈر تھا کہ مجھے گو کے لیے کوئی مناسب چیز نہیں ملے گی۔

لیکن کمیونٹی نے پہلے ہی ان مسائل کو حل کر دیا ہے: زبان کی اپنی منفرد لائبریریاں ہیں جو آپ کو اس بات کو مکمل طور پر بھولنے کی اجازت دیتی ہیں جو آپ پہلے استعمال کرتے تھے۔

یہ میرے پسندیدہ ہیں۔

ازگر کی درخواستیں => نیٹ/http

net/http ایک آسان اور استعمال میں آسان HTTP کلائنٹ اور سرور کا نفاذ فراہم کرتا ہے۔

فلاسک + جنجا 2 => جن

گن - ایک بہت ہی آسان API کے ساتھ HTTP ویب فریم ورک: پاتھ پیرامیٹرز، ڈاؤن لوڈ کے قابل فائلز، گروپ روٹنگ (/api/v1، /api/v2)، جامد فائلوں کو پیش کرنے والے اپنی مرضی کے لاگ فارمیٹس، HTML رینڈرنگ اور واقعی طاقتور کسٹم مڈل ویئر۔
شرح یہ بینچ مارک

CLI تخلیق => کوبرا

کوبرا — طاقتور CLI ایپلی کیشنز بنانے کے لیے ایک لائبریری، نیز ایپلیکیشنز اور بیچ فائلیں بنانے کے لیے ایک پروگرام۔
کوبرا کو بہت سے بڑے گو پروجیکٹس میں استعمال کیا جاتا ہے، بشمول Kubernetes، etcd اور OpenShift۔

یہاں کچھ اور لائبریریاں ہیں جن کی میں انتہائی سفارش کرتا ہوں: وائپر, گونفگ اور یہ حیرت انگیز فہرست - Awesome- Go.

دیگر مددگار وسائل

ہے [1] فرانسسک کیمپوے۔  - آپ کو یقینی طور پر ان کا جائزہ لینے کی ضرورت ہے۔ یوٹیوب چینل۔ и GitHub پروفائل.

ہے [2] GopherCon - ویڈیو. [3] ویب مثالوں پر جائیں۔. [4] گولانگ ہفتہ وار, گوفر اکیڈمی, گولنگ نیوز - ٹویٹر اکاؤنٹس۔

اپ میزانی

پانچ سال سے پائتھون کا باقاعدہ صارف رہنے کے بعد، مجھے ڈر تھا کہ گو پر سوئچ کرنا تکلیف دہ ہو گا۔

لیکن نہیں۔

Go تیزی سے بڑھ رہا ہے، اور مجھے امید ہے کہ گوگل اسے کلاؤڈ ایپلیکیشنز اور انفراسٹرکچر لکھنے کے لیے بنیادی زبان بنا سکتا ہے۔

ابھی شامل ہوں!

Python سے Go تک میرا سفر - تجاویز اور وسائل کا اشتراک

Skillbox تجویز کرتا ہے:

ماخذ: www.habr.com

نیا تبصرہ شامل کریں