Systemudvikling og systemer

Sådan skriver vi Go-kode

Prosabladet har talt med danske udviklere om deres erfaringer med programmeringssproget Go.

Der er ikke mange danskere, som udvikler i Go, men vi har fundet frem til to udviklere, der anvender Googles relativt nye programmeringssprog. Michael Banzon, CTO hos ABC Softwork, legede lidt med Go, kort efter at Google annoncerede sproget, men det var først i juleferien 2013, at han rigtigt begyndte at anvende Go.

ABC Softworks supply chain analytics-software anvender servicen Mailgun til at sende mails, og Michael Banzon ville prøve at anvende Mailgun fra Go. Der var imidlertid intet Mailgun-interface, som kunne anvendes fra Go, så Michael Banzon skrev et open source Go-library, der gjorde det muligt.

– Det er en god måde at lære sproget på; at have en konkret opgave, der skal løses.

Michael Banzon løste opgaven til stor tilfredshed for folkene bag Mailgun. I starten af i år overtog de videreudvikling og vedligehold af Go-library'et.

Go erstatter PHP

Michael Banzon er siden gået videre med Go, og når der skal udvikles backend-systemer hos ABC Softwork, så er Go nu førstevalg.

– Der er mange ting ved Go, som umiddelbart tiltaler os rigtigt meget. Når man har vænnet sig til syntaksen og accepteret, hvordan projekter skal organiseres, så er det hele meget nemt. Med Go får vi et rigtigt godt standard-library, statisk kompilering og en toolchain, der virker både på Windows, OS X og Linux.

Førhen foregik ABC Softworks backend-programmering i PHP, men udviklingsprocessen, og ikke mindst udrulning af Go-kode, er nemmere.

– Hvis vi skal deploy'e vores gamle PHP-programmer til en server, kræver det, at Apache er installeret, der skal installeres nogle særlige moduler til Apache, og derudover skal der installeres extensions til PHP. Med Go kompilerer vi og shipper den binære fil ud på en maskine. Opsætningen af infrastruktur er enklere, mener Michael Banzon.

Mere elegant kode

Det er især den enkle udviklingsprocess og tilhørende simple deployment, som passer godt i ABC Softworks arkitektur, men Michael Banzon fremhæver også selve Go-sproget.

– Vores PHP-kode består ofte af meget lange linjer, der kan være svære at forstå, mens Go-koden er forholdsvist kortere og nemmere at forstå. Selve sproget og syntaksen hjælper meget.

Det er noget, som freelance-programmøren Elias Naur kan tilslutte sig. Han er i gang med at udvikle en webshop-backend i Go og har udviklet patches til Go, der gør det muligt at skrive shared libraries i Go til Android-platformen (se boks ”Go til app-udvikling?”).

– For nogle år siden var Java mit yndlingssprog: Typesikkert, hukommelsessikkert og nogenlunde hurtigt. Jeg blev dog træt af Javas verbosity, så jeg skiftede til Python en overgang. Go er for mig den hellige gral: Typestærkt som Java, (på det nærmeste) letvægt som Python, og så er der smidt nogle lækkerier oveni (composition, concurrency og ordentlig understøttelse af UTF-8 er bare nogle få af dem).

Enkle værktøjsvalg

Når det kommer til værktøjsvalg, har Michael Banzon og ABC Softwork valgt et simpelt setup.
Til selve kodningen anvendes editoren SublimeText med et Go-plugin, som fremhæver Go-keywords. Der findes et decideret Eclipse-IDE, Goclipse, der giver features som integreret compilering og debugging, men også en større værktøjskompleksitet.

– Jeg har tidligere installeret Goclipse, men Go-toolset'et er så letvægt, at det er åndssvagt at anvende Eclipse, mener Michael Banzon.

Der findes en officiel Go-debugger i form af gdb, som blandt andet er integreret i IDE'er som Eclipse,  LiteIDE og Zeus. En af Go-udviklerne, Rob Pike, erkendte dog i marts i år, at ”gdb-support for Go er dårlig og vil formentlig ikke blive væsentligt forbedret.” Michael Banzon følger med på Go-folkenes mail-liste om debugger-emnet og andre Go-relaterede emner, men er indtil videre tilfreds med mulighederne for at debugge ved at skrive til log-filer.

– Man kommer langt med print-statements med variabel-indhold.