Haipovaný jazyk, no len na špeciálne použitie. (Blog je písaný k verzii Go 1.10 a hodnotí defaultný jazyk a kompilátor.)
Výhody:
Nevýhody:
Od C++11 považujem C++ za modrený jazyk, ktorému nechýbajú veci ako lambdy, funkcie vyššieho rádu, immutable, polymorfizmus… Plus má vďaka Opem MP priamo v jazyku podporu paralelizácie.
Z neparalného programu:
#include <cmath> int main(int argc, char *argv[]) { const int size = 256; double sinTable[size]; for(int n=0; n < size; ++n) sinTable[n] = std::sin(2 * M_PI * n / size); // the table is now initialized }
Na paralelný:
#include <cmath> int main(int argc, char *argv[]) { const int size = 256; double sinTable[size]; #pragma omp parallel for for(int n=0; n < size; ++n) sinTable[n] = std::sin(2 * M_PI * n / size); // the table is now initialized }
Viac ukážok na: https://bisqwit.iki.fi/story/howto/openmp/.
Mono umožňuje cross-kompiláciu do natívneho kódu s tým, že možné všetko zbaliť do jednej binárky pomocou mkbundle. Z pokusov, ktoré som robil (konzolové aplikácie s HTTP klientom) mi vyšlo, že výsledný binárny súbor je približne o megabajt väčší ako alternatíva v Go. Navyše je takto možné spraviť programy, ktoré majú jednoduché GUI.
.Net Core umožňuje korss-kompiláciu pre jednotlivé platformy s pribalením všetkých závislostí (nie je potrebné inštalovať runtime). S výkonom sa ide pohrať cez unsafe kód. Nevýhodou je, že aj ku konzolovej aplikácii s HTTP klientom pribalí 30 až 50 MB (podľa výslednej platformy), čo pri serveri nevadí, no pri utilitke pre bežných ľudí hej.
Edit: Aj .Net Core (< 3.0) ide kompilovať do natívnej binárky, ktorá má obdobnú veľkosť ako program v Go pomocou
Edit: Od .Net Core 3.0 ide kompilovať projekt do natívnej jednosúborovej optimalizovanej natívnej binárky. Viac sa dozviete na blogu Scotta Hanselmana. Napríklad pre Windows 10 stačí spraviť publish s parametrami: dotnet publish -c Release -r win10-x64 -p:PublishTrimmed=true -p:PublishSingleFile=true
.
Rust je kompilovaný, staticky typový jazyk bez behového prostredia a garbage collectora. Je multparadigmový s výrazným ovplyvnením funkcionálnymi jazykmi. Podľa môjho názoru lepšie vyriešil všetky problémy, ktoré tu spomínam o Golangu.
Preto Rust považujem za najlepší náhradu Golangu, či už v malých utilitách alebo mikroslužbách.
Go je veľmi primitívny jazyk, jeho syntax a premisy sa človek naučí zvládnuť za niekoľko hodín a za pár dní dokáže v ňom písať programy. Ale z charakteru jazyka, by som v ňom nepísal veľké systémy, skôr sa hodí na malé utilitky, mirkoslužby (ktoré sú ale fakt mikro) alebo pre použitie v Raspberry Pi.
Prosto všade tam, kde je výhodné mať malý procedurálny program (max. niekoľko stoviek riadkov), ktorý je ale pomerne rýchly a je bez závislostí na externom runtime, či knižniciach (netreba nič inštalovať na operačný systém). Pekným príkladom je napríklad utilitka ngrok.