Eu am lucrat in ultimii 4 ani 70% Go, restul Python si Java. Din punctul meu de vedere, as alege oricand Go in detrimentul celorlalte. Exista si exceptii cum ar fi Python si AI. Java pentru anumite enterprise apps unde vei gasi o gramada librarii/biblioteci care iti vor face viata mai usoara. Notable mention pentru C# pentru cei care sunt in Microsoft world.
Acum 1 luna a trebuit sa fac un CLI. PoC-ul cu cateva use cases il facusem in Go in cateva ore. Fisierul avea 2MB si nicio dependinta. Cand a trebuit sa scriu production code, cumva am ajuns la concluzia ca ar trebui facut in java. A durat 1 luna, fisierul avea 30MB pentru circa 1500 loc si chinuiala mare ca nu reusam sa fac native binary sa mearga deloc. Aveam segfault dupa segfault (Daca mai aud argumente ca if err!= nil din Go e o idee proasta si ca try catch e acest construct superior trimis de Dumnezeu tatal, inseamna ca …well mai bine ma abtin).
Am rezolvat pana la urma…nu insa fara durere. Pana la urma si java e un limbaj bun. Nu pentru CLI insa.
De unde cresterea in popularitate? Nu am date concrete. Eu unu va zic ce apreciez eu: simplitatea limbajului, faptul ca 1 lucru se poate face intr-un singur fel (de obicei) duce la discutii mult simplificate pe code reviews, faptul ca pot sa citesc si sa inteleg acel cod la orice ora din zi pentru ca tot codul arata la fel datorita automatic formatter. Sa nu mai zic de alte features gen concurrency. Si sa nu mai zic de lipsa multor features inutile care face cognitive load din capul meu sa fie mult mai suportabil decat alte limbaje.
Debugging go code e o experienta mult mai placuta in comparatie cu alte limbaje.
E un limbaj perfect? Hell no! Multe lucruri pot fi imbunatatite de la enums la nil pointer dereference check by compiler.
In versiunea 1.20 aveau o propunere foarte misto numita Memory Arenas. Care in teorie putea imbunatati semnificativ performanta reducand semnificativ numarul de memory allocations/de-allocations la runtime. Nu s-a avansat insa cu chestia asta…dar am semnale ca vor fi features similare in viitor, in teorie mai stabile si mai usor de folosit decat arenas.
Go e super rapid, consuma memorie foarte putina in comparatie cu alte limbaje si poti fi productiv cu el foarte repede. Nu e la fel de rapid ca alte limbaje, in special limbaje fara garbage collector, dar alea au alte use cases.
Se preteaza foarte bine pentru Cloud & Network services, DevOps/SRE/Infra work, CLI si vad ca vine din urma si pe partea de web development( htmx ).
Pentru mine nu e o surpriza ca e in crestere, iar din informatiile pe care le am o sa continue sa creasca in zonele astea pentru ca sunt multe proiecte si propuneri cu Go.