Az internet tele van nagyszerű kódokkal. Ezek alkotják az alapköveket, amelyekre különböző infrastruktúrák épülnek. Még maga a platform is, amelyen ezt olvasod, a nagyszerű kódok létrehozásának elkötelezettségével épül. Míg az átlagos felhasználó ezt nem fogja tudomásul venni, a jó fejlesztők viszont mindig arra törekszenek, hogy alkalmazásaikat (és így a kódolásukat is) jobbá tegyék.
Az alap, amelyre a nagyszerű kódok íródnak, a fejlesztő készségén és az általa választott nyelven nyugszik. Ez elkerülhetetlenül némi epikus összecsapáshoz vezet a fejlesztők között nem csak a készségszint, hanem főként az általuk preferált nyelv miatt. Ezt az eredményt nagy valószínűséggel akkor kapjuk, ha két nagyszerű programozási nyelvet, például a Golangot (Go) és a Pythont egymás mellé helyezzük.
Lépjünk azonban egy kicsit hátrébb, és értékeljük mindkét nyelvet az érdemek és a funkcionalitás szempontjából. Vegyük el a személyes elfogultságot és preferenciákat. Aztán egyenlítsük ki a játékteret, készségszinten. Most már csak két nagyszerű választásunk marad: Go vs Python. A kérdés most az, hogy melyik a megfelelő számodra?
- A Python története
- A Golang(Go)
- Golang vs Python teljesítmény
- Bináris keresés
- Bubble sort
- Fájlból olvasás
- HTTP Request handling
- Python vs Golang webes keretrendszerek
- Gin
- Echo
- Go kit
- Companies using Golang
- PayPal Taps Golang to Modernize and Scale
- American Express a Golangot használja a fizetésekhez & Jutalmak
- A Salesforce az Einstein Analyticsben a Pythont a Golangért dobta
- Stream – Miért váltottunk Pythonról Go-ra
- Pydio újraírta a vállalati szintű fájlmegosztást Golangban
- A Repustate az API-t Pythonról (először Django, majd Falcon) Go-ra migrálta
- Melyiket válasszuk?
- A Golang gyorsan tanulható, fejleszthető és futtatható
A Python története
Kérdezz meg néhány fejlesztőt, és azt fogod hallani, hogy a Python előtt nem volt semmi, és utána sem lesz semmi. Az évek során sikerült kultikus követőkre szert tennie, mert egy nagyon jó programozási nyelv. Az internet tele van Python segítségével létrehozott csodákkal.
A Python a programozás éveit tekintve régi. Először 1991-ben fogalmazták meg. És a korral együtt járnak bizonyos előnyök. Széleskörű követői vannak, ami azt jelenti, hogy stabil és jól dokumentált. A legtöbb esetben szinte mindenhez találsz könyvtárakat és kódmintákat szinte mindenhez, ami csak eszedbe jut. Ez a fejlesztők és a vállalkozások számára azt jelenti, hogy a Python használatának választása rengeteg tapasztalattal és kódolással jár együtt, amelyek csak arra várnak, hogy hozzáférjenek.
Rengeteg olyan nyílt forráskódú projekt van, amely a Pythont használja alapként, így a legtöbb esetben nem kell a nulláról kezdeni. Jól integrálható a vállalati alkalmazásokba, és használható gépi nyelvi és mesterséges intelligencia alkalmazásokban. De vannak hátrányai is. Egyrészt nem ideális memóriaigényes feladatokhoz, kicsit lassú a végrehajtásoknál, és alkalmatlan mobilalkalmazások fejlesztésére.
A Golang(Go)
A Google-nél fejlesztették ki még 2009-ben. A Go egy problémára adott megoldás volt. Célja az volt, hogy egy olyan nyelvet hozzon létre, amely eltávolítja az olyan nyelvekben, mint például a C++, megtalálható összes terhet és felesleget. Ez olyan teljesítmény- és sebességnövekedést eredményez, ami élvezetessé teszi a vele való munkát. Ráadásul a legtöbb fejlesztő, aki először veszi kézbe a Go-t, nem fog sodródni, mivel az ismerős elemek és a könnyű használat kellemes meglepetésként érheti.
Ez nem azt jelenti, hogy a nyelv minden esetben tökéletes. Miközben a sebességet és az eleganciát a következő szintre emeli, néhány kívánnivalót hagy maga után. Egyrészt nem rendelkezik kiterjedt könyvtárral, és nem támogatja az öröklést sem. Ezenkívül nincs GUI-könyvtár vagy objektumorientált programozási támogatás. Amivel viszont rendelkezik, az a könnyű szálak (Goroutines), az okos szabványkönyvtár, az erős beépített biztonság és a minimális szintaxissal könnyen kódolható.
Golang vs Python teljesítmény
A végtelenségig beszélhetünk a Golang vagy a Python előnyeiről és hátrányairól, de amikor a lényegre térünk, mindannyian azt nézzük, hogyan teljesítenek. Ezért végeztünk néhány tesztet a tesztberendezésünkön, amelyen egy Intel® Core™ i7-9700K CPU @ 3,60GHz × 8 mag fut. A felhasznált kód pedig itt érhető el.
Bináris keresés
Létrehoztunk ints-listákat (1-től 100000-ig), majd bináris kereséssel mindig ugyanazt a 729-es számot kerestük. Az eredmények:
Nyelv | Sebesség |
---|---|
Go | 20,8 ns/op |
Python | 2442.13377 ns/op |
Bubble sort
Ismét generáltunk egy listát egész számokból (ezúttal véletlenszerűek, 10000 eleműek), és ezeket bubble sort algoritmusokkal rendeztük.
Nyelv | Sebesség |
---|---|
Go | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Fájlból olvasás
Egy egyszerű teszt a “lorem ipsum” szöveges fájl olvasására.
Nyelv | Sebesség |
---|---|
Go | 5305 ns/op |
Python | 58359 ns/op |
HTTP Request handling
HTTP szervert készíteni nagyon egyszerű, de mi megerőltettük magunkat, és Pythonban csináltuk meg az analógot. Megnéztük, hogy mennyi idő alatt válaszolna egy egyszerű “hello world!” üzenetre.
Nyelv | Sebesség |
---|---|
Go | 0.070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs Golang webes keretrendszerek
A Python használatának egyik legnagyobb előnye a rendelkezésre álló könyvtárak és keretrendszerek hatalmas gyűjteménye. A Django és a Flask a két legnépszerűbb Python webes keretrendszer, amelyek segítségével a lehető leggyorsabban építhetünk webes alkalmazást vagy API-t.
A Golangnak nincs egyetlen domináns keretrendszere sem, mint a Django a Python vagy a Laravel a PHP esetében, és a Go közösség bizonyos értelemben idegenkedik a keretrendszerektől. A Go 2018 felmérés eredményei azt mutatják, hogy a Golang webfejlesztés a legelterjedtebb 65%-kal, és növelte dominanciáját, mint a felmérés válaszadóinak elsődleges munkaterülete (a tavalyi 61%-hoz képest): a webfejlesztés 2016 óta a Go fejlesztés leggyakoribb területe.
Itt vannak a legnépszerűbb Golang webes keretrendszerek:
Gin
A Gin egy Golang webes keretrendszer, amely a nagy teljesítményű API-k fejlesztéséről ismert. Emellett az egyik legegyszerűbben megtanulható keretrendszer. Körülbelül 10 perc alatt elsajátítható. Ha teljesítményre és jó termelékenységre van szüksége, a Gint imádni fogja.
Tulajdonságok
- Gyorsabb teljesítmény:
- Közvetítői támogatás: Radix fa alapú útválasztás, kis memória lábnyom
- Közvetítői támogatás: A bejövő HTTP-kérést middleware-ek láncolata és a végső művelet kezelheti
- Rutek csoportosítása: Az útvonalak jobb rendszerezése
- Hibakezelés: A Gin kényelmes módot biztosít a HTTP-kérés során előforduló összes hiba összegyűjtésére
- Beépített renderelés: A Gin könnyen használható API-t biztosít JSON, XML és HTML rendereléshez
- Kiterjeszthető: Egy új middleware létrehozása nagyon egyszerű, csak nézd meg a mintakódokat
Echo
Az Echo egy nagy teljesítményű, bővíthető és minimalista Go webes keretrendszer, amely optimalizált HTTP routert, csoport API-kat, JSON és XML adatkötést, HTTP/2 támogatást és még sok mást biztosít.
Míg a Gin egy kicsit népszerűbb (36k GitHub csillag), sok fejlesztő választja az Echót (16k GitHub csillag), mert jobb dokumentációval rendelkezik és egy kicsit gyorsabb keretrendszer.
Jellemzők
- Optimalizált HTTP router, amely okosan priorizálja az útvonalakat
- Robusztus és skálázható RESTful API, könnyen csoportokba szervezhető
- Bővíthető middleware keretrendszer, sok beépített middleware, a middleware beállítható root, csoport vagy útvonal szinten
- Adatkötés JSON-hoz, XML és form payload
- Kényelmes funkciók különböző HTTP-válaszok küldéséhez, beleértve JSON, XML, HTML, File, Attachment, Inline, Stream vagy Blob
- Szabályozott központi HTTP hibakezelés és könnyen bővíthető API
Go kit
A Go kit egy programozási eszközkészlet mikroszolgáltatások (vagy elegáns monolitok) építéséhez. A Go Kit egy véleményes keretrendszer. Megoldja az elosztott rendszerek és az alkalmazásarchitektúra gyakori problémáit, így Ön az üzleti érték előállítására összpontosíthat.
Jellemzők
- Működjön heterogén SOA-ban – számoljon azzal, hogy többnyire nem Gokit szolgáltatásokkal
- RPC mint elsődleges üzenetküldési minta
- Pluggable serialization and transport – not just JSON over HTTP
- Operate within existing infrastructures – no mandates for specific tools or technologies
Companies using Golang
Golang is widely adopted by top companies. Világszerte több mint egymillió fejlesztő használja a Golt – a banki és kereskedelmi, a játék- és média-, a technológiai és más iparágakban, olyan különböző vállalatoknál, mint a PayPal, a Capital One, az IBM, a Salesforce, a Twitch, az Uber, a Dropbox és természetesen a Google.
Itt van néhány esettanulmány:
PayPal Taps Golang to Modernize and Scale
A Go értéke a tiszta, hatékony kód előállításában, amely könnyen skálázható, ahogy a szoftver telepítése skálázódik, a nyelvet erősen alkalmassá tette a PayPal céljainak támogatására.
Egy esettanulmány megtekintése →
American Express a Golangot használja a fizetésekhez & Jutalmak
A Go biztosítja az American Express számára a szükséges sebességet és skálázhatóságot mind a fizetési, mind a jutalmazási hálózatokhoz.
Egy esettanulmány megtekintése →
A Salesforce az Einstein Analyticsben a Pythont a Golangért dobta
A Salesforce elmagyarázza, hogy a Google Go programozási nyelve miért alkalmasabb az Einstein Analytics számára a Python és a C helyett.
Egy esettanulmány megtekintése →
Stream – Miért váltottunk Pythonról Go-ra
A Stream kis fejlesztőcsapata több mint 500 millió végfelhasználó számára biztosítja a feedeket és a chatet. A Go a nagyszerű ökoszisztéma, az új fejlesztők könnyű beszállása, a gyors teljesítmény, a szilárd párhuzamossági támogatás és a produktív programozási környezet kombinációja miatt nagyszerű választás.
Egy esettanulmány megtekintése →
Pydio újraírta a vállalati szintű fájlmegosztást Golangban
Pydio, a Dropbox előtti felhőtároló megoldásból egy teljes értékű Sync-and-Share platform lett, és az alkalmazás ragaszkodott az eredeti technikai stackhez: LAMP, azaz Linux/Apache/MySQL/PHP. Olvasson egy cikket a teljesen Golangra való átírás motivációiról, az új architektúráról és a mögötte álló döntésekről.
Egy esettanulmány megtekintése →
A Repustate az API-t Pythonról (először Django, majd Falcon) Go-ra migrálta
A migráció 85%-kal csökkentette a szükséges EC2-példányok számát, az API-hívás átlagos válaszidejét pedig 100 msról 10 ms-ra. A Python és a Go közötti hasonlóság miatt az orrban írt egységtesztjeinket gyorsan át tudták alakítani a Go által megkövetelt struktúrához, mindössze néhány egyszerű sed szkript segítségével.
Egy esettanulmány megtekintése →
Melyiket válasszuk?
Míg a Python továbbra is a közösség kedvence maradt, megtartva a #2 helyet 2019 első negyedévében a GitHubon a leggyorsabb programozási nyelvek között a pull requestek számát tekintve (+17%), a Golang nem sokkal van lemaradva, és forrón a sarkában van a #4-en (+8%). A Golang vs Python közötti választás még homályosabbá válik. Ettől függetlenül van néhány dolog, amit figyelembe kell venni, amikor kiválasztjuk, melyik lehet a megfelelő az Ön számára.
-
Skálázhatóság: A Golangot a skálázhatóság jegyében hozták létre. Beépített párhuzamossággal rendelkezik, hogy egyszerre több feladatot tudjon kezelni. A Python is használ párhuzamosságot, de az nem beépített; a párhuzamosságot szálakon keresztül valósítja meg. Ez azt jelenti, hogy ha nagy adathalmazokkal fog dolgozni, akkor a Golang megfelelőbb választásnak tűnik.
-
Teljesítmény: A Python nem arról ismert, hogy memória- vagy CPU-barát lenne, de a rengeteg könyvtárnak köszönhetően a Python hatékonyan teljesít az alapvető fejlesztési feladatokhoz. A Golang beépített funkciókkal rendelkezik, és alkalmasabb a mikroszolgáltatási szoftverarchitektúrákhoz.
-
Alkalmazások: A Python akkor ragyog, ha mesterséges intelligencia, adatelemzés, mélytanulás és webfejlesztés kódjainak írásához használják. Míg a Golangot rendszerprogramozásra használják, a fejlesztők szeretik, akik felhő- és klaszterszámítási alkalmazásokhoz használják.
-
Community & Könyvtár: Mint korábban említettük, a Python kora bizonyos előnyökkel jár. Ezek közül az egyik a könyvtárak száma és a nagy közösség, amely támogatja. A Golang ezzel szemben még mindig fejlődő nyelv, és nem rendelkezik annyi könyvtárral és közösségi támogatással, mint a Python parancsnoksága. Ennek ellenére még nem szabad a Go-t még nem számolnunk. A növekedési és elfogadási üteme hihetetlen, és napról napra bővül.
-
Végrehajtás: Ha a sebesség a játék neve, akkor a Golang mérföldekkel nyer.
Mindezek figyelembe vétele után a felhasználási eseted lesz a döntő tényező abban, hogy melyik nyelvet választod. Egy olyan forgatókönyv esetén, amikor egy fejlesztőcsapatot állítasz fel mikroszolgáltatások létrehozására, itt a Golang lenne az ésszerűbb választás, mivel egyszerre gyors, könnyen kódolható és kiválóan skálázható. A Python viszont inkább a mesterséges intelligencia, az ML és az adatelemzés felé irányul.
A legtöbb esetben tehát a Go kerülne ki győztesen, és a Python használatának érvényes alternatívájának tekinthető. A fejlesztőknek a programozási nyelv kiválasztásakor figyelembe kell venniük a fejlesztési projekt jellegét és méretét, valamint az érintettek készségeit.
A jó hír azonban az, hogy a választástól függetlenül mindkét nyelv folyamatosan fejlődik. Bár a Golang a legtöbb esetben kézenfekvő választásnak tűnhet, a Python közösség sem tétlenkedik. Mindkét nyelv bővül és növekszik. Ez azt jelenti, hogy a jövőben még több funkciót és fejlesztést fogunk látni.