Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 10198|Atbildi: 1

Plusi un mīnusi programmēšanai Go

[Kopēt saiti]
Publicēts 27.05.2019 09:57:10 | | |
Cik populāra ir Go valoda? Ārvalstis, piemēram, Google, AWS, Cloudflare, CoreOS utt., un vietējie uzņēmumi, piemēram, Qiniu un Alibaba, ir sākuši izmantot Go valodu, lai izstrādātu savus ar mākoņdatošanu saistītos produktus plašā mērogā. Kam jā un bet jāpievērš uzmanība, lietojot Go valodu?

Nesen mēs uzrakstījām API, izmantojot Go valodu, atvērtā koda programmēšanas valodu, ko Google uzsāka 2009. gadā. Izmantojot Go izstrādei, mēs esam ieguvuši lielu pieredzi un pieredzi, un mēs vēlamies to dalīties ar lasītājiem, tāpēc mums ir šis raksts.

Izvēloties programmēšanas valodu projektam, mēs vienmēr iesakām saprast, ko projekts veidos, pirms apsveram, uz kuru programmēšanas valodu balstīties. Ļaujiet produktam būt izšķirošajam faktoram, kā tas būtu jāveido.

Šeit ir daži plusi un mīnusi, ko esam atklājuši, izstrādājot kopā ar Go, lai palīdzētu jums saprast, vai tas ir piemērots jūsu nākamajam projektam.

Kas mums patīk Go

Go valodas izmantošana pēdējos gados ir eksplodējusi. Šķiet, ka katrs jaunuzņēmums to izmanto aizmugures sistēmām. Ir daudz iemeslu, kāpēc izstrādātāji to uzskata par tik populāru.

Go valoda ir ļoti ātra

Go ir ļoti ātra programmēšanas valoda. Tā kā Go ir kompilēts mašīnkodā, tas dabiski pārspēj interpretējošas vai virtuālas izpildvalodas programmēšanas valodas. Go programmas arī kompilējas ļoti ātri un ražo ļoti mazus bināros failus. Mūsu API tiek kompilēts tikai dažu sekunžu laikā, kā rezultātā tiek iegūts izpildāms fails, kas ir tikai 11,5 MB.

Viegli apgūstams

Go valodas sintakse ir vienkārša un viegli uztverama, salīdzinot ar citām valodām. Jūs varat iegaumēt lielāko daļu Go sintakses savā galvā, kas nozīmē, ka jums nav jātērē daudz laika, meklējot lietas. Go valoda ir arī ļoti tīra un viegli lasāma. Non-Go programmētāji, īpaši tie, kas ir pieraduši pie C stila sintakses, var lasīt Go programmas kodu un saprast, kas notiek.

Statiskā tipa definīcijas valoda

Go ir spēcīga statiska tipa definēšanas valoda. Ir pamata veidi, piemēram, int, baits un virkne. Ir arī struktūru veidi. Tāpat kā jebkurā stipri drukātā valodā, tipu sistēma ļauj kompilatoram palīdzēt uztvert kļūdas visai klasei. Go valodā ir arī iebūvēti sarakstu un kartēšanas veidi, un tie ir arī viegli lietojami.

Interfeisa tips

Go valodai ir interfeisa tipi, un jebkura struktūra var vienkārši apmierināt saskarni, ieviešot saskarni. Tas ļauj atsaistīt atkarības kodā. Pēc tam testos varat simulēt atkarības. Izmantojot saskarnes, varat rakstīt modulārāku, pārbaudāmāku kodu. Go valodai ir arī pirmās klases funkcijas, kas ļauj izstrādātājiem rakstīt kodu praktiskākā veidā.

Standarta bibliotēka

Go valodai ir diezgan laba standarta bibliotēka. Tas nodrošina ērtas iebūvētas funkcijas pamata veidu apstrādei. Dažas pakotnes ļauj viegli izveidot tīmekļa serveri, apstrādāt I/O, izmantot šifrēšanu un manipulēt ar neapstrādātiem baitiem. JSON serializācija un deserializācija, ko nodrošina standarta bibliotēka, ir ļoti vienkārša. Izmantojot "tags", jūs varat norādīt JSON lauka nosaukumu blakus struct laukam.

Testēšanas atbalsts

Testa atbalsts ir iebūvēts standarta bibliotēkā, un tam nav nepieciešamas papildu atkarības. Ja jums ir fails ar nosaukumu thing.go, ierakstiet testus citā failā ar nosaukumu thing_test.go un palaidiet "go test". Go ātri veiks šos testus.

Statiskās analīzes rīki

Go valodas statiskās analīzes rīki ir daudz un jaudīgi. Viens konkrēts rīks ir gofmt, kas formatē kodu atbilstoši Go ieteiktajam stilam. Tas var normalizēt daudzus projekta viedokļus, ļaujot komandas balvu vadītājam koncentrēties uz koda paveikto darbu. Mēs palaižam gofmt, golint un vet katrā būvē, un, ja mēs atradīsim brīdinājumus, būvēšana neizdosies.

Atkritumu savākšana

Izstrādājot Go valodu, atmiņas pārvaldība tika apzināti izstrādāta tā, lai tā būtu vieglāka nekā C un C++. Dinamiskās sadales objekts ir atkritumu savākšana. Go valoda padara rādītāja lietošanu drošāku, jo tā nepieļauj rādītāja darbības. Tiek nodrošināta arī iespēja izmantot vērtību tipus.

Vienkāršāks vienlaicīguma modelis

Lai gan vienlaicīga programmēšana nekad nav vienkārša, Go ir vieglāk programmēt vienlaicīgi nekā citas valodas. Viegla pavediena izveide ar nosaukumu "goroutine" un saziņa ar to, izmantojot "kanālu", ir gandrīz vienkāršs uzdevums, taču tas ir iespējams sarežģītākiem modeļiem.

Kas mums nepatīk Go

Kā mēs apspriedām iepriekš, Go patiešām ir lieliska valoda. Tam ir tīra sintakse, un tas ir ātri izpildāms. Tam ir arī daudz priekšrocību. Bet visa programmēšanas valoda neattiecas tikai uz tās sintaksi. Šeit ir dažas no problēmām, ar kurām mēs saskārāmies.

Nav ģenērisku zāļu

Pirmkārt, šī problēma, tāpat kā zilonis istabā, ir acīmredzams un aizmirsts fakts. Go valodā nav ģenērisko zāļu. Izstrādātājiem no tādām valodām kā Java pāreja uz Go ir milzīgs šķērslis, kas jāpārvar. Tas nozīmē, ka koda atkārtotas izmantošanas līmenis ir samazināts. Lai gan Go valodai ir pirmās klases funkcijas, ja rakstāt tādas funkcijas kā "karte", "samazināšana" un "filtrs", kas paredzētas darbam ar viena veida kolekcijām, šīs funkcijas nevar atkārtoti izmantot citiem dažādiem kolekciju tipiem. Ir daudz veidu, kā atrisināt šo problēmu, taču tie visi galu galā raksta vairāk koda, kas samazina produktivitāti un uzturamību.

Interfeiss ir netiešs

Lai gan ir patīkami, ka ir saskarnes, struktūra ievieš saskarnes netieši, nevis tieši. Tiek teikts, ka tā ir viena no Go valodas stiprajām pusēm, taču mums bija grūti pateikt no struktūras, vai tā ieviesa saskarnes vai nē. Jūs varat patiešām saprast tikai, mēģinot kompilēt programmu. Ja programma ir maza, tajā noteikti nav nekas slikts. Bet, ja šī programma ir vidēja vai liela mēroga, problēmas ir lielas.

Slikts bibliotēkas atbalsts

Go bibliotēkas atbalsts ir nevienmērīgs. Mūsu API integrējas ar Contentful, bet pēdējam nav oficiāli atbalstīta Go SDK. Tas nozīmē, ka mums ir jāraksta (un jāuztur!) Daudz koda, lai pieprasītu un parsētu datus saturā. Mums ir jāpaļaujas arī uz trešo pušu Elasticsearch bibliotēkām. Piegādātāju nodrošinātie Go SDK nav tik populāri kā Java, Ruby vai JavaScript kolēģi.

Kopienas komunikācija ir sarežģīta

Go kopiena var nepieņemt ieteikumus. Apsveriet to golinta GitHub repozitorijā:Hipersaites pieteikšanās ir redzama., lietotājs pieprasīja, lai Golint varētu neizdoties, kad tas atrada brīdinājumu (ko mēs darām projektā). Aizstāvji nekavējoties noraidīja ideju. Tomēr, tā kā pārāk daudz cilvēku komentēja šo jautājumu, pēc gada uzturētājiem beidzot bija jāpievieno pieprasītās funkcijas.

Šķiet, ka arī Go kopienai nepatīk tīmekļa sistēmas. Lai gan Go valodas HTTP bibliotēka aptver daudzus aspektus, tā neatbalsta ceļa parametrus, ievades pārbaudi un validāciju, kā arī neatbalsta transversālas problēmas, kas izplatītas tīmekļa lietojumprogrammās. Ruby izstrādātājiem ir Rails, Java izstrādātājiem ir Spring MVC, un Python izstrādātājiem ir Django. Bet daudzi Go izstrādātāji izvēlas izvairīties no ietvaru izmantošanas. Tomēr realitāte ir tāda, ka nav ietvaru, gluži pretēji, ir daudz. Bet, kad sākat izmantot projekta ietvaru, ir gandrīz neiespējami izvairīties no pamešanas likteņa.

Sadrumstalota atkarību pārvaldība

Ilgu laiku Go valodai nebija stabila, formāla pakotņu pārvaldnieka. Pēc gadiem ilgas kopienas ubagošanas, Go projekts tikai nesen izlaida godep. Pirms tam jau bija daudz rīku, lai aizpildītu šo plaisu. Mēs savā projektā izmantojam ļoti jaudīgu govendor, bet tas nozīmē, ka kopiena ir sadalīta, kas var būt ļoti mulsinoši izstrādātājiem, kuri ir iesācēji Go valodā. Turklāt gandrīz visus pakotņu pārvaldniekus darbina Git krātuves, un Git repozitoriju vēsture var mainīties jebkurā laikā. Salīdziniet to ar Maven Central, kas nekad neizdzēš vai nemaina bibliotēkas, no kurām ir atkarīgs jūsu projekts.

Izlemiet, vai lietot Go vai nē

Dažreiz jums ir jādomā par mašīnu. Kad sūtāt un saņemat baitus. Kad jūs pārvaldāt tūkstošiem vienlaicīgu procesu. Iespējams, rakstāt arī operētājsistēmu, konteineru sistēmu vai blokķēdes mezglu. Šādos gadījumos, visticamāk, jums nerūpēs ģenēriskie medikamenti. Jo jūs esat aizņemts ar mikroshēmas veiktspējas izspiešanu nanosekundē.

Tomēr daudzas reizes jums ir jādomā par cilvēkiem. Biznesa jomas dati, ar kuriem jāstrādā: klienti, darbinieki, produkti, pasūtījumi. Jums ir jāraksta biznesa loģika, kas darbojas šajās domēna entītijās, un šī biznesa loģika ir jāuztur daudzus gadus. Un tai ir jātiek galā ar mainīgajām vajadzībām, un jo ātrāk, jo labāk. Šādos gadījumos izstrādātāja pieredze ir svarīga.

Go ir programmēšanas valoda, kas novērtē mašīnas laiku vairāk nekā cilvēka laiku. Dažreiz jūsu jomā mašīnas vai programmas veiktspēja ir viskritiskākā. Šādos gadījumos Go var būt laba C vai C++ alternatīva. Bet, rakstot tipisku n līmeņa lietojumprogrammu, datu bāzē bieži rodas veiktspējas vājās vietas un, vēl svarīgāk, kā jūs modelēsiet datus.

Izlemjot, vai lietot Go valodu, ņemiet vērā šādus īkšķa noteikumus:

  • Ja jums ir darīšana ar baitiem, tad Go valoda varētu būt laba izvēle.
  • Ja jums ir darīšana ar datiem, tad Go valoda var nebūt laba izvēle.


Tas var mainīties kādu dienu nākotnē. Go valoda un kopiena joprojām ir jauna. Viņi var mūs pārsteigt ar ģenērisko zāļu pievienošanu; Vai arī populārs tīmekļa ietvars uzvarēs lieli. Tomēr pagaidām mēs paliksim pie nobriedušām programmēšanas valodām ar universālu atbalstu, nobriedušu atkarību pārvaldību un koncentrēšanos uz biznesa domēna modelēšanu.





Iepriekšējo:Common.LoggingLog konfigurācija
Nākamo:c# discuz POST
Publicēts 27.05.2019 10:09:35 |
Lai gan man nebija daudz kontakta ar Go valodu, tā bija labi uzrakstīta
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com