Internet är fullt av bra koder. De utgör den grund som olika infrastrukturer är byggda på. Till och med själva plattformen som du läser detta på är byggd med ett engagemang för att skapa bra koder. Medan genomsnittsanvändaren inte kommer att lägga märke till detta, försöker bra utvecklare å andra sidan alltid göra sina tillämpningar (och därmed sin kodning) bättre.
Grunden på vilken bra kod skrivs vilar på utvecklarens skicklighet och hans/hennes val av språk. Detta leder oundvikligen till episka sammandrabbningar mellan utvecklare, inte bara på grund av deras skicklighetsnivå, utan framför allt på grund av det språk de föredrar. Detta är det resultat du med största sannolikhet får när du placerar två fantastiska programmeringsspråk som Golang(Go) och Python sida vid sida.
Låt oss dock ta ett steg tillbaka och utvärdera de båda språken utifrån deras förtjänster och funktionalitet. Låt oss ta bort personliga fördomar och preferenser. Jämna sedan ut spelplanen, kompetensmässigt. Nu har vi bara två stora valmöjligheter kvar: Go vs Python. Frågan blir nu, vilket är rätt för dig?
- En berättelse om Python
- På tal om Golang(Go)
- Golang vs Pythons prestanda
- Binär sökning
- Bubbelsortering
- Läs från fil
- HTTP Request handling
- Python vs Golang webbramverk
- Gin
- Echo
- Go kit
- Företag som använder Golang
- PayPal använder Golang för att modernisera och skala
- American Express använder Golang för betalningar & belöningar
- Salesforce bytte ut Python mot Golang i Einstein Analytics
- Stream – Varför vi bytte från Python till Go
- Pydio skrev om företagsanpassad fildelning i Golang
- Repustate migrerade API från Python (först Django och sedan Falcon) till Go
- Vad ska man välja?
- Golang är snabbt att lära sig, utveckla i och köra
En berättelse om Python
Fråga några utvecklare och du kommer att få höra att det inte fanns något före Python och att det inte kommer att finnas något efter det. Under årens lopp har det lyckats få ett kultliknande följe eftersom det är ett mycket bra programmeringsspråk. Internet är fyllt av underverk som skapats med hjälp av Python.
Python är gammalt, när det gäller programmeringsår. Det konceptualiserades för första gången redan 1991. Och med åldern kommer vissa fördelar. Det har ett brett följe, vilket innebär att det är stabilt och väldokumenterat. I de flesta fall hittar du bibliotek för nästan allt och kodprov för nästan allt du kan tänka dig. Vad detta innebär för utvecklare och företag är att valet att använda Python kommer med en rikedom av erfarenhet och kodning som bara väntar på att bli tillgänglig.
Det finns gott om projekt med öppen källkod som använder Python som bas, så i de flesta fall börjar du inte från noll. Det är väl integrerat i företagsapplikationer och kan användas i maskinspråks- och AI-applikationer. Men det har sina nackdelar. Till exempel är den inte idealisk för minnesintensiva uppgifter, lite långsam för utföranden och olämplig för utveckling av mobilapplikationer.
På tal om Golang(Go)
Utvecklades på Google redan 2009. Go var en lösning på ett problem. Syftet var att skapa ett språk som tog bort allt bagage och överflöd som finns i språk som C++. Detta ger det en prestanda- och hastighetsökning som gör det till en fröjd att arbeta med det. Dessutom kommer de flesta utvecklare som plockar upp Go för första gången inte att bli överkörda eftersom de välbekanta elementen och användarvänligheten skulle komma som en trevlig överraskning.
Detta betyder inte att språket är perfekt i alla fall. Även om det tar snabbhet och elegans till nästa nivå, lämnar det dock en del saker att önska. För det första har det varken ett omfattande bibliotek eller stöd för arv. Dessutom finns det inget GUI-bibliotek eller stöd för objektorienterad programmering. Vad den har för sig är en lättviktstråd (Goroutines), ett smart standardbibliotek, stark inbyggd säkerhet och är lätt att koda med minimal syntax.
Golang vs Pythons prestanda
Vi kan prata i all oändlighet om fördelarna och nackdelarna med Golang eller Python, men när det kommer till kritan är det vi alla letar efter hur de presterar. Så vi gjorde några tester på vår testrigg med en Intel® Core™ i7-9700K CPU @ 3,60 GHz × 8 kärnor. Och koden som användes finns här.
Binär sökning
Vi skapade listor med ints (från 1 till 100000) och använde sedan binär sökning för att hitta alltid samma nummer 729. Resultaten är:
Språk | Snabbhet |
---|---|
Go | 20,8 ns/op |
Python | 2442.13377 ns/op |
Bubbelsortering
Återigen genererade vi en lista med heltal (denna gång slumpmässiga, 10000 element långa) och sorterade dem med hjälp av bubbelsorteringsalgoritmer.
Språk | Snabbhet |
---|---|
Go | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Läs från fil
Ett enkelt test av läsning av textfilen ”lorem ipsum”.
Språk | Hastighet |
---|---|
Gå | 5305 ns/op |
Python | 58359 ns/op |
HTTP Request handling
Att göra en HTTP-server är väldigt enkelt, men vi gjorde en ansträngning och gjorde den analoga i Python. Vi kontrollerade hur lång tid det skulle ta att svara på ett enkelt ”hello world!”-meddelande.
Språk | Snabbhet |
---|---|
Gå | 0,070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs Golang webbramverk
En av de största fördelarna med att använda Python är den stora samling bibliotek och ramverk som finns tillgängliga. Django och Flask är två av de mest populära webbramverken för Python som gör det möjligt att bygga en webbapplikation eller ett API på snabbast möjliga tid.
Golang har inte ett enda dominerande ramverk som Django för Python eller Laravel för PHP och Go-communityt är på sätt och vis ovilligt inställt till ramverk. Go 2018 Survey Results visar att Golang-webbutveckling är det mest förekommande med 65 %, och det ökade sin dominans som det primära området som respondenterna i undersökningen arbetar inom (upp från 61 % förra året): Webbutveckling har varit den vanligaste domänen för Go-utveckling sedan 2016.
Här är de populäraste Golang-webbramverken:
Gin
Gin är ett Golang-webbramverk som är känt för att utveckla högpresterande API:er. Det är också ett av de enklaste ramverken att lära sig. Det tar ungefär 10 minuter att vänja sig vid det. Om du behöver prestanda och god produktivitet kommer du att älska Gin.
Funktioner
- Snabbare prestanda: Radix tree based routing, small memory foot print
- Middleware support: En inkommande HTTP-förfrågan kan hanteras av en kedja av middlewares och den slutliga åtgärden
- Gruppering av routes: Organisera dina rutter bättre
- Felhantering: Gin erbjuder ett bekvämt sätt att samla in alla fel som uppstått under en HTTP-förfrågan
- Rendering inbyggd: Gin erbjuder ett lättanvänt API för JSON-, XML- och HTML-rendering
- Utvidgningsbart: Gin erbjuder ett lättanvänt API för JSON-, XML- och HTML-rendering: Det är så enkelt att skapa en ny middleware, det är bara att kolla in exempelkoderna
Echo
Echo är ett högpresterande, utbyggbart och minimalistiskt Go-webbramverk som tillhandahåller optimerad HTTP-router, grupp-API:er, databindning för JSON och XML, HTTP/2-stöd och mycket mer.
Men även om Gin är lite mer populärt (36k GitHub-stjärnor) väljer många utvecklare Echo (16k GitHub-stjärnor) eftersom det har bättre dokumentation och är ett lite snabbare ramverk.
Funktioner
- Optimerad HTTP-router som smart prioriterar rutter
- Robust och skalbart RESTful API, enkelt organiserat i grupper
- Utvecklingsbart middleware-ramverk, många inbyggda middlewares, middleware kan ställas in på rot-, grupp- eller ruttnivå
- Databindning för JSON, XML och formulär payload
- Handy-funktioner för att skicka en mängd olika HTTP-svar, inklusive JSON, XML, HTML, File, Attachment, Inline, Stream eller Blob
- Anpassad central HTTP-felhantering och lätt utbyggbart API
Go kit
Go kit är en programmeringsverktygslåda för att bygga mikrotjänster (eller eleganta monoliter). Go Kit är ett åsiktsbaserat ramverk. Det löser vanliga problem i distribuerade system och applikationsarkitektur så att du kan fokusera på att leverera affärsnytta.
Funktioner
- Företagandet i en heterogen SOA – förvänta dig att interagera med mestadels icke-Go-kit-tjänster
- RPC som det primära meddelandemönstret
- Pluggbar serialisering och transport – inte bara JSON över HTTP
- Operera inom befintliga infrastrukturer – inga mandat för specifika verktyg eller tekniker
Företag som använder Golang
Golang har antagits i stor utsträckning av toppföretag. Det finns över en miljon utvecklare som använder Go över hela världen – inom bank och handel, spel och media, teknik och andra branscher, på så olika företag som PayPal, Capital One, IBM, Salesforce, Twitch, Uber, Dropbox och naturligtvis Google.
Här är några exempel på fallstudier:
PayPal använder Golang för att modernisera och skala
Gos värde när det gäller att producera ren, effektiv kod som lätt kan skalas i takt med att programvaruinstallationen skalas, gjorde att språket passade bra för att stödja PayPals mål.
Se fallstudie →
American Express använder Golang för betalningar & belöningar
Go ger American Express den snabbhet och skalbarhet som företaget behöver för både sina betalnings- och belöningsnätverk.
Se fallstudie →
Salesforce bytte ut Python mot Golang i Einstein Analytics
Salesforce förklarar varför Googles programmeringsspråk Go passar bättre än Python och C för Einstein Analytics.
Se fallstudie →
Stream – Varför vi bytte från Python till Go
Vi har ett litet utvecklingsteam på Stream som driver flöden och chatt för över 500 miljoner slutanvändare. Go:s kombination av ett bra ekosystem, enkel introduktion för nya utvecklare, snabb prestanda, solidt stöd för samtidighet och en produktiv programmeringsmiljö gör det till ett utmärkt val.
Se fallstudie →
Pydio, en lösning för molnlagring från tiden före Dropbox, förvandlades till en fullfjädrad synkroniseringsoch delningsplattform, och applikationen höll sig till den ursprungliga tekniska stapeln: LAMP, som i Linux/Apache/MySQL/PHP. Läs en artikel om motivationen för att skriva om helt och hållet i Golang, den nya arkitekturen och valen bakom den.
Se fallstudie →
Repustate migrerade API från Python (först Django och sedan Falcon) till Go
Migreringen minskade antalet EC2-instanser som krävdes med 85 % och den genomsnittliga svarstiden för en API-anropning från 100 ms till 10 ms. På grund av likheten mellan Python och Go kunde de snabbt omforma våra enhetstester som var skrivna i nose för att passa den struktur som Go kräver med några enkla sed-skript.
Se fallstudie →
Vad ska man välja?
Medan Python har förblivit en av gemenskapens favoriter och behåller andraplatsen under första kvartalet 2019 för det snabbaste programmeringsspråket på GitHub när det gäller pull requests (+17 %), är Golang inte så långt efter och ligger i hälarna på fjärde plats (+8 %). Valet mellan Golang vs Python blir ännu mer oklart. Oavsett detta finns det några saker att ta hänsyn till när du väljer vilket som kan vara rätt för dig.
-
Skalerbarhet: Golang skapades med skalbarhet i åtanke. Det kommer med inbyggd samtidighet för att hantera flera uppgifter samtidigt. Python använder samtidighet men den är inte inbyggd; den implementerar parallellism genom trådar. Detta innebär att om du ska arbeta med stora datamängder verkar Golang vara ett mer lämpligt val.
-
Prestanda: Python är inte känt för att vara minnes- eller CPU-vänligt, men med sitt stora antal bibliotek presterar Python effektivt för grundläggande utvecklingsuppgifter. Golang har inbyggda funktioner och är mer lämplig för mikrotjänsternas mjukvaruarkitekturer.
-
Användningar: Python briljerar när det används för att skriva koder för artificiell intelligens, dataanalys, djupinlärning och webbutveckling. Medan Golang har använts för systemprogrammering är det älskat av utvecklare som använder det för tillämpningar för moln- och klusterdrift.
-
Community &Bibliotek: Som tidigare nämnts ger Pythons ålder vissa fördelar. En av dem är det antal bibliotek det har och den stora gemenskap som stöder det. Golang, å andra sidan, är fortfarande ett växande språk och har inte det antal bibliotek och det gemenskapsstöd som Python kommenderar. Ändå bör vi inte räkna ut Go ännu. Dess tillväxt- och antagandehastighet är otrolig och det expanderar varje dag.
-
Exekvering: Om snabbhet är det som gäller vinner Golang med råge.
Efter att ha tagit hänsyn till allt detta kommer ditt användningsfall att vara den avgörande faktorn för vilket språk du ska välja. Med tanke på ett scenario där du sätter upp ett utvecklingsteam för att skapa mikrotjänster skulle Golang vara det rimligare valet här eftersom det både är snabbt, lätt att koda med och kan skalas utmärkt. Python är å andra sidan mer inriktat på AI, ML och dataanalys.
Så om man jämför två språk skulle Go vara bäst i de flesta fall och anses vara ett giltigt alternativ till att använda Python. Utvecklare måste välja programmeringsspråk med hänsyn till utvecklingsprojektets art och storlek samt de inblandades kompetens.
Den goda nyheten är dock att oavsett val så utvecklas båda språken ständigt. Även om Golang kan tyckas vara ett självklart val i de flesta fall, sitter Pythongemenskapen inte bara och lutar sig tillbaka och gör ingenting. Båda språken expanderar och växer. Detta innebär att vi kommer att få se mer funktionalitet och förbättringar i framtiden.
.