GoSuda

De ce limbajul Go?

By Rabbit Princess
views ...

Introducere

Limbajele de programare sunt instrumente pentru crearea de produse. Abilitatea unui dezvoltator nu este determinată pur și simplu de limbajul pe care îl folosește. Cu toate acestea, alegerea limbajului și modul în care este gestionat pot influența direct modul de gândire și direcția de creștere a unui dezvoltator. În special, compararea limbajului utilizat în prezent cu alte limbaje poate contribui semnificativ la extinderea orizontului tehnic și la dezvoltarea unui simț al esenței. În acest articol, voi discuta de ce am ales Go și cum acesta ajută la creșterea dezvoltatorilor, împărțind subiectul în cinci aspecte.

1. Go este un limbaj care echilibrează performanța și productivitatea.

Există numeroase limbaje de programare în lume, fiecare având avantaje și dezavantaje în funcție de caracteristicile sale.

  • C permite performanțe excelente și control de nivel scăzut, dar necesită gestionarea manuală a memoriei de către dezvoltator, are o productivitate scăzută din cauza lipsei de funcționalități de nivel înalt și este dificil de întreținut.
  • C++ și Rust suportă diverse funcționalități avansate precum programarea orientată pe obiecte, template-uri și metaprogramarea, dar sintaxa este complexă, curba de învățare este abruptă și nu sunt potrivite pentru implementări iterative din cauza vitezei lente de compilare.
  • Java și C# sunt utilizate pe scară largă pentru servicii la scară largă, oferind independență de platformă și stabilitate, dar rulează pe mașini virtuale grele, ceea ce face implementarea și mediul de execuție complexe și cerințele de resurse ridicate.
  • Python și Javascript sunt potrivite pentru dezvoltarea rapidă datorită sintaxei concise și ecosistemului bogat, dar performanța de execuție este scăzută și fiabilitatea ecosistemului este redusă, evidențiind limitări structurale în sistemele la scară largă.

Pe de altă parte, Golang este un limbaj care atinge un echilibru excelent între performanță și productivitate. Deoarece Go este un limbaj compilat precum C, asigură performanțe ridicate de execuție, oferind în același timp flexibilitate de implementare la nivel de interpretor datorită vitezei rapide de compilare. Cu alte cuvinte, Go este un limbaj echilibrat care poate fi utilizat stabil în majoritatea mediilor, fără dezavantaje evidente.

2. Go previne programarea cargo cult.

În timpul celui de-Al Doilea Război Mondial, Forțele Aliate au construit baze aeriene pe insulele din Pacific pentru a sprijini efortul de război. Cantități mari de provizii și echipamente militare au schimbat semnificativ viața soldaților și a populației indigene. Localnicii au văzut pentru prima dată avioane aducând haine fabricate, alimente conservate și alte bunuri. După încheierea războiului, bazele au fost abandonate și transporturile nu mai soseau. Prin urmare, insularii, pentru a-i imita pe soldați, s-au îmbrăcat ca și controlori de trafic aerian, soldați și marinari, au creat o pistă rudimentară și au folosit bețe pentru a semnaliza aterizarea avioanelor. Ei au continuat să mărșăluiască pentru a face ca marfa să cadă cu parașuta din avioane. Cu toate acestea, avioanele pe care le așteptau nu au mai sosit.

Programarea cargo cult se referă la obiceiul dezvoltatorilor de a imita doar aspectul exterior al codului sau al tehnologiei fără a înțelege principiile subiacente. În rândul dezvoltatorilor moderni, în special în domeniul dezvoltării web, acest obicei de a urma fără a înțelege semnificația este comun. Datorită framework-urilor precum React, Next, Spring și Django, dezvoltarea a devenit posibilă fără a cunoaște structura internă, dar adesea nu se poate răspunde corect nici măcar la o mică eroare. Odată cu adăugarea recentă a instrumentelor de generare de cod AI, metoda de dezvoltare care implică doar copierea și lipirea rezultatelor, mai degrabă decât scrierea directă a codului sau înțelegerea principiilor, devine și mai răspândită.

Go evită fundamental aceste probleme la nivelul filosofiei limbajului. Go este un limbaj conceput centrat pe biblioteca standard, nu pe framework. Dezvoltatorii pot construi servere web de nivel de serviciu real doar cu bibliotecile de bază precum net/http și database/sql, dezvoltând astfel în mod natural intuiția și înțelegerea structurilor de nivel scăzut precum rețeaua, bazele de date și I/O. Această structură, care permite stăpânirea solidă a fundamentelor fără a depinde de framework-uri, servește drept bază pentru ca dezvoltatorii să crească continuu fără a pierde esența tehnologiei.

3. Go oferă un model puternic de concurență.

CPU-urile moderne evoluează spre îmbunătățirea performanței prin utilizarea paralelă a mai multor nuclee, mai degrabă decât prin creșterea vitezei unui singur nucleu. În consecință, concurența, care permite unui singur program să proceseze mai multe sarcini simultan, a devenit o necesitate, iar importanța limbajelor care pot proiecta și implementa eficient concurența este în creștere. Go este un limbaj optimizat pentru acest mediu. Goroutine-urile sunt fire de execuție ușoare oferite de Go, care pot fi create cu doar câțiva KB de stivă și consumă puține resurse de sistem chiar și atunci când mii de ele rulează simultan. Runtime-ul Go distribuie eficient numeroase goroutine-uri pe firele de execuție ale sistemului de operare printr-un scheduler M:N propriu, iar acest proces este optimizat automat fără intervenția directă a dezvoltatorului. Acest lucru permite dezvoltatorilor să proiecteze logica de concurență într-un mod sigur și consistent, fără logici complexe de sincronizare sau programare personalizată.

În plus, Go suportă activ proiectarea modernă a concurenței utilizând instrumente de sincronizare precum mutex și waitGroup, precum și channel și context. Datorită acestei structuri, dezvoltatorii pot dobândi în mod natural un simț practic al concurenței și paralelismului fără a fi legați de teorii complexe și pot atinge un nivel înalt de abstractizare și abilități de proiectare utilizabile de la zero.

4. Go este un limbaj creat de dezvoltatori excelenți care au menținut un echilibru.

Go este un limbaj creat sub conducerea unor dezvoltatori legendari de la Google: Robert Griesemer, Rob Pike și Ken Thompson. În special, aceștia sunt fondatorii Unix și ai limbajului C, precum și giganți în domeniile compilatoarelor și software-ului de sistem, ceea ce demonstrează în sine fiabilitatea tehnică a Go. Cu experiența practică a numeroșilor ingineri Google și know-how-ul lor în operarea serviciilor la scară largă, Go a evoluat de la început cu o filosofie și o direcție consecvente, vizând rezolvarea problemelor din lumea reală.

Alte limbaje provoacă adesea confuzie în rândul comunității și al utilizatorilor din cauza ruperii compatibilității, a modificărilor de proiectare, a licențelor instabile și a ecosistemelor nestandardizate. De exemplu, Python a avut ecosistemul său divizat timp de ani de zile din cauza ruperii compatibilității între versiunile 2 și 3, iar Java, după achiziția de către Oracle, a văzut o creștere a cazurilor în care companiile evită adoptarea din cauza politicilor de licențiere instabile. De asemenea, Node.js încă nu oferă un sistem de module consistent, cu coexistența CJS și ESM.

Pe de altă parte, Go este un limbaj care prioritizează consecvența și stabilitatea. Echipa Go menține strict compatibilitatea inversă și, chiar și atunci când introduce noi funcționalități, aderă la o abordare de integrare incrementală pentru a evita conflictele cu codul existent. Sintaxa evită, de asemenea, cuvintele cheie inutile și limitează abstractizarea excesivă, prevenind complexitatea inutilă a limbajului în sine. În plus, setul de instrumente oficiale consecvente, cum ar fi go fmt, go mod, go build, go test, încurajează toate proiectele Go să aibă același mediu de dezvoltare și structură, iar biblioteca standard puternică și practică suportă în mod fidel majoritatea funcționalităților necesare dezvoltării practice, cum ar fi serverele web, procesarea fișierelor și integrarea bazelor de date, fără a fi nevoie de framework-uri suplimentare.

5. Gopher-ul este drăguț.

Gopher1

Gopher2

Gopher3