Go (často také označovaný jako Golang) je kompilovaný paradigmatický programovací jazyk, který byl vytvořený ve společnosti Google Inc. v roce 2007. Původními autory jsou Robert Griesemer, Rob Pike a Ken Thompson. Spadá do statických typovaných jazyků se syntaxí odvozenou z jazyka C. Vychází z jazyka Oberon. Souběžnost procesů přebírá z Newsqueaku. Cílem jazyka bylo poučit se z chyb minulosti a předvídat problémy budoucnosti.
Jazyk nabízí záruku typové bezpečnosti, na druhou stranu obsahuje i vlastnosti, které jsou typické pro dynamicky typované jazyky. Veřejně byl jazyk představen v listopadu roku 2009, první stabilní release se datuje do roku 2011. Go je open-sourcový jazyk, který využívá mnoho společností, jako je například Dropbox, SoundCloud, CloudFlare, Docker a samozřejmě Google.
Typické prvky jazyka Go
Deklarace a inicializace proměnných je stručná
Rychlá kompilace
Souběžnost procesů je řešena přímo na úrovni jazyka
Implicitní implementace rozhraní
Použití embeddingu místo dědičnosti
Staticky linkované programy bez dalších závislostí
Absence dědičnosti, přetěžování metod a operátorů, kruhových závislostí mezi balíčky, aritmetiky ukazatelů, generického programování nebo implicitního přetypování
Výhody použití jazyka Go
Rychlost. Programy jsou v něm rychle napsány, kompilace je velmi rychlá a programy v Go je možné editovat a spouštět přímo na webu. Kompilace probíhá přímo do strojového kódu, je možné kompilovat do Windows, Androidu, Linuxu i dalších operačních systémů.
Automatická správa paměti. Skript garbage collector vyhledává a uvolňuje úseky paměti, které již program nebo proces nepoužívá. Tím klade menší důraz na vývojáře, aby spravoval paměť.
Vestavěná souběžnost procesů. Díky vestavěné souběžnosti procesů je paralelní zpracování je jednodušší než v jiných jazycích.
Dokumentace. Dokumentace kódu je standardní vlastností jazyka. Díky tomu je pro vývojáře jednodušší, aby dokumentoval svůj kód a generoval pro člověka dobře čitelné informace ze zdrojových komentářů kódu.
Bohatá knihovna. Standardní knihovna zahrnuje mnoho oblastí. Go je pravděpodobně jediným jazykem, který má jako součást standardní knihovny plně funkční webový server.
Elegantní a jednoduchý build systém. Není potřeba se zaobírat build konfigurací nebo makefily.
Snadno se učí. Je velmi podobný jiným programovacím jazykům a má snadno čitelnou dokumentaci.
Vestavěný testovací nástroj. Vestavěný testovací nástroj napomáhá vývojářům s kvalitou kódu. Pomocí jednoduchého API mohou zkoušet spustitelné části kódu a to i paralelně.
Nevýhody jazyka Go
Relativně mladý jazyk. Některé knihovny chybí, a proto si je vývojáři musí naprogramovat sami. Je méně dostupných kurzů a knih, které se jazykem zabývají.
Jednoduchost. Go je tak jednoduchým jazykem, až se může jevit příliš povrchním. Ve snaze o maximální jednoduchost se jazyk zbavil vývojových prvků, které vycházejí z desetiletí zkušeností programátorů.
Obtížné řešení chyb. Správa chyb je složitá, každou funkci je potřeba kontrolovat na chyby explicitně.
Bezpečnost. Bezpečnost provozu je horší nežli například u Rustu.
Absence manuální správy paměti. Nevýhodou použití garbage collectoru je nemožnost manuální správy paměti.
Shrnutí
Go je jazyk, který se hodí pro využití v novém projektu, který vyžaduje jednoduchost a velký výkon. Umožňuje jednoduchou implementaci paralelního zpracování, které je rychlejší ve srovnání například s Ruby on Rail nebo Pythonem.