منھنجو سفر Python کان Go تائين - شيئرنگ صلاحون ۽ وسيلا

منھنجو سفر Python کان Go تائين - شيئرنگ صلاحون ۽ وسيلا

مترجم کان: ترجمو توھان لاءِ، Ilad Leev جو مضمون پٿون کان Go ڏانھن منتقلي بابت. مضمون نه رڳو نوان پروگرامرز لاء، پر هر ڪنهن لاء پڻ مفيد ٿيندو جيڪو ڪنهن به طرح سان دلچسپي رکي ٿو.

مون کي Python پسند آهي. اها ٻولي گذريل پنجن سالن کان منهنجي پسنديده رهي آهي. هو دوست، موثر ۽ سکڻ ۾ آسان آهي. لڳ ڀڳ هر شيءِ لاءِ استعمال ڪيو ويو: سادي اسڪرپٽنگ ۽ ويب ڊولپمينٽ کان وٺي ڊيٽا بصري ۽ مشين لرننگ تائين

گو جي بتدريج ”ميچوريشن“، وسيع برادري ۽ حقيقت اها آهي ته وڌيڪ کان وڌيڪ ڪمپنيون هن ٻولي کي اپنائڻ کان پوءِ ڪامياب ٽيسٽون ڪري رهيون آهن مون کي ان طرف ڌيان ڏيڻ ۽ ادب ڏانهن ڌيان ڏيڻ تي مجبور ڪيو. پر هي پوسٽ نه آهي جنهن بابت بهتر آهي - پٿون يا وڃو: انٽرنيٽ تي موازن جو هڪ وڏو تعداد آهي. منهنجي خيال ۾، اهو سڀ ڪجهه درخواست تي منحصر آهي. مان ان بابت ڳالهائڻ وارو آهيان ڇو مون چونڊيو Go چونڊيو، ڪجهه تجويزون ۽ لنڪس ڏيو مفيد وسيلن لاءِ هر ڪنهن موضوع ۾ دلچسپي رکندڙ لاءِ.

Skillbox سفارش ڪري ٿو: عملي ڪورس شروع کان پٿون ڊولپر.

اسان توهان کي ياد ڏياريون ٿا: "Habr" جي سڀني پڙهندڙن لاءِ - 10 روبل جي رعايت جڏهن "Habr" پروموشنل ڪوڊ استعمال ڪندي ڪنهن به اسڪل باڪس ڪورس ۾ داخلا.

منھنجو سفر Python کان Go تائين - شيئرنگ صلاحون ۽ وسيلا

مشاهدو

پهرين شيء جيڪا مون پنهنجي سفر جي شروعات ۾ ڪئي اها هئي بهترين سرڪاري ٽيوٽوريل جو مطالعو “Tour of Go" اهو ٻوليءَ جي نحو جي سمجهاڻي ڏئي ٿو.

پنهنجي ڄاڻ ۾ واڌارو آڻڻ لاءِ مون ڪتاب پڻ پڙهيو“.پٿون پروگرامرز لاءِ وڃو”، جنهن اسان کي اڳتي وڌڻ جي اجازت ڏني ايندڙ اسٽيج - آزمائش ۽ غلطي.

مون پيٿون (JSON سيريلائيزيشن يا HTTP ڪالن کي سنڀالڻ) ۾ استعمال ڪيل واقف ڪم ورتو ۽ انهن کي Go ۾ لکڻ جي ڪوشش ڪئي. هن واضح مقابلي جي مهرباني، مان ٻولين جي وچ ۾ اهم فرق کي سڃاڻڻ جي قابل ٿيس.

منصوبي جي ترتيب

سڀ کان پهريان، پٿون کي ڪنهن مخصوص ڊاريڪٽري جي جوڙجڪ جي ضرورت ناهي، جڏهن ته وڃو.

Go استعمال ڪري ٿو "معياري" ترتيب، جيڪو ٿورو وڌيڪ پيچيده آهي ۽ وڌيڪ ڪم جي ضرورت آهي. ٻئي طرف، نتيجو هڪ چڱي طرح ٺهيل ڪوڊ جو بنياد آهي جيڪو ماڊلر ڍانچي کي استعمال ڪري ٿو، ۽ ڪوڊ سختي سان منظم رهي ٿو جيئن منصوبي کي وڌايو وڃي.

سرڪاري سبق "گو ڪوڊ ڪيئن لکجي” بيان ڪري ٿو توهان جي ڪم کي ڪيئن منظم ڪجي.

مستحڪم مضبوط ٽائپنگ

Go statically ٽائيپ ڪيو ويو آهي، جيڪو انهن کي متحرڪ طور تي ٽائپ ڪيل ٻولين جهڙوڪ Python ۽ Ruby کي اڻڄاڻ محسوس ڪندو.

ان ۾ ڪو شڪ ناهي ته متحرڪ ٻوليون وڌيڪ غلطيون آهن ۽ ڊولپر جي حصي تي وڌيڪ ڪوشش جي ضرورت آهي ان پٽ ڊيٽا کي درست ڪرڻ لاءِ. هڪ مثال هڪ فنڪشن آهي جيڪو حساب ڪري ٿو ٻن عددن جي رقم. جيڪڏهن توهان هڪ اسٽرنگ کي فنڪشن ڏانهن منتقل ڪيو (جيڪو نادر ناهي)، اهو نتيجو ٿيندو TypeError.

اهو Go ۾ نه ٿو ٿي سگهي ڇاڪاڻ ته توهان کي هر متغير ۽ فنڪشن لاءِ هڪ قسم جو اعلان ڪرڻو پوندو ۽ ڪهڙي قسم جي متغير فنڪشن واپس ڪندو.

پهرين ته اهو پريشان ڪندڙ هو- مون سوچيو Go جي هن خاصيت شين کي سست ڪري ڇڏيو- پر پوءِ مون محسوس ڪيو ته هر شي جو اعلان ڪرڻ اصل ۾ وقت بچائيندو آهي ۽ غلطين جو امڪان گهٽائيندو آهي.

ملڪي اتفاق

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 تائين - شيئرنگ صلاحون ۽ وسيلا

و Moreيڪ مثال هتي и هتي.

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 کي گو ڍانچي ۾ تبديل ڪرڻ ۾ تمام گهڻو سست آهي؟ ڪو مسئلو ناهي، هي اوزار توهان لاء سڀ ڪجهه ڪندو.

صاف ڪوڊ

Go compiler هميشه توهان جي ڪوڊ کي صاف رکڻ جي ڪوشش ڪندو. اهو سمجهي ٿو ته غير استعمال ٿيل متغيرن کي گڏ ڪرڻ جي غلطي. Go هڪ منفرد طريقو استعمال ڪري ٿو جيڪو سسٽم کي اڪثر فارميٽنگ مسئلن کي حل ڪرڻ جي اجازت ڏئي ٿو. تنهن ڪري، Go gofmt پروگرام کي هلائيندو جڏهن محفوظ يا گڏ ڪندي ۽ فارميٽنگ پاڻ کي درست ڪندي.

ڇا توهان متغيرن جي پرواهه نٿا ڪريو؟ ٺيڪ آهي! بس استعمال ڪريو _ (انڊر اسڪور) ۽ ان کي تفويض ڪريو خالي id تي.

ٻوليءَ سان ڪم ڪرڻ جي هن حصي لاءِ ماسٽرڊ ٽيوٽوريل معلومات آهي “مؤثر وڃڻ".

صحيح لائبريري ۽ فريم ورڪ ڳولڻ

مون فريم ورڪ ۽ لائبريريون استعمال ڪيون آهن جهڙوڪ Flask، Jinja2، Requests، ۽ حتي Kazoo به Python سان، تنهنڪري مون کي ڊپ هو ته مون کي Go لاءِ ڪا به مناسب شيءِ نه ملندي.

پر ڪميونٽي اڳ ۾ ئي اهي مسئلا حل ڪري ڇڏيا آهن: ٻولي کي پنهنجي منفرد لائبريريون آهن جيڪي توهان کي مڪمل طور تي وسارڻ جي اجازت ڏين ٿيون جيڪي توهان اڳ ۾ استعمال ڪيو هو.

هتي منهنجا پسنديده آهن.

پٿون درخواستون => net/http

net/http هڪ آسان ۽ آسان استعمال لاء HTTP ڪلائنٽ ۽ سرور تي عملدرآمد مهيا ڪري ٿو.

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

ٿيو - HTTP ويب فريم ورڪ هڪ تمام سادو API سان: رستي جا پيرا ميٽر، ڊائون لوڊ لائق فائلون، گروپ روٽنگ (/api/v1، /api/v2)، ڪسٽم لاگ فارميٽ، جامد فائلن جي خدمت ڪرڻ، HTML رينڊرنگ ۽ واقعي طاقتور ڪسٽم مڊل ويئر.
شرح هي معيار

CLI تخليق => ڪوبرا

کوبرا - طاقتور CLI ايپليڪيشنون ٺاهڻ لاءِ لائبريري، گڏوگڏ ايپليڪيشنون ۽ بيچ فائلون ٺاهڻ لاءِ هڪ پروگرام.
ڪوبرا ڪيترن ئي وڏن گو پروجيڪٽن ۾ استعمال ڪيو ويندو آهي، بشمول ڪبرنيٽس، وغيره ۽ اوپن شفٽ.

هتي ڪجھ وڌيڪ لائبريريون آهن جيڪي آئون سفارش ڪريان ٿو: وانپ, گونفيگ ۽ هي شاندار فهرست - زبردست- وڃ.

ٻيا مددگار وسيلا

[1] فرانسسڪ ڪيمپو  - توھان کي ضرور انھن جو جائزو وٺڻو پوندو يوٽيوب چينل и GitHub پروفائل.

[2] GopherCon - وڊيو. [3] وڃو ويب جا مثال. [4] گولانگ هفتيوار, گوفر اڪيڊمي, گولنگ نيوز - Twitter اڪائونٽس.

ويٺو آهي

پنجن سالن تائين پٿون جو باقاعده استعمال ڪندڙ هئڻ ڪري، مون کي ڊپ هو ته Go ڏانهن سوئچ ڪرڻ دردناڪ هوندو.

پر نه: ​​Go Community جو ڪم آهي جيڪو ٻولي جي صلاحيتن کي وڌائي ٿو ۽ مڪمل ڪري ٿو، ۽ گڏوگڏ مختلف مفيد وسيلا جيڪي توهان جي منتقلي ۾ مدد ڪندا.

Go تيزي سان وڌي رهيو آهي، ۽ مون کي اميد آهي ته گوگل ان کي ڪلائوڊ ايپليڪيشنون ۽ انفراسٽرڪچر لکڻ لاءِ بنيادي ٻولي بڻائي سگهي ٿو.

اسان سان شامل ٿيو!

منھنجو سفر Python کان Go تائين - شيئرنگ صلاحون ۽ وسيلا

Skillbox سفارش ڪري ٿو:

جو ذريعو: www.habr.com