Hvorfor Go?
Vi skal gjøre en god del programmering i programmeringsspårket Go. Hvorfor har vi valg Go?
Våre læringsmål dreier seg om å forstå hvordan en datamaskin funksjonerer. En av grunnleggende egenskaper til en datamaskin er at den kan programmeres. Det er kun gjennom å utføre programmer, at vi kan utnytte, teste og forstå alle de mulighetene som ligger i maskinvaren. I dette emne skal vi ikke lære å bruke spesifikke programmer (som en teksteditor, en nettleser eller et regnskapssystem), men heller lære om hvordan kan man lage programmer, som utnytter maskinvaren på en best mulig måte. Vi skal også lære om hvordan vi kan teste hvor effektive (eventuelt ineffektive) våre programmer er. Programmeringsspråket Go kan hjelpe oss med det fordi at:
- Det er en bred oppslutning om at Go er enkelt å lære (!ta med en klype salt).
- Programmer i Go kompileres før de utføres. Kompilator i Go er et meget avansert program, som kan skape en kode, som kan utnytte platformegenskapene* optimalt. For eksempel, man kan skrive et program i Go og kompilere det samme programmet slik at den kan utføres blant annet på MacOS, MS Windows og Linux operativsystemer på skriverbordsdatamaskiner (inkluder de bærbare) Go har også verktøy for å kompilere programmene til iOS og Android operativsystemer for smarttelefoner. Siden kompilator optimaliserer koden, utføres koden raskere enn, for eksempel, i Python, som er fortolket språk. Funksjoner (høyere-nivå), som Go programmeringsmiljøet tilbyr en programmerer, gjør Go egnet for å illustrere mange viktige aspekter ved operativsystemer og nettverk.
- I moderne datamaskiner (2023) utføres mange prosesser samtidig. Go har en innebygd støtte for å skape mange lettvektsprosesser, som gir mulighet til å optimalt utnytte systemets ressurser og også potensielt utnytte systemer med flere prosessorer eller kjerner. Det gir også mulighet til å gjøre "samtidige" forespørsler nettverksressurser uten å vente på svar fra en kilde, før man gjør forespørsel til andre kilder.
- Go har et statisk typesystem, som gjør at eventuelle feil kan oppdages under kompilering (i motsetning til JavaScript, som tillater stor frihet i bruken av typer, som dere erfarte i IS-114).
- Go har et stort standardbibliotet.
- Go er "open source" (BSD 3-Clause "New" or "Revised" License) med fritt tilgjengelig kildekode og har et stort felleskap av utviklere og brukere (nesten 2000 aktive bidragsytere).
- Kasnkje du kan legge til flere grunner i slutten av semesteret?
- * vi bruker platform her som et begrep for en kombinasjon av operativsystem og maskinvarearkitektur (Intels x86, Acorn Computer sin ARM (Advanced RISC Machine), RISC V)
Se et intervju med et av designere av Go, Rob Pike.