Tässä on joitain Go: n upeita etuja, joista et kuule paljoakaan

Tässä artikkelissa keskustelen siitä, miksi sinun pitäisi antaa Go: lle mahdollisuus ja mistä aloittaa.

Golang on ohjelmointikieli, josta olet ehkä kuullut paljon parin viime vuoden aikana. Vaikka se luotiin jo vuonna 2009, se on alkanut saada suosiota vasta viime vuosina.

Tämä artikkeli ei koske Go: n tärkeimpiä myyntipisteitä, jotka yleensä näkevät.

Sen sijaan haluaisin esitellä sinulle melko pieniä, mutta silti merkittäviä ominaisuuksia, jotka tutustut vasta sen jälkeen, kun olet päättänyt kokeilla Goa.

Nämä ovat hämmästyttäviä ominaisuuksia, joita ei ole asetettu pinnalle, mutta ne voivat säästää viikkoja tai kuukausia työtä. Ne voivat myös tehdä ohjelmistokehityksestä nautinnollisempaa.

Älä huoli, jos Go on sinulle jotain uutta. Tämä artikkeli ei vaadi aikaisempaa kokemusta kielestä. Olen sisällyttänyt muutaman ylimääräisen linkin alareunaan, jos haluat oppia hieman enemmän.

Käymme läpi esimerkiksi seuraavia aiheita:

  • GoDoc
  • Staattinen koodianalyysi
  • Sisäänrakennettu testaus- ja profilointikehys
  • Kilpailun olosuhteiden havaitseminen
  • Oppimiskäyrä
  • Heijastus
  • Mielipiteellisyys
  • Kulttuuri

Huomaa, että luettelo ei noudata mitään tiettyä järjestystä. Sitä pidetään myös helvetinä.

GoDoc

Koodin dokumentaatio otetaan Go: ssa erittäin vakavasti. Niin on yksinkertaisuus.

GoDoc on staattinen koodianalyysityökalu, joka luo kauniita ohjesivuja suoraan koodistasi. Merkittävä asia GoDocissa on se, että se ei käytä ylimääräisiä kieliä, kuten JavaDoc, PHPDoc tai JSDoc, rakenteen merkitsemiseen koodissasi. Vain englantia.

Se käyttää niin paljon tietoa kuin se voi saada koodista jäsentääkseen, jäsentääkseen ja muotoillakseen dokumentaatiota. Ja siinä on kaikki kellot ja pillit, kuten ristiviittaukset, koodinäytteet ja suorat linkit versionhallintajärjestelmän arkistoon.

Voit vain lisätä vanhan hyvän // MyFunc transforms Foo into Bartyyppisen kommentin, joka näkyy myös dokumentaatiossa. Voit jopa lisätä koodiesimerkkejä, jotka ovat todella ajettavissa verkkoliittymän kautta tai paikallisesti.

GoDoc on ainoa Go-dokumentointimoottori, jota koko yhteisö käyttää. Tämä tarkoittaa, että jokaisella Go-ohjelmassa kirjoitetulla kirjastolla tai sovelluksella on sama muotoinen dokumentaatio. Pitkällä aikavälillä se säästää tonnia aikaa selatessasi näitä asiakirjoja.

Tässä on esimerkiksi viimeisimmän lemmikkiprojektini GoDoc-sivu: pullkee - GoDoc.

Staattinen koodianalyysi

Go riippuu suuresti staattisen koodin analyysistä. Esimerkkejä ovat godoc dokumentaatioon, gofmt koodin muotoiluun, golint koodityylin nukkaamiseen ja monet muut.

Niitä on niin paljon, että siellä on jopa kaikki sisältyvä-tyyppinen projekti nimeltään gometalinter, joka säveltää ne kaikki yhdeksi apuohjelmaksi.

Nämä työkalut toteutetaan yleisesti erillisinä komentorivisovelluksina ja integroituvat helposti mihin tahansa koodausympäristöön.

Staattinen koodianalyysi ei ole oikeastaan ​​jotain uutta nykyaikaiselle ohjelmoinnille, mutta Go tuo sen absoluuttiseen asemaan. En voi yliarvioida kuinka paljon aikaa se säästeli minua. Lisäksi se antaa sinulle turvallisuuden tunteen, ikään kuin joku peittäisi selkääsi.

Omien analysaattoreiden luominen on erittäin helppoa, koska Go: lla on omat sisäänrakennetut paketit jäsentämiseen ja työskentelyyn Go-lähteiden kanssa.

Voit oppia lisää tästä keskustelusta: GothamGo Kickoff Meetup: Go Static Analysis Tools, kirjoittanut Alan Donovan.

Sisäänrakennettu testaus- ja profilointikehys

Oletko koskaan yrittänyt valita testauskehyksen Javascript-projektille, jonka aloitat tyhjästä? Jos näin on, saatat ymmärtää tämän taistelun, joka tapahtuu tällaisen analyysin halvaantumisen läpi. Olet ehkä ymmärtänyt, ettet käyttänyt kuin 80% valitsemastasi kehyksestä.

Ongelma toistuu uudelleen, kun sinun on tehtävä luotettava profilointi.

Go sisältää sisäänrakennetun testaustyökalun, joka on suunniteltu yksinkertaisuuteen ja tehokkuuteen. Se tarjoaa sinulle yksinkertaisen mahdollisen sovellusliittymän ja tekee vähimmäisoletuksia. Voit käyttää sitä erilaisiin testauksiin, profilointiin ja jopa tarjota suoritettavia koodiesimerkkejä.

Se tuottaa CI-ystävällisen ulostulon valmiiksi, ja käyttö on yleensä yhtä helppoa kuin ajaminen go test. Tietysti se tukee myös kehittyneitä ominaisuuksia, kuten testien suorittaminen rinnakkain, niiden merkitseminen ohitetuiksi ja paljon muuta.

Kilpailun olosuhteiden havaitseminen

Saatat jo tietää Goroutinesista, joita Go-ohjelmassa käytetään samanaikaisen koodin suorittamisen aikaansaamiseksi. Jos et, tässä on todella lyhyt selitys.

Samanaikainen ohjelmointi monimutkaisissa sovelluksissa ei ole koskaan helppoa tekniikasta riippumatta, osittain kilpailuolosuhteiden mahdollisuuden vuoksi.

Yksinkertaisesti sanottuna, kilpailuolosuhteet tapahtuvat, kun useat samanaikaiset toiminnot päättyvät ennalta arvaamattomassa järjestyksessä. Se voi johtaa valtavaan määrään vikoja, joita on erityisen vaikea ajaa alas. Oletko koskaan viettänyt päivän virittämällä integraatiotestiä, joka toimi vain noin 80 prosentissa teloituksista? Se oli todennäköisesti kilpailutilanne.

Kaiken kaikkiaan samanaikainen ohjelmointi otetaan hyvin vakavasti Go: ssa, ja onneksi meillä on melko tehokas työkalu metsästää näitä kilpailuolosuhteita. Se on täysin integroitu Go: n työkaluketjuun.

Voit lukea lisää siitä ja oppia käyttämään sitä täällä: Esittelyssä Go Race Detector - The Go -blogi.

Oppimiskäyrä

Voit oppia KAIKKI Go: n kieliominaisuudet yhdessä illassa. Tarkoitan sitä. Tietysti löytyy myös vakiokirjasto ja parhaita käytäntöjä eri, tarkemmilla alueilla. Mutta kaksi tuntia olisi täysin tarpeeksi aikaa saada sinut luottavaisesti kirjoittamaan yksinkertaisen HTTP-palvelimen tai komentorivisovelluksen.

Projektilla on upea dokumentaatio, ja suurin osa edistyneistä aiheista on jo käsitelty heidän blogissaan: The Go Programming Language Blog.

Go on paljon helpompi tuoda joukkueellesi kuin Java (ja perhe), Javascript, Ruby, Python tai jopa PHP. Ympäristö on helppo asentaa, ja tiimisi tekemä sijoitus on paljon pienempi, ennen kuin he voivat suorittaa ensimmäisen tuotantokoodisi.

Heijastus

Koodiheijastus on pohjimmiltaan kyky hiipiä konepellin alle ja käyttää erilaisia ​​metatietoja kielirakenteistasi, kuten muuttujia tai toimintoja.

Ottaen huomioon, että Go on staattisesti kirjoitettu kieli, se altistuu useille erilaisille rajoituksille, kun on kyse löyhemmin kirjoitetusta abstraktista ohjelmoinnista. Varsinkin verrattuna kieliin, kuten Javascript tai Python.

Go ei myöskään toteuta Generics-konseptia, mikä tekee entistä haastavammasta työskennellä useiden tyyppien kanssa abstraktilla tavalla. Kuitenkin monet ihmiset ajattelevat, että se on todella hyödyllistä kielelle, koska geneeriset tuotteet tuottavat monimutkaisuutta. Ja olen täysin samaa mieltä.

Go: n filosofian (joka on itsessään erillinen aihe) mukaan sinun tulee yrittää kovasti, ettet suunnittele ratkaisujasi liikaa. Ja tämä koskee myös dynaamisesti kirjoitettua ohjelmointia. Pidä kiinni staattisista tyypeistä niin paljon kuin mahdollista ja käytä käyttöliittymiä, kun tiedät tarkalleen, minkä tyyppisiä olet tekemisissä. Liitännät ovat Go: ssa erittäin tehokkaita ja läsnä kaikkialla.

On kuitenkin edelleen tapauksia, joissa et voi tietää, millaista dataa olet edessään. Hyvä esimerkki on JSON. Muunat kaikenlaisia ​​tietoja edestakaisin sovelluksissasi. Jouset, puskurit, kaikenlaisia ​​numeroita, sisäkkäisiä rakenteita ja paljon muuta.

Tämän poistamiseksi tarvitset työkalun, joka tutkii kaikki ajonaikaiset tiedot, jotka toimivat eri tavalla niiden tyypistä ja rakenteesta riippuen. Heijastus pelastukseen! Go: lla on ensiluokkainen reflektipaketti, jonka avulla koodi on yhtä dynaaminen kuin Javascriptin kaltaisella kielellä.

Tärkeä huomautus on tietää, minkä hinnan maksat sen käytöstä - ja käyttää sitä vain, kun ei ole yksinkertaisempaa tapaa.

Voit lukea lisää täältä: Reflection Laws - The Go -blogi.

Voit myös lukea oikeaa koodia JSON-pakettilähteistä täältä: src / encoding / json / encode.go - lähdekoodi

Mielipiteellisyys

Onko muuten olemassa sellaista sanaa?

Javascript-maailmasta tullessa yksi kauhistuttavimmista prosesseista, jonka kohdasin, oli päättää, mitä käytäntöjä ja työkaluja minun tarvitsi käyttää. Kuinka minun pitäisi muotoilla koodi? Mitä testauskirjastoa minun pitäisi käyttää? Kuinka minun pitäisi mennä rakenteeseen? Mihin ohjelmointiparadigmoihin ja lähestymistapoihin minun pitäisi luottaa?

Mikä joskus periaatteessa sai minut jumiin. Tein tämän koodin kirjoittamisen ja käyttäjien tyydyttämisen sijaan.

Aluksi minun on huomattava, että pääsen täysin sinne, mistä noiden konventioiden tulisi tulla. Se olet aina sinä ja tiimisi. Joka tapauksessa jopa ryhmä kokeneita Javascript-kehittäjiä voi helposti löytää suurimman osan kokemuksesta täysin erilaisilla työkaluilla ja paradigmoilla saavuttaakseen samanlaiset tulokset.

Tämä saa analyysin halvauspilven räjähtämään koko tiimissä ja vaikeuttaa myös yksilöiden integroitumista toisiinsa.

No, Go on erilainen. Sinulla on vain yksi tyyliopas, jota kaikki seuraavat. Sinulla on vain yksi testaustyökalu, joka on sisäänrakennettu perustyökaluketjuun. Sinulla on paljon vahvoja mielipiteitä koodin jäsentämisestä ja ylläpidosta. Kuinka valita nimet. Mitä strukturointimalleja on noudatettava. Kuinka tehdä samanaikaisuus paremmin.

Vaikka tämä saattaa tuntua liian rajoittavalta, se säästää paljon aikaa sinulle ja tiimillesi. Hieman rajoitettu on todella hieno asia koodattaessa. Se antaa sinulle suoraviivaisemman tavan suunniteltaessa uutta koodia ja helpottaa nykyisen koodaamisen päättämistä.

Tämän seurauksena suurin osa Go-projekteista näyttää melko samanlaisilta koodikohtaisesti.

Kulttuuri

Ihmiset sanovat, että aina kun opit uuden puhutun kielen, nautit myös jostakin osasta kyseistä kieltä puhuvien ihmisten kulttuuria. Joten mitä enemmän kieliä opit, sitä enemmän henkilökohtaisia ​​muutoksia saatat kokea.

Sama on ohjelmointikielien kanssa. Riippumatta siitä, miten aiot käyttää uutta ohjelmointikieliä tulevaisuudessa, se antaa sinulle aina uuden näkökulman ohjelmointiin yleensä tai joihinkin erityisiin tekniikoihin.

Olkoon se toiminnallinen ohjelmointi, mallin sovitus tai prototyyppiperintö. Kun olet oppinut sen, sinulla on nämä lähestymistavat mukanasi, mikä laajentaa ongelmanratkaisutyökalupakettia, joka sinulla on ohjelmistokehittäjänä. Se muuttaa myös tapaa, jolla näet korkealaatuisen ohjelmoinnin yleensä.

Ja Go on loistava sijoitus täällä. Go-kulttuurin pääpylväs on yksinkertaisen, maanläheisen koodin pitäminen luomatta tarpeettomia abstrakteja ja asettamatta ylläpidettävyyttä huipulle. Se on myös osa kulttuuria viettää eniten aikaa tosiasiallisesti koodikannan parissa työskentelemisen sijaan työkalujen ja ympäristön kanssa. Tai valita näiden eri muunnelmien välillä.

Go on myös kyse siitä, että "pitäisi olla vain yksi tapa tehdä asia".

Pieni sivuhuomautus. Osittain totta on myös se, että Go tavallisesti tulee omalla tavallasi, kun sinun on rakennettava suhteellisen monimutkaisia ​​abstrakteja. No, sanoisin, että se on kompromissi sen yksinkertaisuudesta.

Jos sinun on todella kirjoitettava paljon abstrakteja koodeja monimutkaisilla suhteilla, sinun on parempi käyttää kieliä, kuten Java tai Python. Kuitenkin, vaikka se ei olisikaan ilmeistä, se on hyvin harvoin.

Käytä aina parasta työtä!

Johtopäätös

Olet ehkä kuullut Goista aiemmin. Tai ehkä se on jotain, joka on pysynyt poissa tutkastasi jonkin aikaa. Joko niin, mahdollisuudet ovat, Go voi olla erittäin kunnollinen valinta sinulle tai tiimillesi aloittaessasi uutta projektia tai parantamalla olemassa olevaa.

Tämä ei ole täydellinen luettelo kaikista Go-upeista asioista. Vain aliarvostetut .

Kokeile Go-ohjelmaa A Tour of Go -ohjelmalla, joka on uskomaton paikka aloittaa.

Jos haluat oppia lisää Go: n eduista, voit tarkistaa nämä linkit:

  • Miksi sinun pitäisi oppia Go? - Keval Patel - Keskitaso
  • Hyvästi Node.js - TJ Holowaychuk - Medium

Jaa huomautuksesi kommenteissa!

Vaikka et etisikään nimenomaan uutta kieltä käytettäväksi, on sen arvoista viettää tunti tai kaksi sen tuntemiseen. Ja ehkä siitä voi tulla varsin hyödyllinen sinulle tulevaisuudessa.

Etsikää aina parhaita työkaluja veneeseesi!

Jos pidät tästä artikkelista, harkitse minun seuraamista lisää ja napsauttamalla näitä hauskoja vihreitä pieniä käsiä tämän tekstin alapuolella jakamista varten. ???

Tutustu Githubiin ja seuraa minua Twitterissä!