Unë e kam ndjekur Go që nga viti 2014 dhe e kam përdorur për herë të parë në prodhim në vitin 2016 kur prezantova një shërbim të ri në një arkitekturë ekzistuese mikro-shërbimi.

Përpara se të marr Go, kam përdorur gjerësisht C#, Java, JavaScript (shfletuesi dhe së fundmi Node), pak Python dhe Erlang (Unë jam ende një fans i madh i Erlang, por kjo është për një postim tjetër në blog). Pra, pse më pëlqen Go kaq shumë?

Vlera e teknologjisë qëndron në aplikimin e saj. Vlera e një mjeti është ajo që ju mundëson të arrini, sa me efikasitet mund ta arrini dhe cilësia e rezultatit. Të gjitha mjetet kërkojnë një investim burimesh. Vlera e mjetit është delta midis atij investimi dhe rezultatit.

Që nga pika ime e fillimit, Go kërkoi pak investime për t'u bërë mjaft i aftë. Gjenealogjia e saj është C, kështu që duket e njohur, por sintaksa e një gjuhe është një çështje mjaft e parëndësishme dhe në fakt mund të jetë shumë mashtruese (shih JavaScript që është në të vërtetë një lisp). Mungesa e trashëgimisë ishte një rregullim i lehtë për t'u bërë pasi përpara se Go të shfaqej në radarin tim, unë priresha të preferoja shpesh kompozimin mbi trashëgiminë gjithsesi. Injeksion varësie; një koncept i lehtë për t'u kuptuar, por jo aq i lehtë për t'u zbatuar në C# ose Java. Kërkon konsideratë të kujdesshme në lidhje me ndërfaqet, ku ato janë të përcaktuara dhe ka një mori kontejnerësh për të zgjedhur. E shkëlqyeshme sapo të jeni në kurbë mjaft e lehtë, por ende ka një kthesë. Modeli i ndërfaqes së nënkuptuar në Go heq shumë nga kjo dhimbje.

Nëse Go ka një tipar vrasës, ai është CSP. Ju nuk i keni fituar vijat tuaja derisa të jeni lidhur në nyje duke punuar me mutexes dhe fije. Nëse nuk e keni parë prezantimin e Rob Pike "Konkurrenca nuk është paralelizëm", atëherë ju sugjeroj ta bëni nëse kjo është një temë që ju intereson. Po kështu, "Shtatë Modele të Konkurrencës në Shtatë Javë" nga Paul Butcher duhet lexuar.

Shko nuk ka zbritur tek ne nga Kulla e Fildishtë. Go është një projekt me burim të hapur me një komunitet të gjallë që kontribuon në vetë Go si dhe në ekosistemin e tij, por padyshim që ka një "histori" shumë koherente, qëllime të qarta dizajni dhe është shumë i fortë në idioma. Një shembull i kësaj është "Go fmt". Diskutimet rreth mënyrës së formatimit të kodit janë një humbje e madhe përpjekjesh nga IMO. Vlera e vetme është në konsensus. Go përcakton se si vendoset kodi, diskutohet përpara se të fillojë dhe të gjithë kanë të njëjtën strukturë, të përsosur. Krahasoni këtë me JavaScript sot; Një milion e një mënyra për të bërë të njëjtën gjë dhe të paktën dy versione të sintaksës janë të përhapura. Ky nuk është një postim shaka JS, ka arsye të mira pse është bërë kështu. Ndërsa një koleg i imi mendjemprehtë me një zgjuarsi të mprehtë që i kalon ditët e tij thellë në gju në Node dhe React tha "ju thjesht qëndroni atje të sigurt dhe ngrohtë ndërsa unë jam këtu në perëndim të egër!". Ai ka një pikë.

Ka një grup Go Proverbs që të gjithë zhvilluesit e Go duhet të dinë dhe kuptojnë. Ide të thjeshta por të fuqishme. Njëra që e shoh veten duke e përsëritur shpesh është ""një kopjim i vogël është më mirë se një varësi e vogël"". Ne (zhvilluesit) na është futur ripërdorimi dhe shpesh shikojmë të krijojmë paketa të ripërdorshme shumë herët në proces. Paketimi ka shpenzime të përgjithshme, menaxhimi i varësisë ka shpenzime të përgjithshme; pritja derisa diçka të ketë një grup të konsiderueshëm karakteristikash dhe të jetë mjaft e qëndrueshme përpara se ta nxjerrë atë në një paketë është zakonisht opsioni i arsyeshëm. Në fillim, kopjimi dhe ngjitja e kodit duket si një mëkat, por shpejt kupton se është shpesh mënyra më pragmatike dhe më efikase për të ecur përpara. Sigurisht që kjo qasje ka kufizime, çelësi është 'pak' dhe të dish kur pak nuk është më aq pak.

Kur mësova gjuhët e tjera, e di se më dukej sikur po bëja shumë përpjekje për të mësuar atë gjuhë. Me kalimin e viteve mësova më shumë mësime rreth modeleve, "TDD", "CI", shkëputja e kodit/pakove, vlera e pandryshueshmërisë, "IoC", "SOLID" dhe ndoshta shumë elementë të tjerë që më kalojnë mendjen tani. Koncepte dhe ide që tejkalojnë një gjuhë të caktuar. Go më lejoni t'i punësoj të gjitha pa u penguar dhe si e tillë që delta midis investimit të mjetit dhe rezultatit është e lartë. Kjo është arsyeja pse më pëlqen Go, nuk më pengon dhe nuk më bën të kërcej, thjesht më lejon të shpreh atë që duhet të shpreh pa ceremoni.