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.