Programmeringssproget Go fylder 10 år

Rob Pike Illustration: Kevin Shockey
Sproget, der kombinerer sikre pointers med garbage collection, har i dag en million brugere, siger Google.

I søndags fyldte programmeringssproget Go 10 år.

Inspirationen bag Go er var de C-agtige sprog, samt parallelismeorienterede forskningssprog, som Gos bagmand Rob Pike fortalte til Version2 i 2010, da sproget endnu var en baby.

I sin ungdom arbejde Rob Pike sammen med notabiliteter som Brian Kernighan og Ken Thompson, der opfandt C og Unix, og dermed ændrede it-verden.

Rob Pike har været med i udviklingen af det eksperimentelle styresystem Plan 9, der udviklede videre på ideerne i Unix. Det slog ikke bredt an, men hos Google designede han Go, der umiddelbart var rettet mod firmaets behov på serversiden.

Med et overfladisk blik kan Go se ganske velkendt ud.

»For små programmer ligner det C og Java, men større programmer ser helt anderledes ud,« fortalte han på en konference i Aarhus i 2010, hvor Version2 interviewede ham efterfølgende.

Læs også: Her er Googles multikerne-sprog: Helt tæt på metallet

Når man dykker længere ned i sproget, forsvinder indtrykket af Java og C nemlig, sagde Rob Pike dengang.

Go udvikles løbende, og for nylig fik sproget typeparametre.

Læs også: Kontrakter er på vej til Googles Go-sprog

I dag har sproget en million brugere, skriver Google i et blog-indlæg.

Sproget var som udgangspunkt skrevet til Googles behov, men viste sig at være et sprog til alle anvendelser, ifølge Rob Pike.

»Den storskala-serversoftware, som vi skriver på Google, er meget svært af en række årsager. En af årsagerne er, at programmerne tager lang tid at kompilere, fordi håndteringen af afhængigheder i C-agtige sprog bevirker, at compileren skal arbejde alt for hårdt. Den skal læse filer mange gange. Det kan være eksponentielt meget langsommere, end det behøver at være.«

Go benytter C-agtige og måske lidt gammeldags mekanismer som delte buffere og pointere. Men Gos pointere er helt sikre, fremhæver han, og Gos parallelisme-faciliteter sørger for, at pointere til delt hukommelse kun kendes af en proces ad gangen, ved at sende pointeren i en kanal til formålet. Derudover benytter sproget garbage collection, så man slipper for destructors som i C++.

Sproget bryder også med, hvad Rob Pike kalder for 'type-centrering' i Java og C++. Go benytter statiske typer, men sprogets interface-model har en »dynamisk feel,« som Rob Pike udtrykker det.

»Som et resultat af det designer man ikke programmet ved at starte med type-hierarkiet. Man kan finde en types rigtige form, mens man skriver programmet, så man slipper for at skulle refaktorere. På en måde er det et skridt tilbage, i forhold til den måde folk tænker på det, men det er et skridt fremad målt i dets udtryks- og tilpasningsevne.«

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (0)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere