Internettet er fyldt med gode koder. De udgør det fundament, som forskellige infrastrukturer er bygget på. Selv selve den platform, du læser dette på, er bygget med en dedikation til at skabe gode koder. Mens den gennemsnitlige bruger ikke vil lægge mærke til dette, søger gode udviklere på den anden side altid at gøre deres applikationer (og dermed deres kodning) bedre.
Det fundament, som god kode skrives på, hviler på udviklerens færdigheder og det sprog, han/hun har valgt. Dette fører uundgåeligt til nogle episke sammenstød mellem udviklere, ikke kun på grund af deres færdighedsniveau, men især på grund af deres foretrukne sprog. Det er det resultat, man højst sandsynligt får, når man placerer to store programmeringssprog som Golang(Go) og Python side om side.
Lad os dog træde lidt tilbage og vurdere begge sprog ud fra deres fortjeneste og funktionalitet. Lad os fjerne personlige fordomme og præferencer. Og så udjævner vi spillereglerne, hvad angår færdigheder. Nu står vi kun tilbage med to gode valgmuligheder: Go vs Python. Spørgsmålet bliver nu, hvilket er det rigtige for dig?
- En Python-fortælling
- Såsom Golang(Go)
- Golang vs Python performance
- Binær søgning
- Boblesortering
- Læse fra fil
- HTTP Request handling
- Python vs Golang webframeworks
- Gin
- Echo
- Go kit
- Firksomheder, der bruger Golang
- PayPal anvender Golang til at modernisere og skalere
- American Express bruger Golang til betalinger & Rewards
- Salesforce droppede Python til fordel for Golang i Einstein Analytics
- Stream – Hvorfor vi skiftede fra Python til Go
- Pydio omskrev enterprise-ready filesharing i Golang
- Repustate migrerede API fra Python (først Django og derefter Falcon) til Go
- Hvilken skal man vælge?
- Golang er hurtigt at lære, udvikle i og køre
En Python-fortælling
Spørg nogle udviklere, og du vil høre, at der ikke var noget før Python, og der vil ikke være noget efter det. I løbet af årene har det formået at få en kultlignende tilhængerskare, fordi det er et rigtig godt programmeringssprog. Internettet er fyldt med vidundere, der er skabt ved hjælp af Python.
Python er gammelt, når man ser på programmeringsår. Det blev først konceptualiseret tilbage i 1991. Og med alderen følger visse fordele. Det har en stor tilslutning, hvilket betyder, at det er stabilt og veldokumenteret. I de fleste tilfælde vil du finde biblioteker til næsten alt og kodeeksempler til stort set alt, hvad du kan komme i tanke om. Det betyder for udviklere og virksomheder, at valget af at bruge Python kommer med et væld af erfaring og kodning, der bare venter på at blive udnyttet.
Der er masser af open source-projekter, der bruger Python som base, så i de fleste tilfælde starter du ikke helt fra bunden. Det er godt integreret i virksomhedsapplikationer og kan bruges i maskinsprog og AI-applikationer. Men det har sine ulemper. For det første er det ikke ideelt til hukommelseskrævende opgaver, det er lidt til den langsomme side til udførelser og uegnet til udvikling af mobilapplikationer.
Såsom Golang(Go)
Det blev udviklet hos Google tilbage i 2009. Go var en løsning på et problem. Formålet var at skabe et sprog, der fjernede al den bagage og de udskejelser, der findes i sprog som C++. Det giver det et ydelses- og hastighedsboost, der gør det til en fornøjelse at arbejde med det. Desuden vil de fleste udviklere, der tager Go i brug for første gang, ikke blive ladt i stikken, da de velkendte elementer og brugervenligheden vil komme som en behagelig overraskelse.
Det betyder ikke, at sproget er perfekt i alle tilfælde. Selv om det tager hastighed og elegance til det næste niveau, efterlader det dog nogle få ting, der lader tilbage at ønske. For det første har det ikke et omfattende bibliotek og heller ikke understøttelse af nedarvning. Desuden er der ikke noget GUI-bibliotek eller støtte til objektorienteret programmering. Hvad det har til gengæld er en letvægtstråd (Goroutines), et smart standardbibliotek, stærk indbygget sikkerhed og er let at kode med minimal syntaks.
Golang vs Python performance
Vi kan tale i det uendelige om fordele og ulemper ved Golang eller Python, men når det kommer til stykket, er det vi alle sammen kigger efter, hvordan de performer. Så vi lavede nogle tests på vores testrig med en Intel® Core™ i7-9700K CPU @ 3.60GHz × 8 kerner. Og den anvendte kode er tilgængelig her.
Binær søgning
Vi oprettede lister af ints (fra 1 til 100000) og brugte derefter binær søgning til at finde altid det samme tal 729. Resultaterne er:
Sprog | Speed |
---|---|
Go | 20,8 ns/op |
Python | 2442.13377 ns/op |
Boblesortering
Igen genererede vi en liste over hele tal (denne gang tilfældige tal, 10000 elementer lange) og sorterede dem ved hjælp af bobelsorteringsalgoritmer.
Sprog | Speed |
---|---|
Go | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Læse fra fil
En simpel test af læsning af “lorem ipsum”-tekstfil.
Sprog | Hastighed |
---|---|
Gå | 5305 ns/op |
Python | 58359 ns/op |
HTTP Request handling
Det er virkelig nemt at lave en HTTP-server, men vi gjorde en indsats og lavede den analoge i Python. Vi tjekkede, hvor lang tid det ville tage at svare med en simpel “hello world!”-meddelelse.
Sprog | Speed |
---|---|
Gå | 0.070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs Golang webframeworks
En af de største fordele ved at bruge Python er den store samling af biblioteker og frameworks, der er til rådighed. Django og Flask er to af de mest populære Python-webframeworks, som gør det muligt at opbygge en webapplikation eller API på den hurtigst mulige tid.
Golang har ikke et enkelt dominerende framework som Django for Python eller Laravel for PHP, og Go-fællesskabet er på en måde afvisende over for frameworks. Resultaterne af Go 2018-undersøgelsen viser, at Golang-webudvikling er det mest udbredte med 65 %, og det øgede sin dominans som det primære område, som respondenterne i undersøgelsen arbejder inden for (en stigning fra 61 % sidste år): Webudvikling har været det mest almindelige domæne for Go-udvikling siden 2016.
Her er de mest populære Golang-webframeworks:
Gin
Gin er et Golang-webframework, der er kendt for at udvikle højtydende API’er. Det er også et af de enkleste frameworks at lære. Det tager omkring 10 minutter at vænne sig til det. Hvis du har brug for ydeevne og god produktivitet, vil du elske Gin.
Funktioner
- Hurtigere ydeevne: Radix-træbaseret routing, lille hukommelsesaftryk
- Middleware-understøttelse: En indgående HTTP-anmodning kan håndteres af en kæde af middlewares og den endelige handling
- Gruppering af ruter: Organiser dine ruter bedre
- Fejlhåndtering: Gin giver en bekvem måde at indsamle alle de fejl, der opstår under en HTTP-anmodning
- Rendering indbygget: Gin giver en brugervenlig API til JSON-, XML- og HTML-rendering
- Udviderbart: Gin giver en nem API til JSON-, XML- og HTML-rendering: Echo
Echo
Echo er en højtydende, udvidelig og minimalistisk Go-webramme, der giver optimeret HTTP-router, gruppe-API’er, databinding for JSON og XML, HTTP/2-understøttelse og meget mere.
Mens Gin er lidt mere populær (36k GitHub-stjerner), vælger mange udviklere Echo (16k GitHub-stjerner), fordi det har bedre dokumentation og er en lidt hurtigere ramme.
Funktioner
- Optimeret HTTP-router, som smart prioriterer ruter
- Robust og skalerbart RESTful API, nemt organiseret i grupper
- Udvidelig middleware-ramme, mange indbyggede middlewares, middleware kan indstilles på rod-, gruppe- eller ruteniveau
- Databinding til JSON, XML og formular payload
- Handy funktioner til at sende en række HTTP-svar, herunder JSON, XML, HTML, File, Attachment, Inline, Stream eller Blob
- Afpasset central HTTP-fejlhåndtering og API, der nemt kan udvides
Go kit
Go kit er et programmeringsværktøjssæt til opbygning af mikrotjenester (eller elegante monolitter). Go Kit er en meningsskabende ramme. Det løser almindelige problemer i distribuerede systemer og applikationsarkitektur, så du kan fokusere på at levere forretningsværdi.
Funktioner
- Opfør i en heterogen SOA – forvent at interagere med for det meste ikke-Go-kit-tjenester
- RPC som det primære messaging-mønster
- Pluggable serialisering og transport – ikke kun JSON over HTTP
- Operér inden for eksisterende infrastrukturer – ingen mandater for specifikke værktøjer eller teknologier
Firksomheder, der bruger Golang
Golang er bredt anvendt af topvirksomheder. Der er over en million udviklere, der bruger Go på verdensplan – inden for bank- og handelssektoren, spil og medier, teknologi og andre brancher, i så forskellige virksomheder som PayPal, Capital One, IBM, Salesforce, Twitch, Uber, Dropbox og selvfølgelig Google.
Her er nogle eksempler på casestudier:
PayPal anvender Golang til at modernisere og skalere
Gos værdi i forhold til at producere ren, effektiv kode, der let skaleres i takt med, at softwareimplementeringen skaleres, gjorde sproget særdeles velegnet til at understøtte PayPals mål.
Se casestudie →
American Express bruger Golang til betalinger & Rewards
Go giver American Express den hastighed og skalerbarhed, de har brug for til både deres betalings- og belønningsnetværk.
Se casestudie →
Salesforce droppede Python til fordel for Golang i Einstein Analytics
Salesforce forklarer, hvorfor Googles programmeringssprog Go passer bedre end Python og C til Einstein Analytics.
Se case study →
Stream – Hvorfor vi skiftede fra Python til Go
Vi har et lille udviklingsteam hos Stream, der driver feeds og chat for over 500 millioner slutbrugere. Go’s kombination af et fantastisk økosystem, nem onboarding for nye udviklere, hurtig ydeevne, solid understøttelse af samtidighed og et produktivt programmeringsmiljø gør det til et godt valg.
Se casestudie →
Pydio omskrev enterprise-ready filesharing i Golang
Pydio, cloudlagringsløsning fra før Dropbox, blev til en fuldgyldig Sync-and-Share-platform, og applikationen holdt fast i sin oprindelige tekniske stak: LAMP, som i Linux/Apache/MySQL/PHP. Læs en artikel om motivationen for at omskrive det hele i Golang, den nye arkitektur og de valg, der ligger bag.
Se casestudie →
Repustate migrerede API fra Python (først Django og derefter Falcon) til Go
Migreringen reducerede antallet af nødvendige EC2-instanser med 85 % og den gennemsnitlige svartid for et API-opkald fra 100 ms til 10 ms. På grund af ligheden mellem Python og Go var de i stand til hurtigt at omformulere vores enhedstests skrevet i næse til at passe til den struktur, som Go kræver, med blot et par enkle sed-scripts.
Se casestudie →
Hvilken skal man vælge?
Mens Python er forblevet en af fællesskabets favoritter og bevarer i første kvartal af 2019 andenpladsen som det hurtigste programmeringssprog på GitHub med hensyn til pull requests (+17 %), er Golang ikke så langt bagefter og er lige i hælene på nummer fire (+8 %). Valget mellem Golang vs. Python bliver endnu mere sløret. Uanset hvad er der et par ting, der skal tages i betragtning, når du skal vælge, hvad der måske er det rigtige for dig.
-
Skaleringsevne: Golang blev skabt med skalerbarhed i tankerne. Den kommer med indbygget samtidighed til at håndtere flere opgaver på samme tid. Python bruger samtidighed, men det er ikke indbygget; det implementerer parallelisme gennem tråde. Det betyder, at hvis du skal arbejde med store datasæt, så synes Golang at være et mere passende valg.
-
Performance: Python er ikke kendt for at være hukommelses- eller CPU-venlig, men med sit store antal biblioteker klarer Python sig effektivt til grundlæggende udviklingsopgaver. Golang kommer med indbyggede funktioner, og det er mere egnet til microservices-softwarearkitekturer.
-
Anvendelser: Python brillerer, når det bruges til at skrive koder til kunstig intelligens, dataanalyse, dyb læring og webudvikling. Mens Golang er blevet brugt til systemprogrammering, er det elsket af udviklere, der bruger det til cloud computing- og cluster computing-applikationer.
-
Community & Bibliotek: Som tidligere nævnt giver Pythons alder det visse fordele. En af dem er antallet af biblioteker, det har, og det store fællesskab, der støtter det. Golang, på den anden side, er stadig et sprog i vækst og har ikke det antal biblioteker og den fællesskabsstøtte, som Python kommanderer. Alligevel bør vi ikke tælle Go ud endnu. Dets vækst- og adoptionshastighed er utrolig, og det udvides hver dag.
-
Udførelse: Hvis hastighed er spillets navn, så vinder Golang med en mil.
Når du tager alle disse ting i betragtning, vil dit brugsscenarie være den afgørende faktor for, hvilket sprog du skal vælge. I et scenarie, hvor du opretter et udviklingsteam til at skabe microservices, ville Golang være det mest fornuftige valg her, da det både er hurtigt, nemt at kode med og kan skalere fremragende. Python er på den anden side mere rettet mod AI, ML og dataanalyse.
Så hvis man går hoved mod hoved, ville Go komme ud som den bedste i de fleste tilfælde og anses for at være et gyldigt alternativ til at bruge Python. Udviklere skal vælge et programmeringssprog under hensyntagen til arten og størrelsen af udviklingsprojektet samt de involveredes færdigheder.
Den gode nyhed er dog, at uanset valg er begge sprog under konstant udvikling. Selv om Golang kan virke som et oplagt valg i de fleste tilfælde, sidder Python-fællesskabet ikke bare tilbage og gør ingenting. Begge sprog udvider sig og vokser. Det betyder, at vi vil se flere funktioner og forbedringer i fremtiden.