Golang

Bokrecension The Go Programming Language

Bokrecension The Go Programming Language
The Go Programming Language, av Alan A. A. Donovan och Brian Kernighan, granskas i det här inlägget. Brian Kernighan är välkänd som medförfattare till The C Programming Language, och själva den boken har tagits bort som en standardtext för generationer av ingenjörer. Go har ofta kallats 21st Century C och Go Programming Language kan mycket väl vara standardreferensen för det.

Början

Boken börjar starkt med en Handledning kapitel ger dig ett enkelt “Hello, World” -program och visar också några av fördelarna med att använda Go. Minimalismen kommer säkert att tilltala programmörer som har haft det med uppsvällda bibliotek. Du kan inte deklarera en variabel och inte använda den i resten av ditt Go-program. Du kan inte importera ett bibliotek och inte använda det i din kod. Det kommer helt enkelt inte att kompileras. Du behöver inte diskutera formatet på din kod. Till exempel den ålderdomliga striden mellan:

funk main ()

//Och
funk main ()

Avgörs av kompilatorn som endast accepterar den förra och inte den senare. Andra nyanser regleras av verktyg som gofmt som tar din Go-källfil och formaterar den på ett standardiserat sätt. Så alla Go-program följer samma konvention, vilket i sin tur förbättrar kodens läsbarhet.

Det första kapitlet betonar dessa försäljningsargument och gör ett riktigt bra jobb med att ge läsarna en smak av vad Go egentligen handlar om: Ett allmänt språk som är utformat för att skapa statiska binärer med så lite uppblåsthet som möjligt.

Korthet

Erfarna programmerare är trötta på att lära sig om samma begrepp som för loopar, if-else-uttalanden osv om och om igen för olika språk. Det första kapitlet smyger in all denna tråkiga information genom att uppmuntra användarna att skriva enkla Unix-y-program (som var fallet med C-programmeringsspråket).

En nackdel med detta snabb introduktion är det faktum att nya läsare blir helt förvirrade av syntax. Program börjar snabbt använda prickoperatorerna och olika objektorienterade programmeringskoncept efter två eller tre exempel i det allra första kapitlet. Detta är viktigt för att bibehålla hastigheten och kortheten i den totala läsupplevelsen och är ett mycket medvetet val från författarnas sida.

Boken antar också att läsarna känner till minst ett programmeringsspråk innan de plockade upp den här boken. Detta kan vara Python, JavaScript, Java, C eller något annat språk för allmänt ändamål.

Companion webbplats

Boken levereras med en medföljande webbplats. Du kan direkt importera programmen i boken från den här webbplatsen och köra den utan att behöva skriva (eller kopiera klistra in från din Kindle-app). Du kan till och med kolla in det första kapitlet (som förresten är min favorit) gratis på den här webbplatsen och bestämma om den här boken är för dig eller inte.

Författarna har uppmärksammat smärtan hos en programmerare som försöker lära sig ett nytt språk. Distraktioner minimeras med varje programs webblänk som anges ovanpå. Så du kan hämta koden, köra den, justera den och bygga på den, om du vill.

En omfattande lista med errata finns också på denna webbplats, och du kan hänvisa den om du tycker att något är fel.

Seriösa affärer

Om du förväntar dig en enkel guide för kausal skript är detta inte boken för dig. Anledningen är att mycket mark täcks först och sedan fylls detaljerna när vi går framåt mot senare kapitel.

Den här boken är för människor som vill förstå konstruktionerna, detaljerna om hur Go fungerar. Du kommer att skapa GIF-filer, skriva webbservrar och plotta Mandelbrot-uppsättningar och mycket mycket mer, men inget av det skulle vara meningsfullt om du inte har uppmärksammat de finare punkter som gjorts tidigare kapitel (med kapitel 1 är något av ett undantag, som det är tänkt som en översikt över språket).

Majoriteten av resten av boken fokuserar på olika syntaxrelaterade detaljer om Go inklusive saker som kontrollslingor, variabler, funktioner, metoder, Go-rutiner och mycket mycket mer. Allt detta illustreras genom att få läsaren att gå igenom användbara program och inte fina idealistiska scenarier.

Även om du vill hoppa över de flesta kapitel från mitten av boken föreslår jag starkt att du går igenom kapitel 5 för att förstå panik, felhantering och anonyma funktioner. Jag föreslår emellertid starkt att vi går igenom alla kapitel i tur och ordning innan vi kommer till Go-kronjuvelen - Concurrency.

Betoning på samtidighet

Go-språket är utformat, från grunden med samtidighet i åtanke. De flesta moderna processorer är multicore och multithreaded men programmerare föraktar de komplikationer de möter när de skriver program för att köra på en sådan arkitektur. Med molndatorn på väg mot distribuerade system kommer samtidig kod snart att vara den enda välpresterande koden där ute.

Kapitlet om samtidighet är skrivet för att tappa rädslan för samtidig design ur våra sinnen. Det är komplicerat, ja, men inte hopplöst. Boken gör ett bra jobb med att förmedla hur Go kan hjälpa dig att utveckla rätt tänkesätt från detta.

Slutsats

Upplevelsen av Kernighan från tidiga UNIX-dagar är fortfarande väldigt livskraftig i den moderna tidsåldern av molndatorer, GPU: er, IOT, moln och vad som kommer att följa nästa. Han och Donovan har gjort ett fantastiskt jobb med att förmedla denna visdom av applikationsdesign och UNIX-filosofi med ett enkelt, modernt språk med tanke på prestanda och jag tvekar inte att rekommendera den här boken till alla från gymnasieelever till en senior mjukvaruutvecklare med decennier av erfarenhet.

5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...
Strid om Wesnoth 1.13.6 Utveckling släppt
Strid om Wesnoth 1.13.6 släpptes förra månaden, är den sjätte utvecklingsversionen i 1.13.x-serien och den levererar ett antal förbättringar, framför ...
Så här installerar du League Of Legends på Ubuntu 14.04
Om du gillar League of Legends är det här en möjlighet för dig att testa League of Legends. Observera att LOL stöds på PlayOnLinux om du är en Linux-a...