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

2 kommentarer.  Hop til debatten
JAOO: Det er på tide at komme tættere på metallet og få noget mere ydelse, mener Google, som med sproget Go vil gøre det nemmere at skrive distribuerede programmer som giver smæk for skillingen.
6. oktober 2010 kl. 08:12
errorÆldre end 30 dage

Google har sat sit eget sprog i verden. Det hedder Go og hjælper søgegiganten med at udnytte maskinparken optimalt.

Inspirationen bag Go er de C-agtige sprog samt parallelismeorienterede forskningssprog, som Gos bagmand Rob Pike tidligere har arbejdet med. Tirsdag præsenterede han sproget for publikum på åres JAOO-konference.

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,« forklarede han forsamlingen.

Artiklen fortsætter efter annoncen

Når man dykker længere ned i sproget, forsvinder indtrykket af Java og C nemlig, mener Rob Pike, der ikke forestiller sig, at Go skal ud og erobre hele verden lige med det første.

»Jeg er ikke sikker på, at verden har brug for et nyt programmeringssprog, men Google har brug for det til vores arbejde.«

Google spænder compilere hårdt

Sproget var skrevet til Googles behov, men viste sig at være et sprog til alle anvendelser, mener Rob Pike. Han kan ikke fortælle, hvad Google anvender Go til internt, da det er omgivet af det sædvanlige hemmelighedkræmmeri, der præger søgegiganten.

»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.«

En anden ting er, at det miljø, som software afvikles i, har ændret sig. Der er meget mere netværkskommunikation, og flerkernemaskiner er kommet på gaden, men C og C++ har ikke adresseret ændringen af hardware i det sidste tiår, mener Rob Pike.

Skal helt tæt på metallet

Derfor besluttede Google, at det var på tide at bygge softwaren hurtigere, for den hardware der findes i dag, da der syntes ikke at være et sprog, der passede til firmaets behov.

Google kan heller ikke bruge mere moderne sprog som Java eller Scala, da den virtuelle maskine tager en vis del af ydelsen, og for Google handler det om at presse citronen til sidste dråbe. Det er vigtigt for Google at være helt tæt på 'metallet.'

Rob Pike mener, at Go tager skridt både frem og tilbage. På den ene side benytter den C-agtige 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 af gangen, ved at sende pointeren i en kanal til formålet. Derudover benytter sproget garbage collection, så man slipper for destructors som i C++.

Ligesom Scala og Clojure har Go et bud på, hvordan parallelisme kan klares, mener Rob Pike. Sproget bryder også med, hvad han 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 typehierakiet. Man kan finde en types rigtige form, mens man skriver programmmet, 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.«

Go kan også byde på værktøjer, blandt andet i form af plugins til Eclipse og Intellij.

2 kommentarer.  Hop til debatten
Debatten
Log ind for at deltage i debatten.
settingsDebatindstillinger
1
6. oktober 2010 kl. 09:04

Jeg har brugt det en lille smule og kan godt li det. Den bedste hjælp for at komme igang er at studere koden til det medfølgende library. Har selv blogget lidt om hvordan man implementerer arv på min nystartede bittrips blog.

http://bittrips.blogspot.com/

Mvh fra Skåne. /björn

2
7. oktober 2010 kl. 09:50

Jeg har kigget på http://golang.org/ og jeg synes det virker som et rigtigt fint sprog.

Der er en række utraditionelle, sjove og anderledes ting ved sproget, såsom nul ;-er, obligatoriske blok-parenteser { } i if-sætninger og den evendelige diskussion om formattering er afsluttet med at .... maskinen bestemmer! (nærmere bestemt programmet 'gofmt').

Se mere på http://golang.org/doc/effective_go.html