Internet je plný skvělých kódů. Tvoří základní kámen, na kterém jsou postaveny různé infrastruktury. Dokonce i samotná platforma, na které čtete tento článek, je postavena s důrazem na vytváření skvělých kódů. Zatímco běžný uživatel to nebude brát na vědomí, dobří vývojáři se na druhou stranu vždy snaží své aplikace (a tedy i kódy) vylepšovat.
Základ, na kterém je napsán skvělý kód, spočívá v dovednostech vývojáře a jím zvoleném jazyce. To nevyhnutelně vede k určitým epickým střetům mezi vývojáři nejen na úrovni dovedností, ale hlavně na jejich preferovaném jazyce. To je výsledek, kterého s největší pravděpodobností dosáhnete, když vedle sebe postavíte dva skvělé programovací jazyky, jako je Golang(Go) a Python.
Ustupme však trochu zpět a zhodnoťme oba jazyky z hlediska předností a funkčnosti. Oprostěme se od osobních předsudků a preferencí. Pak srovnejme podmínky z hlediska dovedností. Nyní nám zbývají jen dvě skvělé možnosti: Go vs. Python. Otázka nyní zní: „Který je pro vás ten pravý?“
- Příběh Pythonu
- Mluvíme-li o Golangu(Go)
- Výkon Golangu vs. Pythonu
- Binární vyhledávání
- Bubble sort
- Čtení ze souboru
- Obsluha HTTP požadavků
- Python vs. webové frameworky Golang
- Gin
- Echo
- Go kit
- Společnosti používající Golang
- PayPal využívá Golang k modernizaci a škálování
- American Express používá Golang pro platby & Odměny
- Salesforce se v Einstein Analytics zbavil Pythonu kvůli Golangu
- Stream – Proč jsme přešli z jazyka Python na jazyk Go
- Pydio přepsalo sdílení souborů připravené pro podniky v Golangu
- Repustate migroval API z Pythonu (nejprve Django a pak Falcon) do Go
- Kterou zvolit?
- Golang se rychle učí, vyvíjí se v něm a běží
Příběh Pythonu
Ptejte se některých vývojářů a uslyšíte, že před Pythonem nic nebylo a po něm nic nebude. V průběhu let si dokázal získat kultovní oblibu, protože je to velmi dobrý programovací jazyk. Internet je plný zázraků vytvořených pomocí Pythonu.
Python je z hlediska let programování starý. Poprvé byl koncipován již v roce 1991. A se stářím přicházejí i určité výhody. Má široký okruh příznivců, což se projevuje tím, že je stabilní a dobře zdokumentovaný. Většinou v něm najdete knihovny téměř pro všechno a ukázky kódu téměř pro všechno, na co si vzpomenete. Pro vývojáře a firmy to znamená, že volba používat Python s sebou přináší bohaté zkušenosti a kódování, které jen čekají na to, až se k nim dostanete.
Existuje spousta open-source projektů, které používají Python jako základ, takže ve většině případů nezačínáte od nuly. Je dobře integrován do podnikových aplikací a lze jej použít v aplikacích pro strojový jazyk a umělou inteligenci. Má však i své nevýhody. Například není ideální pro úlohy náročné na paměť, je trochu pomalejší na provádění a nevhodný pro vývoj mobilních aplikací.
Mluvíme-li o Golangu(Go)
Vyvinutý ve společnosti Google již v roce 2009. Go bylo řešením problému. Jeho cílem bylo vytvořit jazyk, který by se zbavil všech zavazadel a přebytků, které se vyskytují v jazycích, jako je C++. Díky tomu se zvýšil jeho výkon a rychlost, takže práce s ním je radost. Navíc většina vývojářů, kteří si Go vezmou do ruky poprvé, nezůstane na holičkách, protože známé prvky a snadné používání je příjemně překvapí.
Neznamená to, že by jazyk byl ve všech případech dokonalý. Posouvá sice rychlost a eleganci na vyšší úroveň, nicméně zanechává za sebou několik věcí, které jsou žádoucí. Za prvé nemá rozsáhlou knihovnu ani podporu dědičnosti. Kromě toho nemá žádnou knihovnu grafického uživatelského rozhraní ani podporu objektově orientovaného programování. Co však má, je odlehčené vlákno (Goroutines), inteligentní standardní knihovna, silné vestavěné zabezpečení a snadno se v něm kóduje s minimální syntaxí.
Výkon Golangu vs. Pythonu
Můžeme donekonečna mluvit o výhodách a nevýhodách Golangu nebo Pythonu, ale když jde do tuhého, všichni hledíme na to, jak jsou výkonné. Proto jsme provedli několik testů na našem testovacím zařízení s procesorem Intel® Core™ i7-9700K @ 3,60 GHz × 8 jader. A použitý kód je k dispozici zde:
Binární vyhledávání
Vytvořili jsme seznamy intů (od 1 do 100000) a pak jsme pomocí binárního vyhledávání našli vždy stejné číslo 729. V tomto případě jsme použili binární vyhledávání. Výsledky jsou:
Jazyk | Rychlost |
---|---|
Jít | 20,8 ns/op |
Python | 2442.13377 ns/op |
Bubble sort
Opět jsme vygenerovali seznam celých čísel (tentokrát náhodných, o délce 10000 prvků) a ty seřadili pomocí algoritmů bubble sort.
Jazyk | Rychlost |
---|---|
Jít | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Čtení ze souboru
Jednoduchý test čtení textového souboru „lorem ipsum“.
Jazyk | Rychlost |
---|---|
Jít | 5305 ns/op |
Python | 58359 ns/op |
Obsluha HTTP požadavků
Vytvořit HTTP server je opravdu snadné, ale my jsme si dali tu práci a udělali jsme analogový v Pythonu. Zjišťovali jsme, jak dlouho bude trvat odpověď na jednoduchou zprávu „Hello world!“
Jazyk | Rychlost |
---|---|
Jít | 0,070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs. webové frameworky Golang
Jednou z největších výhod použití Pythonu je obrovská sbírka knihoven a frameworků, které jsou k dispozici. Django a Flask jsou dva nejoblíbenější webové frameworky pro Python, které umožňují vytvořit webovou aplikaci nebo API v nejkratším možném čase.
Golang nemá jediný dominantní framework jako Django pro Python nebo Laravel pro PHP a komunita Go má k frameworkům svým způsobem averzi. Výsledky průzkumu Go 2018 ukazují, že vývoj webových aplikací v Golangu je nejrozšířenější (65 %) a zvýšila se jeho dominance jako hlavní oblasti, ve které respondenti průzkumu pracují (oproti 61 % v loňském roce): vývoj webových aplikací je nejčastější doménou pro vývoj v Go od roku 2016.
Zde jsou nejoblíbenější webové frameworky pro Golang:
Gin
Gin je webový framework pro Golang, který je známý pro vývoj vysoce výkonných API. Je to také jeden z nejjednodušších frameworků na naučení. Zvyknout si na něj trvá přibližně 10 minut. Pokud potřebujete výkon a dobrou produktivitu, Gin si zamilujete.
Vlastnosti
- Rychlejší výkon: Rádiové směrování na bázi stromu, malá paměťová náročnost
- Podpora middlewaru: Příchozí požadavek HTTP může být zpracován řetězcem middlewarů a konečnou akcí
- Seskupování směrování: Lepší organizace tras
- Správa chyb: Gin poskytuje pohodlný způsob, jak shromažďovat všechny chyby vzniklé během požadavku HTTP
- Vestavěné vykreslování: Gin poskytuje snadno použitelné rozhraní API pro vykreslování JSON, XML a HTML
- Rozšiřitelné: Vytvoření nového middlewaru je tak snadné, stačí se podívat na ukázkové kódy
Echo
Echo je vysoce výkonný, rozšiřitelný a minimalistický webový framework Go poskytující optimalizovaný směrovač HTTP, skupinové rozhraní API, vazbu dat pro JSON a XML, podporu HTTP/2 a mnoho dalšího.
Ačkoli je Gin o něco populárnější (36 tisíc hvězdiček GitHub), mnoho vývojářů volí Echo (16 tisíc hvězdiček GitHub), protože má lepší dokumentaci a je o něco rychlejší framework.
Vlastnosti
- Optimalizovaný HTTP router, který chytře upřednostňuje trasy
- Robustní a škálovatelné RESTful API, snadno organizované do skupin
- Rozšiřitelný middleware framework, mnoho vestavěných middlewarů, middleware lze nastavit na úrovni kořene, skupiny nebo trasy
- Vazba na data JSON, XML a formulářovou zátěž
- Šikovné funkce pro odesílání různých odpovědí HTTP, včetně JSON, XML, HTML, souboru, přílohy, inline, streamu nebo blobu
- Vlastní centrální zpracování chyb HTTP a snadno rozšiřitelné rozhraní API
Go kit
Go kit je programovací sada nástrojů pro vytváření mikroslužeb (nebo elegantních monolitů). Go Kit je názorový framework. Řeší běžné problémy v distribuovaných systémech a architektuře aplikací, takže se můžete soustředit na poskytování obchodní hodnoty.
Vlastnosti
- Pracujte v heterogenní SOA – počítejte s tím, že budete komunikovat převážně s jinými než Gokitovými službami
- RPC jako primární vzor pro zasílání zpráv
- Připojitelná serializace a transport – nejen JSON přes HTTP
- Pracujte v rámci stávajících infrastruktur – žádné mandáty pro konkrétní nástroje nebo technologie
Společnosti používající Golang
Golang je široce přijat špičkovými společnostmi. Na celém světě používá jazyk Go více než milion vývojářů – v bankovnictví a obchodě, herním a mediálním průmyslu, technologiích a dalších odvětvích, v nejrůznějších podnicích jako PayPal, Capital One, IBM, Salesforce, Twitch, Uber, Dropbox a samozřejmě Google.
Tady je několik ukázkových případových studií:
PayPal využívá Golang k modernizaci a škálování
Díky hodnotě jazyka Go při vytváření čistého a efektivního kódu, který se snadno škáluje s rostoucím nasazením softwaru, se tento jazyk hodí pro podporu cílů společnosti PayPal.
Přehlédněte si případovou studii →
American Express používá Golang pro platby & Odměny
Go poskytuje společnosti American Express rychlost a škálovatelnost, které potřebuje pro své platební i odměnové sítě.
Podívejte se na případovou studii →
Salesforce se v Einstein Analytics zbavil Pythonu kvůli Golangu
Salesforce vysvětluje, proč je programovací jazyk Go od Googlu pro Einstein Analytics vhodnější než Python a C.
Podívejte se na případovou studii →
Stream – Proč jsme přešli z jazyka Python na jazyk Go
Ve společnosti Stream máme malý vývojový tým, který pohání kanály a chat pro více než 500 milionů koncových uživatelů. Kombinace skvělého ekosystému, snadného nástupu nových vývojářů, rychlého výkonu, solidní podpory souběžnosti a produktivního programovacího prostředí dělá z Go skvělou volbu.
Přehlédněte si případovou studii →
Pydio přepsalo sdílení souborů připravené pro podniky v Golangu
Pydio, řešení cloudového úložiště z doby před Dropboxem, se změnilo v plnohodnotnou platformu Sync-and-Share a aplikace se držela svého původního technického stacku: LAMP, tedy Linux/Apache/MySQL/PHP. Přečtěte si článek o motivaci k přepsání kompletně do jazyka Golang, nové architektuře a rozhodnutích, která za ní stojí.
Přečtěte si případovou studii →
Repustate migroval API z Pythonu (nejprve Django a pak Falcon) do Go
Migrace snížila počet potřebných instancí EC2 o 85 % a průměrnou dobu odezvy volání API ze 100 ms na 10 ms. Díky podobnosti mezi jazyky Python a Go dokázali rychle přetvořit naše jednotkové testy napsané v nose tak, aby odpovídaly struktuře, kterou vyžaduje Go, a to jen pomocí několika jednoduchých skriptů sed.
Přehlédněte si případovou studii →
Kterou zvolit?
Ačkoli Python zůstal favoritem komunity a udržel si v prvním čtvrtletí roku 2019 druhou příčku nejrychlejšího programovacího jazyka na GitHubu z hlediska počtu žádostí o stažení (+17 %), Golang není tak daleko a šlape mu na paty na čtvrtém místě (+8 %). Volba mezi Golangem a Pythonem se tak ještě více rozostřuje. Bez ohledu na to je třeba při výběru zvážit několik věcí, které by pro vás mohly být vhodné.
-
Škálovatelnost: Golang byl vytvořen s ohledem na škálovatelnost. Je vybaven vestavěnou souběžností pro zpracování více úloh najednou. Python souběžnost používá, ale není vestavěná; implementuje paralelismus prostřednictvím vláken. To znamená, že pokud se chystáte pracovat s velkými soubory dat, pak se Golang jeví jako vhodnější volba.
-
Výkon: Python není známý tím, že by byl šetrný k paměti nebo procesoru, ale díky obrovskému množství knihoven podává efektivní výkon pro základní vývojové úlohy. Golang přichází s vestavěnými funkcemi a je vhodnější pro softwarové architektury mikroslužeb.
-
Aplikace: Golang je vhodnější pro softwarové architektury mikroslužeb: Python zazáří při psaní kódů pro umělou inteligenci, analýzu dat, hluboké učení a vývoj webových aplikací. Zatímco Golang se používá pro systémové programování, oblíbili si ho vývojáři, kteří ho používají pro aplikace cloud computingu a cluster computingu.
-
Komunitní knihovna &: Jak již bylo zmíněno, stáří jazyka Python mu dává určité výhody. Jednou z nich je množství knihoven, které má, a velká komunita, která jej podporuje. Naproti tomu Golang je stále rostoucí jazyk a nemá takový počet knihoven a podporu komunity, jakou má Python. Přesto bychom s Go ještě neměli počítat. Jeho tempo růstu a přijetí je neuvěřitelné a rozšiřuje se každým dnem.
-
Provedení:
Po zvážení všech těchto faktorů bude rozhodujícím faktorem pro výběr jazyka váš případ použití. Vzhledem ke scénáři, kdy zakládáte vývojový tým pro vytváření mikroslužeb, by zde byl Golang rozumnější volbou, protože je jednak rychlý, snadno se v něm kóduje a jednak se dá výborně škálovat. Na druhou stranu Python je více zaměřen na umělou inteligenci, ML a analýzu dat.
Půjdeme-li tedy proti sobě, Go by ve většině případů vyšel na jedničku a je považován za platnou alternativu k použití Pythonu. Vývojáři si musí vybrat programovací jazyk s ohledem na povahu a velikost vývojového projektu a také na dovednosti zúčastněných osob.
Dobrou zprávou však je, že bez ohledu na výběr se oba jazyky neustále vyvíjejí. I když se Golang může ve většině případů zdát jako jasná volba, komunita Pythonu nesedí se založenýma rukama a nedělá nic. Oba jazyky se rozšiřují a rostou. To znamená, že se v budoucnu dočkáme dalších funkcí a vylepšení.
.