De voor- en nadelen van Go op een rij

April 23, 2018

Go is de programmeertaal van Google. De taal is het stadium 'newbie' voorbij en wordt gebruikt door enkele grote bedrijven. Toch is de taal nog niet mainstream. Hoe zit dat?

Software-engineer Mark Freriks sprak over Go tijdens de Tosti Talk en Techday op 29 maart. Rutger van Loo (marketeer) heeft hem geïnterviewd en op basis daarvan deze blog geschreven. 

3 Voordelen van Go

1 Ongecompliceerd

Go heeft een ongecompliceerde syntax. Bij een taal als Scala is de syntax zo complex dat je één regel code op zeker vijf manieren kunt schrijven. Neem een handvol programmeurs en ze schrijven waarschijnlijk allemaal de code op een andere manier. Daardoor wordt het voor hen lastiger om elkaars code te lezen. En dat is juist de kracht van Go: je ziet in één oogopslag wat een andere programmeur doet. Jouw code is dus heel goed leesbaar en dat heeft voordelen:

  • Jouw collega's halen makkelijker bugs uit jouw code.
  • Jij kan de code van een collega sneller begrijpen. 
  • Het maakt het eenvoudiger om de taal te leren. Je kunt bijvoorbeeld in de standaard-library door klikken naar de source-code en je afvragen "hoe hebben zij dit gedaan?" Ook kun je kijken naar open-source-projecten. Omdat de code van Go overal sterk op elkaar lijkt, is dat goed te doen. 

2 Goed voor CLI-tooling 

Go is heel sterk in CLI-tooling. Er zijn namelijk geen externe dependencies nodig. Dit komt doordat de binary static compiled is voor het OS waar jouw systeem op draait. Bij Java (en enkele andere talen) moet bijvoorbeeld de JVM (Java Virtual Machine) geïnstalleerd zijn. Doordat er geen dependencies zijn, kan je een applicatie distribueren enkel door het versturen van de binary. Deze binary kan cross-compiled worden, wat betekent dat je vanaf elk willekeurig OS voor een ander OS kan compilen. Daarnaast is een Go CLI-applicatie klein en is over het algemeen de memory overhead veel lager dan bij bijvoorbeeld Java.

3 IJzersterk voor microservices en de cloud

Go is bij uitstek geschikt voor microservices en de back-ends van cloud-native-webapplicaties. Dit komt doordat de Go standaard-library hier heel sterk in is. Ook hier speelt het "lightweight" zijn van de Go applicatie weer een grote rol. Hierdoor is het goed mogelijk om echt kleine microservices te bouwen.

3 Nadelen van Go

Dropbox en Uber maken al gebruik van Go en als je deze voordelen leest, lijkt Go haast een perfecte taal. Hoog tijd voor wat nuance, want hoe mooi Go ook is, we schakelen er niet massaal op over. Waarom niet?

1 Ombouwen van bestaande applicaties is niet te doen

Bij Avisi is er heel veel Java-kennis in huis. Wij gebruiken Java-library's en die kun je niet zomaar herschrijven. Ook is het lastig om een Java-applicatie om te schrijven naar Go. Zeker als je veel externe library's hebt. Voor bestaande applicaties is Go dus een stuk minder aantrekkelijk. Je zult namelijk de applicatie volledig moeten herschrijven. 

2 Go-programmeurs zijn schaars

Programmeurs met ervaring in Go zijn echt een speld in de hooiberg. Dat is al lastig als je er één zoekt, maar als je een heel Go-ontwikkelteam samen wil stellen, is dat een ware Mission Impossible. Je kunt dus beter zelf Go-programmeurs opleiden. Gelukkig is de taal snel te leren. Tijdens de Avisi-Techday hebben Java-programmeurs (die nog nooit met Go gewerkt hadden) in 2 uur tijd een CLI-tool gebouwd. En het zag er meteen goed uit! 

3 Veel regels code

Als je in Go programmeert, moet je meer regels code schrijven voor hetzelfde effect. Dat leest makkelijker, maar maakt ook dat het schrijven omslachtiger voelt. En er zijn programmeurs die het jammer vinden dat de taal zo ongecompliceerd is. Jouw code heeft minder snel een wauw-effect. Want of je nu heel ervaren in Go bent of niet, qua code zit je heel snel op hetzelfde niveau. 

Wil je ook een keer een Techday bijwonen? Kijk op onze Meetup-pagina voor de eerstvolgende Techday.

Rutger van Loo

Marketeer bij Avisi

Office Arnhem

Nieuwe Stationsstraat 10

6811 KS Arnhem

The Netherlands

Office Nieuwegein

Nevelgaarde 40

3436 ZZ Nieuwegein

The Netherlands

BTW-nummer: NL8124.03.617.B01 - KVK-nummer: 09136942 - Privacy - ISO 27001