Het internet staat vol met geweldige codes. Ze vormen het fundament waarop verschillende infrastructuren zijn gebouwd. Zelfs het platform waarop u dit leest, is gebouwd met een toewijding aan het maken van goede codes. Terwijl de gemiddelde gebruiker hier geen notie van zal nemen, zijn goede ontwikkelaars, aan de andere kant, altijd op zoek om hun applicaties (en dus hun codering) beter te maken.
Het fundament waarop geweldige code wordt geschreven, berust op de vaardigheid van de ontwikkelaar en zijn/haar taalkeuze. Dit leidt onvermijdelijk tot een aantal epische botsingen tussen ontwikkelaars niet alleen op vaardigheidsniveau, maar vooral op hun voorkeurstaal. Dit is het resultaat dat je waarschijnlijk zult krijgen wanneer je twee grote programmeertalen zoals Golang(Go) en Python naast elkaar zet.
Hoewel, laten we een stap terug doen en beide talen evalueren vanuit het punt van verdienste en functionaliteit. Laten we persoonlijke vooroordelen en voorkeuren wegnemen. Maak dan het speelveld gelijk, qua vaardigheden. Alles wat we nu overhouden zijn twee geweldige keuzes: Go vs Python. De vraag is nu, wat is de juiste keuze voor jou?
- Een Python’s verhaal
- Over Golang(Go)
- Golang vs Python performance
- Binary search
- Bubble sort
- Lezen uit bestand
- HTTP Request handling
- Python vs Golang web frameworks
- Gin
- Echo
- Go kit
- Bedrijven die Golang gebruiken
- PayPal Taps Golang to Modernize and Scale
- American Express gebruikt Golang voor betalingen & beloningen
- Salesforce heeft Python gedumpt voor Golang in Einstein Analytics
- Stream – Waarom we zijn overgestapt van Python naar Go
- Pydio herschreef enterprise-ready filesharing in Golang
- Repustate migreerde API van Python (eerst Django toen Falcon) naar Go
- What te kiezen?
- Golang is snel te leren, te ontwikkelen en te draaien
Een Python’s verhaal
Vraag het een paar ontwikkelaars en je zult horen dat er niets was vóór Python en dat er ook niets na Python zal komen. In de loop der jaren is het erin geslaagd een cult-achtige aanhang te verwerven omdat het een zeer goede programmeertaal is. Het internet staat vol met wonderen gemaakt met Python.
Python is oud, in termen van programmeer jaren. Het werd voor het eerst geconceptualiseerd in 1991. En met leeftijd komt bepaalde voordelen. Het heeft een brede aanhang, wat betekent dat het stabiel is en goed gedocumenteerd. In de meeste gevallen vind je bibliotheken voor bijna alles en code voorbeelden voor zo ongeveer alles wat je maar kunt bedenken. Wat dit betekent voor devs en bedrijven is dat de keuze voor het gebruik van Python een schat aan ervaring en codering met zich meebrengt die gewoon wacht om te worden benaderd.
Er zijn tal van open-source projecten die Python als basis gebruiken, dus in de meeste gevallen begint u niet vanaf nul. Het is goed geïntegreerd in bedrijfstoepassingen en kan worden gebruikt in machinetaal en AI-toepassingen. Maar het heeft ook zijn nadelen. Zo is het niet ideaal voor geheugenintensieve taken, een beetje aan de trage kant voor executies en ongeschikt voor de ontwikkeling van mobiele applicaties.
Over Golang(Go)
Ontwikkeld bij Google in 2009. Go was een oplossing voor een probleem. Het doel was om een taal te maken die alle bagage en excessen wegnam die in talen als C++ te vinden waren. Dit geeft het een prestatie- en snelheidsboost die het werken ermee tot een genot maakt. Bovendien zullen de meeste ontwikkelaars die Go voor het eerst oppikken niet in de steek gelaten worden, omdat de bekende elementen en het gebruiksgemak als een aangename verrassing komen.
Dat wil niet zeggen dat de taal in alle gevallen perfect is. Terwijl het snelheid en elegantie naar het volgende niveau brengt, laat het echter een paar dingen te wensen over. Ten eerste heeft het geen uitgebreide bibliotheek, noch ondersteuning voor overerving. Bovendien is er geen GUI bibliotheek of ondersteuning voor object-georiënteerd programmeren. Wat het wel heeft is een lichtgewicht thread (Goroutines), slimme standaard bibliotheek, sterke ingebouwde beveiliging en is makkelijk te coderen met minimale syntax.
Golang vs Python performance
We kunnen eindeloos praten over de voors en tegens van Golang of Python maar als het er op aan komt, waar we allemaal naar kijken is hoe ze presteren. Dus hebben we wat tests gedaan op onze testopstelling met een Intel® Core™ i7-9700K CPU @ 3.60GHz × 8 cores. En de gebruikte code is hier beschikbaar.
Binary search
We maakten lijsten van ints (van 1 tot 100000) en gebruikten dan binary search om steeds hetzelfde nummer 729 te vinden. De resultaten zijn:
Taal | Snelheid |
---|---|
Go | 20.8 ns/op |
Python | 2442.13377 ns/op |
Bubble sort
Opnieuw hebben we een lijst van gehele getallen gegenereerd (deze keer willekeurige, 10000 elementen lang) en deze gesorteerd met behulp van bubble sort algoritmen.
Taal | Snelheid |
---|---|
Go | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Lezen uit bestand
Een eenvoudige test van het lezen van “lorem ipsum” tekstbestand.
Taal | Snelheid |
---|---|
Go | 5305 ns/op |
Python | 58359 ns/op |
HTTP Request handling
Het maken van een HTTP-server is echt eenvoudig, maar we hebben een poging gewaagd en de analoge in Python gedaan. We hebben gekeken hoe lang het zou duren om te antwoorden met een simpel “hello world!” bericht.
Taal | Snelheid |
---|---|
Go | 0.070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs Golang web frameworks
Een van de grootste voordelen van het gebruik van Python is de enorme verzameling bibliotheken en frameworks die beschikbaar zijn. Django en Flask zijn twee van de meest populaire Python-webframeworks waarmee u in de snelst mogelijke tijd een webapplicatie of API kunt bouwen.
Golang heeft niet één dominant framework zoals Django voor Python of Laravel voor PHP en Go-gemeenschap is op een bepaalde manier wars van frameworks. Go 2018 Survey Results tonen aan dat Golang webontwikkeling het meest voorkomt op 65%, en het verhoogde zijn dominantie als het primaire gebied waarin respondenten van de enquête werken (omhoog van 61% vorig jaar): webontwikkeling is het meest voorkomende domein voor Go-ontwikkeling sinds 2016.
Hier de meest populaire Golang webframeworks:
Gin
Gin is een Golang webframework dat bekend staat om het ontwikkelen van goed presterende API’s. Het is ook een van de eenvoudigste frameworks om te leren. Het duurt ongeveer 10 minuten om er aan te wennen. Als u prestaties en een goede productiviteit nodig heeft, zult u van Gin houden.
Features
- Snellere prestaties: Radix tree gebaseerde routing, klein geheugengebruik
- Middleware ondersteuning: Een inkomend HTTP verzoek kan worden afgehandeld door een keten van middlewares en de uiteindelijke actie
- Routes groeperen: Organiseer uw routes beter
- Foutenbeheer: Gin biedt een handige manier om alle fouten te verzamelen die tijdens een HTTP-verzoek zijn opgetreden
- Rendering ingebouwd: Gin biedt een eenvoudig te gebruiken API voor JSON-, XML- en HTML-rendering
- Uitbreidbaar: Het maken van een nieuwe middleware is zo eenvoudig, kijk maar naar de voorbeeldcodes
Echo
Echo is een high performance, uitbreidbaar, en minimalistisch Go web framework dat geoptimaliseerde HTTP router, groep API’s, data binding voor JSON en XML, HTTP/2 ondersteuning, en nog veel meer biedt.
Hoewel Gin iets populairder is (36k GitHub sterren), kiezen veel ontwikkelaars voor de Echo (16k GitHub sterren) omdat het betere documentatie heeft en een iets sneller framework is.
Features
- Geoptimaliseerde HTTP router die routes slim prioriteert
- Robuuste en schaalbare RESTful API, eenvoudig in groepen te organiseren
- Extensibel middleware framework, veel ingebouwde middleware, middleware kan op root, groep of route niveau worden ingesteld
- Data binding voor JSON, XML en form payload
- Handige functies om een verscheidenheid aan HTTP responses te versturen, waaronder JSON, XML, HTML, File, Attachment, Inline, Stream of Blob
- Aangepaste centrale HTTP error handling en eenvoudig uitbreidbare API
Go kit
Go kit is een programmeer toolkit voor het bouwen van microservices (of elegante monolieten). Go Kit is een opiniërend raamwerk. Het lost veelvoorkomende problemen in gedistribueerde systemen en applicatiearchitectuur op, zodat u zich kunt richten op het leveren van zakelijke waarde.
Features
- Werk in een heterogene SOA – verwacht interactie te hebben met veelal niet-Go-kit services
- RPC als het primaire messaging patroon
- Pluggable serialisatie en transport – niet alleen JSON over HTTP
- Opereren binnen bestaande infrastructuren – geen mandaten voor specifieke tools of technologieën
Bedrijven die Golang gebruiken
Golang wordt op grote schaal gebruikt door topbedrijven. Er zijn meer dan een miljoen ontwikkelaars die Go wereldwijd gebruiken – in het bankwezen en de handel, gaming en media, technologie, en andere industrieën, bij bedrijven zo divers als PayPal, Capital One, IBM, Salesforce, Twitch, Uber, Dropbox, en natuurlijk Google.
Hier zijn enkele voorbeeld case studies:
PayPal Taps Golang to Modernize and Scale
Go’s waarde in het produceren van schone, efficiënte code die gemakkelijk schaalt als software inzet schaalt maakte de taal een sterke pasvorm om de doelen van PayPal te ondersteunen.
Bekijk case study →
American Express gebruikt Golang voor betalingen & beloningen
Go biedt American Express de snelheid en schaalbaarheid die het nodig heeft voor zowel zijn betalings- als beloningsnetwerken.
Bekijk case study →
Salesforce heeft Python gedumpt voor Golang in Einstein Analytics
Salesforce legt uit waarom Google’s Go programmeertaal beter past dan Python en C voor Einstein Analytics.
Bekijk case study →
Stream – Waarom we zijn overgestapt van Python naar Go
We hebben een klein ontwikkelteam bij Stream dat feeds en chat aandrijft voor meer dan 500 miljoen eindgebruikers. Go’s combinatie van een geweldig ecosysteem, eenvoudige onboarding voor nieuwe ontwikkelaars, snelle prestaties, solide ondersteuning voor concurrency en een productieve programmeeromgeving maken het een geweldige keuze.
View case study →
Pydio herschreef enterprise-ready filesharing in Golang
Pydio, cloudopslagoplossing van vóór Dropbox, werd een volwaardig Sync-and-Share-platform en de applicatie hield vast aan zijn oorspronkelijke technische stack: LAMP, zoals in Linux/Apache/MySQL/PHP. Lees een artikel over de beweegredenen om volledig in Golang te herschrijven, de nieuwe architectuur en de keuzes daarachter.
Bekijk case study →
Repustate migreerde API van Python (eerst Django toen Falcon) naar Go
De migratie verminderde het aantal benodigde EC2-instanties met 85% en de gemiddelde responstijd van een API-aanroep van 100ms naar 10ms. Door de gelijkenis tussen Python en Go, waren ze in staat om snel onze unit tests geschreven in neus om te zetten naar de structuur die Go vereist met slechts een paar eenvoudige sed scripts.
View case study →
What te kiezen?
Terwijl Python een favoriet van de gemeenschap is gebleven, behoudt het de #2 plek in het eerste kwartaal van 2019 voor de snelste programmeertaal op GitHub in termen van pull requests (+17%), Golang zit daar niet zo ver achter en zit het op de hielen op #4 (+8%). De keuze tussen Golang vs Python wordt nog waziger. Hoe dan ook, er zijn een paar dingen die je in overweging moet nemen bij het maken van de keuze die het best bij je past.
-
Kalibaarheid: Golang is gemaakt met schaalbaarheid in het achterhoofd. Het wordt geleverd met ingebouwde concurrency om meerdere taken tegelijk uit te voeren. Python gebruikt concurrency, maar het is niet ingebouwd; het implementeert parallellisme door middel van threads. Dit betekent dat als je met grote datasets gaat werken, Golang een geschiktere keuze lijkt.
-
Prestaties: Python staat er niet om bekend geheugen- of CPU-vriendelijk te zijn, maar met zijn enorme aantal bibliotheken presteert Python efficiënt voor basale ontwikkelingstaken. Golang wordt geleverd met ingebouwde functies en is meer geschikt voor microservicesoftwarearchitecturen.
-
Toepassingen: Python schittert wanneer het wordt gebruikt om codes te schrijven voor kunstmatige intelligentie, data-analyse, deep learning en webontwikkeling. Terwijl Golang is gebruikt voor systeemprogrammering, is het geliefd bij ontwikkelaars die het gebruiken voor cloud computing en cluster computing-toepassingen.
-
Community & Bibliotheek: Zoals eerder vermeld, biedt de ouderdom van Python bepaalde voordelen. Een daarvan is het aantal bibliotheken dat het heeft en de grote gemeenschap die het ondersteunt. Golang, aan de andere kant, is nog steeds een groeiende taal en heeft niet het aantal bibliotheken en de steun van de gemeenschap die Python beveelt. Toch moeten we Go nog niet uitsluiten. Het groeitempo en de adoptie zijn ongelofelijk en het wordt elke dag groter.
-
Uitvoering: Als het om snelheid gaat, dan wint Golang met afstand.
Na al deze zaken in overweging te hebben genomen, zal uw gebruikssituatie de doorslaggevende factor zijn bij de keuze van de taal. In een scenario waarin je een ontwikkelteam opzet om microservices te maken, zou Golang de redelijkere keuze zijn, omdat het zowel snel als eenvoudig is om mee te coderen en uitstekend kan worden geschaald. Python, aan de andere kant, is meer gericht op AI, ML en data-analyse.
Dus gaan head to head, Go zou in de meeste gevallen aan de top komen en wordt beschouwd als een geldig alternatief voor het gebruik van Python. Ontwikkelaars moeten een programmeertaal kiezen rekening houdend met de aard en de grootte van het ontwikkelingsproject, evenals de vaardigheden van de betrokkenen.
Het goede nieuws is echter dat, ongeacht de keuze, beide talen voortdurend in ontwikkeling zijn. Hoewel Golang in de meeste gevallen een voor de hand liggende keuze lijkt, leunt de Python-gemeenschap niet achterover en doet niets. Beide talen zijn aan het uitbreiden en groeien. Dit betekent dat we in de toekomst meer functionaliteit en verbeteringen zullen zien.