Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 10198|Odgovoriti: 1

Prednosti in slabosti programiranja v Go

[Kopiraj povezavo]
Objavljeno na 27. 05. 2019 09:57:10 | | |
Kako priljubljen je jezik Go? Tuje države, kot so Google, AWS, Cloudflare, CoreOS itd., ter domača podjetja, kot sta Qiniu in Alibaba, so začele uporabljati jezik Go za razvoj svojih izdelkov, povezanih z računalništvom v oblaku v velikem obsegu. Na katere da in ampake naj bom pozoren pri uporabi jezika Go?

Nedavno smo napisali API z uporabo jezika Go, odprtokodnega programskega jezika, ki ga je Google lansiral leta 2009. Pri uporabi Go-a za razvoj smo pridobili veliko izkušenj in izkušenj, ki jih želimo deliti z bralci, zato imamo ta članek.

Pri izbiri programskega jezika za projekt vedno priporočamo, da najprej razumemo, na čem bo projekt gradil, preden razmislimo, na katerem programskem jeziku bomo gradili. Naj bo izdelek odločilni dejavnik, kako naj bo zgrajen.

Tukaj je nekaj prednosti in slabosti, ki smo jih odkrili pri razvoju z Go, da vam pomagamo razumeti, ali je primeren za vaš naslednji projekt.

Kar imamo radi pri Go

Uporaba jezika Go je v zadnjih letih eksplodirala. Zdi se, da ga uporablja vsak startup za backend sisteme. Obstaja veliko razlogov, zakaj razvijalci menijo, da je tako priljubljen.

Jezik Go je zelo hiter

Go je zelo hiter programski jezik. Ker je Go preveden v strojno kodo, naravno presega programske jezike, ki so interpretativni ali imajo virtualni čas izvajanja. Programi Go se tudi zelo hitro prevajajo in ustvarjajo zelo majhne binarne datoteke. Naš API se prevede v nekaj sekundah, kar povzroči izvršljivo datoteko, ki je majhna le 11,5 MB.

Enostavno za obvladovanje

Sintaksa jezika Go je preprosta in enostavna za razumevanje v primerjavi z drugimi jeziki. Večino sintakse Go si lahko zapomniš v glavi, kar pomeni, da ti ni treba porabiti veliko časa za iskanje stvari. Jezik Go je prav tako zelo čist in enostaven za branje. Programerji, ki ne uporabljajo Go, še posebej tisti, ki so vajeni sintakse v C-stilu, lahko berejo programsko kodo Go in razumejo, kaj se dogaja.

Statični jezik za definicijo tipov

Go je zmogljiv statični jezik za določanje tipov. Obstajajo osnovni tipi, kot so int, bajt in niz. Obstajajo tudi vrste struktur. Kot pri vsakem močno tipiziranem jeziku, sistem tipov omogoča prevajalniku, da pomaga zaznati napake za celoten razred. Jezik Go ima tudi vgrajene sezname in vrste preslikav, ki so prav tako enostavni za uporabo.

Vrsta vmesnika

Jezik Go ima tipe vmesnikov, vsaka struktura pa lahko preprosto zadovolji vmesnik z implementacijo vmesnika. To vam omogoča, da ločite odvisnosti v svoji kodi. Nato lahko simulirate svoje odvisnosti v testih. Z uporabo vmesnikov lahko napišete bolj modularno, preverljivo kodo. Jezik Go ima tudi vrhunske funkcije, kar razvijalcem omogoča pisanje kode na bolj praktičen način.

Standardna knjižnica

Jezik Go ima precej dobro standardno knjižnico. Nudi priročne vgrajene funkcije za obdelavo osnovnih tipov. Nekateri paketi omogočajo enostavno gradnjo spletnega strežnika, upravljanje vhodno-izhodnih podatkov, uporabo šifriranja in obdelavo surovih bajtov. JSON serializacija in deserializacija, ki jo omogoča standardna knjižnica, je zelo preprosta. Z uporabo "tags" lahko določite ime polja JSON poleg polja struct.

Podpora testiranju

Podpora testom je vgrajena v standardno knjižnico in ne zahteva dodatnih odvisnosti. Če imate datoteko z imenom thing.go, napišite teste v drugo datoteko z imenom thing_test.go in zaženite "go test". Go bo te teste opravil hitro.

Orodja za statično analizo

Orodja za statično analizo v jeziku Go so številna in zmogljiva. Ena posebna orodja je gofmt, ki oblikuje kodo po Go-jevem predlogu. To lahko normalizira številna mnenja projekta, kar omogoča vodji nagrajevanja ekipe, da se osredotoči na delo, ki ga je opravila koda. Na vsaki zgradbi uporabljamo gofmt, golint in vet, in če najdemo kakršnakoli opozorila, gradnja ne uspe.

Zbiranje smeti

Pri oblikovanju jezika Go je bilo upravljanje pomnilnika namenoma zasnovano tako, da je lažje kot v C in C++. Cilj dinamične dodeljevanja je zbiranje smeti. Jezik Go naredi uporabo kazalca varnejšo, saj ne dovoljuje operacij s kazalcem. Na voljo je tudi možnost uporabe vrst vrednosti.

Lažji model sočasnosti

Medtem ko sočasno programiranje nikoli ni enostavno, je Go lažje programirati hkrati kot druge jezike. Ustvarjanje lahke niti, imenovane »goroutine«, in komunikacija z njo preko »kanala« je skoraj preprosta naloga, vendar je mogoča za bolj zapletene modele.

Kaj nam ni všeč pri Go

Kot smo že prej omenili, je Go res odličen jezik. Ima čisto sintakso in je hiter za izvajanje. Ima tudi številne prednosti. A celoten programski jezik se ne nanaša le na njegovo sintakso. Tukaj je nekaj težav, s katerimi smo se srečali.

Generikov ni

Prvič, ta problem, kot slon v sobi, je očitno in spregledano dejstvo. V jeziku Go ni generikov. Za razvijalce iz jezikov, kot je Java, je prehod na Go velik izziv. To pomeni, da se stopnja ponovne uporabe kode zmanjša. Čeprav ima jezik Go vrhunske funkcije, če napišete funkcije, kot so "map", "reduce" in "filter", ki so zasnovane za delovanje na eni vrsti zbirke, teh funkcij ne morete ponovno uporabiti za druge različne vrste zbirk. Obstaja veliko načinov za rešitev tega problema, vendar vsi na koncu napišejo več kode, kar zmanjša produktivnost in vzdržljivost.

Vmesnik je impliciten

Čeprav je lepo imeti vmesnike, struktura vmesnike implementira implicitno, ne eksplicitno. To naj bi bila ena od prednosti jezika Go, vendar smo iz strukture težko ugotovili, ali implementira vmesnike ali ne. Resnično lahko razumeš le, če poskušaš program prevesti. Če je program majhen, s tem zagotovo ni nič narobe. Če pa je ta program srednjega do velikega obsega, je težava velika.

Slaba podpora knjižnicam

Podpora knjižnicam Go je neenakomerna. Naš API se integrira s Contentful, vendar slednji nima uradno podprtega Go SDK-ja. To pomeni, da moramo pisati (in vzdrževati!) Veliko kode za zahtevanje in razčlenjevanje podatkov v Contentful. Prav tako se moramo zanašati na knjižnice Elasticsearch tretjih oseb. Go SDK-ji, ki jih ponujajo ponudniki, niso tako priljubljeni kot njihovi Java, Ruby ali JavaScript ustrezniki.

Komunikacija v skupnosti je težavna

Skupnost Go morda ne sprejema predlogov. Pomislite na to v golintovem GitHub repozitoriju:Prijava do hiperpovezave je vidna., uporabnik je zahteval, da GOLINT lahko ne uspe pri sestavljanju, ko najde opozorilo (kar počnemo v projektu). Branilci so to idejo takoj zavrnili. Ker pa je preveč ljudi komentiralo težavo, so vzdrževalci po enem letu končno morali dodati zahtevane funkcije.

Zdi se, da tudi skupnost Go ne mara spletnih ogrodij. Čeprav HTTP knjižnica jezika Go pokriva številne vidike, ne podpira parametrov poti, preverjanja vhodnih podatkov in validacije, prav tako ne podpira prečnih težav, ki so pogoste v spletnih aplikacijah. Ruby razvijalci imajo Rails, Java razvijalci Spring MVC, Python razvijalci pa Django. A veliko razvijalcev Go se raje izogiba uporabi ogrodij. Vendar pa je resnica, da okvirov ni, nasprotno, jih je veliko. A ko enkrat začneš uporabljati okvir za projekt, je skoraj nemogoče izogniti se usodi opustitve.

Razdrobljeno upravljanje odvisnosti

Dolgo časa jezik Go ni imel stabilnega, formalnega upravitelja paketov. Po letih prošnje skupnosti je projekt Go šele pred kratkim izdal godep. Pred tem je bilo že veliko orodij za zapolnitev te vrzeli. V našem projektu uporabljamo zelo zmogljivega govendorja, vendar to pomeni, da je skupnost razdeljena, kar je lahko zelo zmedeno za razvijalce, ki so novi v jeziku Go. Poleg tega skoraj vsi upravljalniki paketov temeljijo na Git repozitorijih, zgodovina Git repozitorijev pa se lahko kadarkoli spremeni. Primerjaj ga z Maven Central, ki nikoli ne izbriše ali spremeni knjižnic, na katerih je tvoj projekt odvisen.

Odloči se, ali boš uporabil Go ali ne

Včasih moraš razmisliti o stroju. Ko pošiljate in prejemate bajte. Ko upravljate tisoče sočasnih procesov. Morda pišete tudi operacijski sistem, kontejnerski sistem ali blockchain vozlišče. V takih primerih vas generiki najverjetneje ne bodo zanimali. Ker si zaposlen s tem, da iz čipa iztisneš zmogljivost na nanosekundo.

Vendar pa je velikokrat treba razmisliti o ljudeh. Podatki poslovnih področij, s katerimi morate delati: stranke, zaposleni, izdelki, naročila. Morate napisati poslovno logiko, ki deluje na teh domenskih entitetah, in to morate vzdrževati več let. In mora se spoprijeti s spreminjajočimi se potrebami, in čim hitreje, tem bolje. V takih primerih je pomembna izkušnja razvijalca.

Go je programski jezik, ki ceni strojni čas bolj kot človeški čas. Včasih je v vašem poklicu zmogljivost stroja ali programa najpomembnejša. V teh primerih je Go lahko dobra alternativa za C ali C++. Ko pa pišete tipično n-tier aplikacijo, se pogosto pojavijo ozka grla v zmogljivosti v bazi podatkov in, kar je še pomembneje, v načinu modeliranja podatkov.

Pri odločitvi o uporabi jezika Go upoštevajte naslednja pravila:

  • Če gre za bajte, je jezik Go morda dobra izbira.
  • Če delate s podatki, potem jezik Go morda ni dobra izbira.


To se lahko nekoč spremeni. Jezik in skupnost Go sta še vedno mlada. Morda nas bodo presenetili z dodatkom generičnih zdravil; Ali pa bo priljubljen spletni okvir močno zmagal. Za zdaj pa bomo ostali pri zrelih programskih jezikih z univerzalno podporo, zrelim upravljanjem odvisnosti in osredotočenostjo na modeliranje poslovnih domen.





Prejšnji:Konfiguracija Common.LoggingLog
Naslednji:c# discuz POST
Objavljeno na 27. 05. 2019 10:09:35 |
Čeprav nisem imel veliko stika z jezikom Go, je bil dobro napisan
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com