Från att ha varit ett nischat alternativ till C har Googles programmeringsspråk Go slagit igenom på bred front. Det visar sig till exempel genom en stark ökning på Tiobes popularitetsindex över programmeringsspråk. På ett år har Go gått från plats 50 till 16.
Framgångarna för Go beror sannolikt till stor del på att den populära containerplattformen Docker skrivits med det. Det är svårt att toppa en sådan pr-effekt. Ett kanske ännu starkare skäl är att Go är ett gediget språk, skriver IDG News.
Att Go ökar i popularitet hänger ihop med att intresset för C minskar, vilket visar sig på Tiobes lista. Eftersom Go delar många egenskaper med C, som tänkta användningsområden och till viss del syntax, kan man anta att en stor andel av de nya Goutvecklarna är före detta C-programmerare.
Så varför ska man satsa på Go eller varför ska man låta bli? Här är fördelar och nackdelar inom fem olika områden.
Läs också: Årets hetaste topplista klar – här är Sveriges 20 bästa utvecklare 2016
1. Enkelhet
Fördelar: Det skäl att satsa på Go som är enklast att förstå är just enkelhet. De som designat Go har medvetet hållit igen vad gäller bredden för funktionaliteten, eller ”scope” som man säger på engelska. En erfaren programmerare kan lära sig grunderna i Go på en kväll. Jämfört med Apples färska, och likaledes populära, språk Swift så är böckerna om Go mycket tunnare.
Enkelheten ger bonusvinster som att det är enkelt att läsa och förstå Gokod. Det är helt enkelt inte så troligt att en Goprogrammerare har använt konstruktioner som du glömt eller aldrig lärt dig. I ett team behöver man inte oroa sig att någon medlem använder konstiga konstruktioner som ingen annan förstår.
Nackdelar: Baksidan av myntet med enkelheten är förstås att Go saknar många smarta konstruktioner som programmerare gillar, till exempel sådana som finns i Swift. Ett exempel på sådan konstruktion är felhantering av typen exceptions. De som gillar en uppsjö av konstruktioner i språk känner sig kanske bakbundna med Go.
2. Automatisering
Fördelar: Det finns gott om automatisering i Go, till exempel vad gäller deklaration av variabler. Det kanske verkar vara en liten sak, men det är skönt att slippa skriva till exempel ”int” ett otal gånger. Automatisk minneshantering (garbage collection) är en annan smidig lösning.
Nackdelar: Automatisering kan vara farligt. Ett exempel är att den automatiska minneshanteringen kan sätta i gång vid olämpliga tillfällen, när en server skulle behöva reagera omedelbart. Automatisk deklaration av variabler kan ställa till det i nästlade konstruktioner.
3. Ingen virtuell maskin
Fördelar: Språk baserade på virtuella maskiner, som Java och C#, har blivit superpopulära. Den kompilerade koden kan flyttas mellan olika hårdvaruplattformar och viss säkerhet kan implementeras i den virtuella maskinen. Men det tar en del tid att starta en virtuell maskin, vilket Goprogrammerare inte behöver oroa sig för. Goprogram kompileras till körbara (exekverbara) filer och det är bara att skriva programnamnet på kommandoraden och trycka på Enter.
Det här innebär också att det är enklare att testa kod, avlusningen går snabbare. Dessutom blir distributionen av program enklare. Man slipper hålla reda på om ett program kompilerats för en viss version av språket, medan den virtuella maskinen stödjer en annan, vilket kan orsaka problem.
Nackdelar: Visst ger Go körbara binärfiler, men de blir enormt stora. Ett körbart Hello world-program blir nästan två MB stort. Det beror på att en körbar fil måste inkludera mycket funktionalitet som annars sköts av en virtuell maskin, till exempel för automatisk minneshantering.
De som vidareutvecklar Go försöker åtgärda det här. Ett exempel i version 1.7 av språket är att metoder som aldrig anropas rensas bort.
Läs också: Google och Mozilla vässar hajpade språken Go och Rust
4. Bibliotek
Fördelar: Go innehåller redan flera väldigt viktiga bibliotek för att skapa serverprogram. Det borde intressera även de mest konservativa utvecklingsavdelningar.
Nackdelar: Visst finns det en del intressanta bibliotek för Go, men de flesta andra språk ligger långt före. Java är kungen vad gäller bibliotek och alla språk som kan användas på Javaplattformen kan använda dem, som Clojure, Scala, Jruby, Kotlin och dussintals andra.
Ibland är det lockande att använda ett etablerat alternativ som erbjuder ett stort utbud av funktionalitet.
5. Go är likt C
Fördelar: Alla som migrerar från C ser Go som en uppgradering. Det har samma lågnivåkänsla som C, utan irritationsmomenten i C som framkallar huvudvärk. Automatisk minneshantering och en enklare filstruktur ger tidsbesparingar och i övrigt är det mesta i stort sett sig likt. C har varit enormt framgångsrikt, varför ändra för mycket?
Nackdelar: Massor av språk är lika C, som Java, Rust och Swift, för att inte tala om C#, C++ och Objective-C, och till och med Javascript. De här språken bjuder också på fler intressanta idéer än Go. Det krävs mer än klammerparenteser för att definiera block av kod i ett programmeringsspråk och ju fler konstruktioner du vill ha, desto fler finns det att hitta i andra språk än Go.