de Kirill Rogovoy

Iată câteva avantaje uimitoare ale Go despre care nu auziți prea multe

Iata cateva avantaje uimitoare ale Go despre care nu auziti
Lucrări de artă din https://github.com/ashleymcnamara/gophers

În acest articol, discut de ce ar trebui să îi dai Go șansă și de unde să începi.

Golang este un limbaj de programare despre care s-ar putea să fi auzit multe în ultimii doi ani. Chiar dacă a fost creat în 2009, a început să câștige popularitate abia în ultimii ani.

1611188769 805 Iata cateva avantaje uimitoare ale Go despre care nu auziti
Popularitatea Golang conform Google Trends

Acest articol nu este despre principalele puncte de vânzare ale Go pe care le vedeți de obicei.

În schimb, aș dori să vă prezint câteva caracteristici destul de mici, dar totuși semnificative, pe care le cunoașteți numai după ce ați decis să încercați Go.

Acestea sunt caracteristici uimitoare care nu sunt așezate la suprafață, dar vă pot economisi săptămâni sau luni de muncă. De asemenea, pot face dezvoltarea software-ului mai plăcută.

Nu vă faceți griji dacă Go este ceva nou pentru dvs. Acest articol nu necesită nicio experiență prealabilă cu limba. Am inclus câteva linkuri suplimentare în partea de jos, în cazul în care ați dori să aflați mai multe.

Vom trece prin subiecte precum:

  • GoDoc
  • Analiza statică a codului
  • Cadru de testare și profilare încorporat
  • Detectarea stării cursei
  • Curbă de învățare
  • Reflecţie
  • Opinionism
  • Cultură

Vă rugăm să rețineți că lista nu respectă nicio comandă specială. Este, de asemenea, opiniat ca un iad.

GoDoc

Documentația în cod este luată foarte în serios în Go. La fel și simplitatea.

GoDoc este un instrument static de analiză a codului care creează pagini frumoase de documentare direct din cod. Un lucru remarcabil despre GoDoc este că nu folosește limbaje suplimentare, cum ar fi JavaDoc, PHPDoc sau JSDoc pentru a adnota construcții în codul dvs. Doar engleza.

Folosește cât mai multe informații din cod pentru a contura, structura și formata documentația. Și are toate clopotele și fluierele, cum ar fi referințe încrucișate, mostre de cod și linkuri directe către depozitul dvs. de sistem de control al versiunilor.

Tot ce puteți face este să adăugați un vechi bun // MyFunc transforms Foo into Bar un fel de comentariu care s-ar reflecta și în documentație. Puteți chiar să adăugați exemple de cod care sunt de fapt rulabil prin intermediul interfeței web sau local.

GoDoc este singurul motor de documentare pentru Go care este utilizat de întreaga comunitate. Aceasta înseamnă că fiecare bibliotecă sau aplicație scrisă în Go are același format de documentare. Pe termen lung, vă economisește o mulțime de timp în timp ce navigați în aceste documente.

Iată, de exemplu, pagina GoDoc pentru proiectul meu recent pentru animale de companie: pullkee – GoDoc.

Analiza statică a codului

Go se bazează foarte mult pe analiza statică a codului. Exemplele includ godoc pentru documentare, gofmt pentru formatarea codului, golint pentru sclipirea stilului de cod și multe altele.

Există atât de multe dintre ele încât există chiar și un proiect cu totul inclus, numit gometalinter pentru a le compune pe toate într-un singur utilitar.

Aceste instrumente sunt de obicei puse în aplicare ca aplicații de linie de comandă de sine stătătoare și se integrează cu ușurință în orice mediu de codare.

Analiza statică a codului nu este de fapt ceva nou pentru programarea modernă, dar Go o aduce la absolut. Nu pot supraestima cât timp m-a salvat. De asemenea, vă oferă un sentiment de siguranță, ca și cum cineva vă acoperă spatele.

Este foarte ușor să vă creați propriile analizoare, deoarece Go are pachete dedicate încorporate pentru analizarea și lucrul cu sursele Go.

Puteți afla mai multe din această discuție: GothamGo Kickoff Meetup: Go Instrumente de analiză statică de Alan Donovan.

Cadru de testare și profilare încorporat

Ați încercat vreodată să alegeți un cadru de testare pentru un proiect Javascript pe care îl începeți de la zero? Dacă da, ați putea înțelege acea luptă de a trece printr-o astfel de paralizie de analiză. S-ar putea să fi realizat, de asemenea, că nu utilizați 80% din cadrul pe care l-ați ales.

Problema se repetă din nou odată ce trebuie să faceți o profilare fiabilă.

Go vine cu un instrument de testare încorporat conceput pentru simplitate și eficiență. Vă oferă cel mai simplu API posibil și face ipoteze minime. Îl puteți folosi pentru diferite tipuri de testare, profilare și chiar pentru a furniza exemple de cod executabil.

Produce o ieșire compatibilă cu CI imediat după utilizare, iar utilizarea este de obicei la fel de ușoară ca și rularea go test. Desigur, suportă și funcții avansate, cum ar fi efectuarea de teste în paralel, marcarea acestora ca omise și multe altele.

Detectarea stării cursei

S-ar putea să știți deja despre Goroutine, care sunt utilizate în Go pentru a realiza execuția simultană a codului. Dacă nu, iată o explicație foarte scurtă.

Programarea simultană în aplicații complexe nu este niciodată ușoară indiferent de tehnica specifică, parțial datorită posibilității condițiilor de cursă.

Pur și simplu, condițiile cursei se întâmplă atunci când mai multe operațiuni concurente se termină într-o ordine neprevăzută. Ar putea duce la un număr mare de bug-uri, care sunt deosebit de greu de urmărit. Ați petrecut vreodată o zi depanând un test de integrare care a funcționat doar în aproximativ 80% din execuții? Probabil că era o condiție de cursă.

Acestea fiind spuse, programarea simultană este luată foarte în serios în Go și, din fericire, avem un instrument destul de puternic pentru a vâna acele condiții de cursă. Este complet integrat în lanțul de instrumente Go.

Puteți citi mai multe despre acesta și aflați cum să îl utilizați aici: Vă prezentăm Go Race Detector – Blogul Go.

Curbă de învățare

Puteți învăța caracteristicile limbii ALL Go într-o singură seară. Sunt serios. Desigur, există și biblioteca standard și cele mai bune practici în domenii diferite, mai specifice. Dar două ore ar fi în totalitate suficient timp pentru a vă ajuta să scrieți cu încredere un server HTTP simplu sau o aplicație din linia de comandă.

Proiectul are documentare minunată, iar majoritatea subiectelor avansate au fost deja tratate pe blogul lor: Blogul de limbaj de programare Go.

Go este mult mai ușor de adus echipei tale decât Java (și familia), Javascript, Ruby, Python sau chiar PHP. Mediul este ușor de configurat, iar investiția pe care trebuie să o facă echipa dvs. este mult mai mică înainte de a vă putea completa primul cod de producție.

Reflecţie

Reflectarea codului este în esență o abilitate de a se strecura sub capotă și de a accesa diferite tipuri de meta-informații despre structurile limbajului dvs., cum ar fi variabile sau funcții.

Având în vedere că Go este un limbaj tipizat static, este expus la o serie de limitări diferite atunci când vine vorba de programare abstractă mai puțin tastată. Mai ales în comparație cu limbi precum Javascript sau Python.

Mai mult, Du-te nu implementează un concept numit Generics ceea ce face și mai dificilă lucrul cu mai multe tipuri într-un mod abstract. Cu toate acestea, mulți oameni consideră că este de fapt benefic pentru limbă din cauza complexității generate de generici. Și sunt total de acord.

Conform filozofiei lui Go (care este un subiect separat), ar trebui să încercați din greu să nu vă supraînțelegeți soluțiile. Și acest lucru se aplică și programării tipizate dinamic. Respectați cât mai mult posibil tipurile statice și utilizați interfețe atunci când știți exact cu ce tipuri aveți de-a face. Interfețele sunt foarte puternice și omniprezente în Go.

Cu toate acestea, există încă cazuri în care nu puteți ști cu ce fel de date vă confruntați. Un exemplu excelent este JSON. Puteți converti toate tipurile de date înainte și înapoi în aplicațiile dvs. Șiruri, tampoane, tot felul de numere, structuri imbricate și multe altele.

Pentru a elimina acest lucru, aveți nevoie de un instrument pentru a examina toate datele în timp de execuție care acționează diferit în funcție de tipul și structura acestuia. Reflecție de salvat! Go are o clasă de primă clasă Reflectați pachet pentru a permite codului dvs. să fie la fel de dinamic precum ar fi într-o limbă precum Javascript.

O avertizare importantă este să știți ce preț plătiți pentru utilizarea acestuia și să îl utilizați numai atunci când nu există o cale mai simplă.

Puteți citi mai multe despre asta aici: Legile reflecției – Blogul Go.

De asemenea, puteți citi un cod real din sursele pachetului JSON aici: src / encoding / json / encode.go – Cod sursă

Opinionism

Apropo, există un astfel de cuvânt?

Provenind din lumea Javascript, unul dintre cele mai descurajante procese cu care m-am confruntat a fost să decid ce convenții și instrumente trebuie să folosesc. Cum ar trebui să-mi modelez codul? Ce bibliotecă de testare ar trebui să folosesc? Cum ar trebui să fac structura? Pe ce paradigme și abordări de programare ar trebui să mă bazez?

Ceea ce, uneori, practic mă bloca. Faceam asta în loc să scriu codul și să satisfac utilizatorii.

Pentru început, ar trebui să rețin că ajung total de unde ar trebui să vină aceste convenții. Ești întotdeauna tu și echipa ta. Oricum, chiar și un grup de dezvoltatori Javascript cu experiență se pot găsi cu ușurință având cea mai mare parte a experienței cu instrumente și paradigme complet diferite pentru a obține aceleași rezultate.

Acest lucru face ca norul de paralizie de analiză să explodeze asupra întregii echipe și, de asemenea, face mai dificilă integrarea indivizilor între ei.

Ei bine, Go este diferit. Aveți un singur ghid de stil pe care îl urmează toată lumea. Aveți un singur cadru de testare care este încorporat în lanțul de instrumente de bază. Aveți o mulțime de opinii puternice despre cum să vă structurați și să vă mențineți codul. Cum să alegeți nume. Ce tipare de structurare trebuie urmate. Cum să faci concurența mai bine.

Deși acest lucru ar putea părea prea restrictiv, economisește tone de timp pentru dvs. și echipa dvs. A fi oarecum limitat este de fapt un lucru grozav atunci când codificați. Vă oferă o modalitate mai simplă de parcurs atunci când arhitecturați un nou cod și vă face mai ușor să vă gândiți la cel existent.

Drept urmare, majoritatea proiectelor Go arată destul de asemănător din punct de vedere al codului.

Cultură

Oamenii spun că de fiecare dată când înveți o nouă limbă vorbită, te îmbogățești și cu o parte a culturii oamenilor care vorbesc această limbă. Astfel, cu cât înveți mai multe limbi, cu atât s-ar putea să experimentezi modificări personale.

Este la fel cu limbajele de programare. Indiferent de modul în care veți aplica un nou limbaj de programare în viitor, acesta vă oferă întotdeauna o nouă perspectivă asupra programării în general sau asupra unor tehnici specifice.

Fie că este vorba de programare funcțională, potrivire de modele sau moștenire prototipală. Odată ce l-ați învățat, aveți la dispoziție aceste abordări, care extind setul de instrumente pentru rezolvarea problemelor pe care îl aveți ca dezvoltator de software. De asemenea, schimbă modul în care vedeți programarea de înaltă calitate în general.

Și Go este o investiție grozavă aici. Pilonul principal al culturii lui Go este păstrarea unui cod simplu, practic, fără a crea multe abstracții redundante și a pune mentenabilitatea în partea de sus. Este, de asemenea, o parte a culturii să petreceți cel mai mult timp lucrând efectiv la baza de coduri, în loc să vă amestecați cu instrumentele și cu mediul. Sau alegerea între diferite variații ale acestora.

Go se referă și la „ar trebui să existe un singur mod de a face un lucru”.

O mică notă laterală. Este, de asemenea, parțial adevărat că Go vă împiedică de obicei atunci când trebuie să construiți abstracții relativ complexe. Ei bine, aș spune că acesta este compromisul pentru simplitatea sa.

Dacă chiar ai nevoie să scrii o mulțime de cod abstract cu relații complexe, ar fi mai bine să folosești limbaje precum Java sau Python. Cu toate acestea, chiar și atunci când nu este evident, este foarte rar cazul.

Folosiți întotdeauna cel mai bun instrument pentru job!

Concluzie

S-ar putea să fi auzit de Go înainte. Sau poate este ceva care a rămas în afara radarului dvs. de ceva vreme. Oricum, șansele sunt, Go poate fi o alegere foarte decentă pentru dvs. sau echipa dvs. atunci când începeți un proiect nou sau îl îmbunătățiți pe cel existent.

Aceasta nu este o listă completă a tuturor lucrurilor uimitoare despre Go. Doar cele subevaluate.

Vă rog, încercați cu Go Un tur al Go care este un loc incredibil de început.

Dacă doriți să aflați mai multe despre beneficiile Go, puteți consulta aceste linkuri:

Împărtășiți observațiile dvs. în comentarii!

Chiar dacă nu căutați în mod specific un nou limbaj pe care să îl folosiți, merită să petreceți o oră sau două simțindu-l. Și poate vă poate deveni destul de util în viitor.

Căutați întotdeauna cele mai bune instrumente pentru ambarcațiunea dvs.!

Dacă vă place acest articol, vă rugăm să luați în considerare urmărirea mea pentru mai multe și să faceți clic pe acele amuzante verzi amuzante chiar sub acest text pentru partajare. ???

Verifică-mi Github și urmează-mă Stare de nervozitate!