Rust and Go er begge fantastiske
for det første er det virkelig vigtigt at sige, at både Go og Rust er absolut fremragende programmeringssprog. De er moderne, magtfulde, bredt adopterede og tilbyder fremragende ydeevne. Du har måske læst artikler og blogindlæg, der sigter mod at overbevise dig om, at Go er bedre end Rust, eller omvendt. Men det giver virkelig ingen mening; hvert programmeringssprog repræsenterer et sæt afvejninger. Hvert sprog er optimeret til forskellige ting, så dit valg af sprog skal bestemmes af, hvad der passer dig, og de problemer, du vil løse med det.
i denne artikel vil jeg forsøge at give et kort overblik over, hvor jeg synes, at gå er det ideelle valg, og hvor jeg synes Rust er et bedre alternativ. Ideelt set bør du dog have en arbejdskendskab til begge sprog. Mens de er meget forskellige i syntaks og stil, er både Rust og Go førsteklasses værktøjer til opbygning af programmer. Med det sagt, lad os se nærmere på de to sprog.
lighederne
Rust and Go har meget til fælles, hvilket er en af grundene til, at du ofte hører dem nævnt sammen. Hvad er nogle af de fælles mål for begge sprog?
Rust er et lavt niveau statisk-typet multi-paradigme programmeringssprog, der er fokuseret på sikkerhed og ydeevne.
—Gints Dreimanis
Go er et open source programmeringssprog, der gør det nemt at opbygge enkle, pålidelige og effektive programmer.
—Golang.org
Hukommelsessikkerhed
både Go og Rust tilhører gruppen af moderne programmeringssprog, hvis prioritet er hukommelsessikkerhed. Det er blevet klart over mange årtier med at bruge ældre sprog som C og C++, at en af de største årsager til fejl og sikkerhedssårbarheder er at få adgang til hukommelse usikkert eller forkert. Rust and Go håndterer dette problem på forskellige måder, men begge sigter mod at være smartere og sikrere end andre sprog om styring af hukommelse og hjælpe dig med at skrive korrekte og performante programmer.
hurtige, kompakte eksekverbare
de er begge kompilerede sprog, hvilket betyder, at dine programmer oversættes direkte til eksekverbar maskinkode, så du kan implementere dit program som en enkelt binær fil; i modsætning til fortolkede sprog som Python og Ruby behøver du ikke distribuere en tolk og masser af biblioteker og afhængigheder sammen med dit program, hvilket er et stort plus. Dette gør også både Rust og Go-programmer ekstremt hurtige i forhold til fortolkede sprog.
generelle sprog
Rust og Go er også både kraftfulde, skalerbare generelle programmeringssprog, som du kan bruge til at udvikle alle former for moderne programmer, fra internetapplikationer til distribuerede mikroservices eller fra indlejrede mikrocontrollere til mobile apps. Begge har fremragende standardbiblioteker og et blomstrende tredjepartsøkosystem, samt stor kommerciel support og en stor brugerbase. De har begge eksisteret i mange år, og vil fortsat blive brugt i vid udstrækning i de kommende år. At lære enten Go eller Rust i dag vil være en sund investering af din tid og kræfter.
pragmatisk programmeringsstil
ingen af dem er primært funktionelle sprog (som f.eks. I stedet, mens både Go og Rust har funktioner forbundet med funktionel og objektorienteret programmering, er de pragmatiske sprog, der sigter mod at løse problemer på den måde, der er mest hensigtsmæssig, snarere end at tvinge dig til en bestemt måde at gøre ting på. (Hvis du kan lide den funktionelle programmeringsstil, finder du dog mange flere faciliteter til det i Rust, fordi Rust har mange flere faciliteter end Go generelt.)
Vi kan diskutere om, hvad et ‘objektorienteret’ sprog er, men det er rimeligt at sige, at stilen med objektorienteret programmering, som C++, Java eller C# Brugere ville forvente, ikke er til stede i enten Go eller Rust.
—Jack Mott
udvikling i skala
både Rust og Go har nogle nyttige funktioner, der gør dem egnede til programmering i de store, hvad enten det betyder store hold eller store kodebaser eller begge dele.
for eksempel, mens C-programmører i årevis har argumenteret for, hvor de skal placere deres parenteser, og om kode skal indrykkes med faner eller mellemrum, eliminerer både Rust og Go sådanne problemer fuldstændigt ved hjælp af et standardformateringsværktøj (for Go,rustfmt
for Rust), som omskriver din kode automatisk ved hjælp af den kanoniske stil. Det er ikke, at denne særlige stil er så vidunderlig i sig selv: det er standardiseringen, som Rust and Go-programmører sætter pris på.
> gofmt
‘s stil er ingen favorit, endnu gofmt
er alles favorit.
—Rob Pike
et andet område, hvor begge sprog scorer højt, er i byggepipelinen. Begge har fremragende, indbygget, højtydende standardbyggeri og afhængighedsstyringsværktøjer; ikke mere brydning med komplekse tredjepartsbyggesystemer og at skulle lære en ny hvert par år.
Building Go and Rust code, der er kommet fra en Java og Ruby baggrund i min tidlige karriere, følte mig som en umulig vægt fra mine skuldre. Da jeg var hos Google, var det en lettelse at komme på tværs af en tjeneste, der blev skrevet i Go, fordi jeg vidste, at det ville være let at bygge og køre. Dette har også været tilfældet med Rust, selvom jeg kun har arbejdet på det i meget mindre skala. Jeg håber, at dagene med uendeligt konfigurerbare byggesystemer er døde, og sprog sendes alle med deres egne specialbyggede byggeværktøjer, der bare fungerer ud af kassen.
– Sam Rose
så hvad er alt det ballade om?
med alt det i tankerne, og da du ser, at begge sprog er så veldesignede og magtfulde, undrer du dig måske over, hvad alle de hellige krige handler om (også mig). Hvorfor gør folk sådan en ståhej om ‘Go versus Rust’, at komme ind i vrede sociale medier spats og skrive lange blogindlæg om, hvordan kun en idiot ville bruge Rust, eller at Go ikke er et rigtigt programmeringssprog eller hvad som helst. Det kan få dem til at føle sig bedre, men det hjælper dig ikke nøjagtigt, som nogen, der prøver at beslutte, hvilket sprog de skal bruge til dit projekt, eller som du skal lære at fremme din programmeringskarriere. En klog person træffer ikke vigtige valg baseret på, hvem der råber højest.
lad os fortsætte vores voksne diskussion nu ved at se på nogle områder, hvor en rimelig person måske foretrækker det ene sprog frem for det andet.
ydeevne
Vi har sagt, at både Go og Rust producerer ekstremt hurtige programmer, fordi de er kompileret til indbygget maskinkode uden at skulle gå gennem en tolk eller virtuel maskine. Rust ‘ s ydeevne er dog særligt fremragende. Det kan sammenlignes med C og C++, som ofte betragtes som de højeste ydeevne kompilerede sprog, men i modsætning til disse ældre sprog tilbyder det også hukommelsessikkerhed og samtidighedssikkerhed til stort set ingen omkostninger i eksekveringshastighed. Rust giver dig også mulighed for at oprette komplekse abstraktioner uden at betale en præstationsstraf ved kørsel.
til sammenligning, selvom Go-programmer også fungerer ekstremt godt, er Go primært designet til udviklingshastighed (inklusive kompilering) snarere end eksekveringshastighed. Go compiler bruger ikke meget tid på at generere den mest effektive mulige maskinkode; det bekymrer sig mere om at kompilere masser af kode hurtigt. Så Rust vil normalt slå Go I run – time benchmarks.
Rusts driftstid er også konsistent og forudsigelig, fordi den ikke bruger affaldssamling. Go ‘ s garbage collector er meget effektiv, og den er optimeret til at gøre sin stop-the-verden pauser så korte som muligt (og bliver kortere med hver ny GO-udgivelse). Men affaldsindsamling introducerer uundgåeligt en vis uforudsigelighed i den måde, programmer opfører sig på, hvilket kan være et alvorligt problem i nogle applikationer, såsom indlejrede systemer.da Rust sigter mod at give programmøren fuld kontrol over det underliggende udstyr, er det muligt at optimere Rustprogrammerne, så de er temmelig tæt på maskinens maksimale teoretiske ydeevne. Dette gør Rust til et fremragende valg til områder, hvor eksekveringshastigheden slår alle andre overvejelser, såsom spilprogrammering, operativsystemkerner, netsøgerkomponenter og realtidsstyringssystemer.
enkelhed
det betyder ikke noget, hvor hurtigt et programmeringssprog er, hvis ingen kan finde ud af, hvordan man bruger det. Go blev bevidst opfattet som en reaktion mod den stadigt voksende kompleksitet af sprog som C++; Det har meget lidt syntaks, meget få søgeord og faktisk få funktioner. Det betyder, at det ikke tager lang tid at lære Go-sproget til det punkt, hvor du kan skrive nyttige programmer i det.
Go er utrolig let at lære. Jeg ved, at dette er en ofte udråbt fordel, men jeg var virkelig overrasket over, hvor hurtigt jeg var i stand til at være produktiv. Takket være sproget, dokumenterne og værktøjerne skrev jeg interessant, forpligtet kode efter bogstaveligt talt to dage.
– tidlige indtryk af Go fra en Rust programmør
nøgleordet her er enkelhed. Enkel er ikke det samme som let, helt sikkert, men et lille, enkelt sprog er lettere at lære end et stort, komplekst. Der er bare ikke så mange forskellige måder at gøre ting på, så al velskrevet Go-kode har en tendens til at se ens ud. Det er nemt at bare dykke ind i en ukendt tjeneste og forstå, hvad det gør.
fmt.Println("Gopher's Diner Breakfast Menu")for dish, price := range menu { fmt.Println(dish, price)}
(i Code Club-serien gør jeg netop det: Vælg Go-projekter semi-tilfældigt fra GitHub og udforsk dem med en gruppe go-begyndere for at se, hvor meget af koden vi kan forstå. Det viser sig altid at være mere, end vi forventede!)
selvom kernesproget er lille, Er Go ‘ s standardbibliotek meget kraftfuldt. Det betyder, at din indlæringskurve også skal inkludere de dele af standardbiblioteket, du har brug for, ikke bare gå syntaks. På den anden side betyder flytning af funktionalitet ud af sproget og ind i standardbiblioteket, at du kun kan fokusere på at lære de biblioteker, der er relevante for dig lige nu.
Go er også designet til udvikling af programmer i stor skala, med store kodebaser og store teams. I disse situationer er det vigtigt, at nye udviklere kan komme op i fart så hurtigt som muligt.
med Go får du tingene gjort—hurtigt. Go er et af de mest produktive sprog, jeg nogensinde har arbejdet med. Mantraet er: >løs reelle problemer i dag>.
– Matthias Endler
funktioner
Rust understøtter mere kompleksitet end flere andre programmeringssprog, derfor kan du opnå mere med det. For eksempel understøtter det generiske stoffer.
—Devathon
Rust er specielt designet til at omfatte masser af kraftfulde og nyttige funktioner til at hjælpe programmører gøre mest med den mindste kode. For eksempel giver Rust ‘ s match
funktion dig mulighed for at skrive fleksibel, udtryksfuld logik ganske kortfattet:
fn is_prime(n: u64) -> bool { match n { 0...1 => false, _ => !(2..n).any(|d| n % d == 0), }}
fordi Rust gør meget, betyder det, at der er meget at lære, især i starten. Men det er okay: der er også meget at lære i C++ eller Java, og du får ikke de avancerede funktioner, der følger med Rust, som hukommelsessikkerhed. At kritisere Rust for at være et komplekst sprog går glip af pointen: det er designet til at være udtryksfuldt, hvilket betyder at have mange funktioner, og i mange situationer er det, hvad du vil have fra et programmeringssprog. Der er en indlæringskurve, helt sikkert, men når du først er i gang med det, har du det godt.
Rust konkurrerer om mindshare med C++ og D for programmører, der er parat til at acceptere mere kompleks syntaks og semantik (og formodentlig højere læsbarhedsomkostninger) til gengæld for den maksimale mulige ydelse.
—Dave Cheney
samtidighed
de fleste sprog har en form for støtte til samtidig programmering (gør flere ting på en gang), men Go blev designet til dette job fra bunden. I stedet for at bruge operativsystemtråde giver Go et let alternativ: goroutines. Hver goroutine er en uafhængig eksekverende Go-funktion, som Go scheduler vil kortlægge til en af OS-trådene under dens kontrol. Dette betyder, at planlæggeren meget effektivt kan styre et stort antal samtidige goroutiner ved kun at bruge et begrænset antal os-tråde.
derfor kan du køre millioner af samtidige goroutiner i et enkelt program uden at skabe alvorlige ydelsesproblemer. Det gør Go til det perfekte valg til samtidige applikationer i høj skala som f.eks.
Go har også hurtige, sikre og effektive måder for goroutines at kommunikere og dele data ved hjælp af kanaler. Go ‘ s concurrency support føles godt designet og en fornøjelse at bruge. Ræsonnement om samtidige programmer er generelt svært, og opbygning af pålidelige, korrekte samtidige programmer er en udfordring på ethvert sprog. Fordi det blev indbygget i sproget fra starten, selvom, i stedet for at være en eftertanke, samtidig programmering I Go er omtrent så enkel og velintegreret som det med rimelighed kunne være.
Go gør det meget nemt at opbygge en pænt indregnet applikation, der udnytter samtidigheden fuldt ud, mens den implementeres som et sæt mikroservices. Rust kan også gøre disse ting, men det er uden tvivl lidt hårdere. I nogle henseender betyder Rust ‘ s besættelse af at forhindre hukommelsesrelaterede sikkerhedssårbarheder, at programmører skal gå ud af deres måde at udføre opgaver, der ville være enklere på andre sprog, herunder Go.
—Sonya Koptyev
samtidshistorien i Rust er meget ny til sammenligning og stadig stabiliserende, men den er under meget aktiv udvikling, så se dette rum. For eksempel giver Rust ‘ s rayon library en meget elegant og let måde at omdanne sekventielle beregninger til parallelle.
at have let syntaks til gydning af GO-rutiner og bruge kanaler er virkelig rart. Det viser virkelig kraften i syntaks, at sådanne små detaljer får samtidig programmering til at føles så meget pænere end på andre sprog.
– tidlige indtryk af Go fra en Rust-programmør
selvom det måske er lidt mindre ligetil at implementere samtidige programmer i Rust, er det stadig muligt, og disse programmer kan drage fordel af Rusts garantier for sikkerhed. Et godt eksempel er standardbibliotekets Mutex
klasse: I Go kan du glemme at få en mutekslås, før du får adgang til noget, men Rust vil ikke lade dig gøre det.
Go er fokuseret på samtidighed som et førsteklasses koncept. Det betyder ikke, at du ikke kan finde aspekter af Go ‘ s skuespillerorienterede samtidighed i Rust, men det overlades som en øvelse til programmøren.
—Dave Cheney
sikkerhed
vi så tidligere, at både Go og Rust sigter på forskellige måder for at forhindre en stor klasse af almindelige programmeringsfejl, der har at gøre med hukommelsesstyring. Men især Rust går meget langt for at sikre, at du ikke kan gøre noget usikkert, som du ikke mente at gøre.
Rust ‘ s meget strenge og pedantiske compiler kontrollerer hver eneste variabel, du bruger, og hver hukommelsesadresse, du refererer til. Det undgår mulige data race betingelser og informerer dig om udefineret adfærd. Problemer med samtidighed og hukommelse er grundlæggende umulige at komme i den sikre delmængde af Rust.
Hvorfor Rust?
dette vil gøre programmering i Rust til en anden oplevelse end næsten alle andre sprog, og det kan være en udfordrende i starten. Men for mange mennesker er det hårde arbejde det værd.
for mig er den vigtigste fordel ved Rust en følelse af, at kompilatoren har min ryg og ikke slipper igennem nogen fejl, den muligvis kan opdage (alvorligt føles det som magi nogle gange).
– Nosek
mange sprog, herunder Go, har faciliteter til at hjælpe programmører med at undgå fejl, men Rust tager dette til et nyt niveau, så potentielt forkerte programmer ikke engang kompilerer.
med Rust har biblioteksprogrammereren mange værktøjer til at forhindre, at hendes brugere laver fejl. Rust giver os muligheden for at sige, at vi > ejer> et specifikt stykke data; det er ikke muligt for noget andet at kræve ejerskab, så vi ved, at intet andet vil være i stand til at ændre det. Jeg kan ikke tænke på en tid, jeg nogensinde har fået så mange værktøjer til at forhindre utilsigtet misbrug før. Det er en vidunderlig følelse.
– Sam Rose
“kæmper med lånekontrollen” er et almindeligt syndrom for nye Rust-programmører, men i de fleste tilfælde er de problemer, den finder, ægte bugs (eller i det mindste potentielle bugs) i din kode. Det kan tvinge dig til grundlæggende at omarkitekt dit program for at undgå at løbe ind i disse problemer; og det er en god ting, når korrekthed og pålidelighed er din højeste prioritet. Hvad er meningen med et sprog, der ikke ændrer den måde, du programmerer på? De lektioner, som Rust lærer om sikkerhed, kan også være nyttige, når du arbejder på andre sprog.
Hvis du vælger Rust, har du normalt brug for de garantier, som Sproget giver: sikkerhed mod nulpegere og dataløb, forudsigelig kørselsadfærd og total kontrol over udstyret. Hvis du ikke har brug for nogen af disse funktioner, kan Rust være et dårligt valg til dit næste projekt. Det er fordi disse garantier kommer med en pris: ramp-up tid. Du bliver nødt til at aflære dårlige vaner og lære nye koncepter. Chancerne er, at du vil kæmpe meget med lånekontrollen, når du starter.
– Matthias Endler
hvor udfordrende du finder Rusts programmeringsmodel afhænger sandsynligvis af, hvilken tidligere erfaring du har på andre sprog. Python-eller Ruby-programmører kan finde det restriktivt; andre vil være glade.
Hvis du er en C-eller C++ – programmør, der har brugt uger på at jagte hukommelsessikkerhedsfejl på disse sprog, vil du virkelig sætte pris på Rust. “Bekæmpelse af lånekontrollen “bliver” kompilatoren kan opdage det? Sejt!”
—Nosek
Scale
dagens serverprogrammer omfatter titusindvis af kodelinjer, der arbejdes på af hundredvis eller endda tusindvis af programmører og opdateres bogstaveligt hver dag. Go blev designet og udviklet for at gøre arbejdet i dette miljø mere produktivt. Go ‘ s designovervejelser omfatter streng afhængighedsstyring, programmelarkitekturens tilpasningsevne som systemer vokser og robusthed på tværs af grænserne mellem komponenter.
– Rob Pike
Når du arbejder på et problem alene eller i små hold, er valget af et simpelt sprog eller et rigt sprog et spørgsmål om præference. Men efterhånden som programmet bliver større og mere komplekst, og holdene bliver større, begynder forskellene virkelig at vise sig. For store applikationer og distribuerede systemer er eksekveringshastigheden mindre vigtig end udviklingshastigheden: et bevidst minimalt sprog som Go reducerer rampetiden for nye udviklere og gør det lettere for dem at arbejde med en stor kodebase.
med Go er det lettere som juniorudvikler at være mere produktiv og sværere som mid-level Udvikler at introducere skøre abstraktioner, der vil forårsage problemer ned ad linjen. Af disse grunde er Rust mindre overbevisende end at gå til udvikling af virksomhedsprogrammer.
– Loris Cro
når det kommer til udvikling af programmer i det store, er clear bedre end smart. Go ‘ s begrænsninger gør det faktisk mere velegnet til virksomheder og store organisationer end mere komplekse og kraftfulde sprog som Rust.
forskellene
selvom Rust og Go begge er populære, moderne, udbredte sprog, er de ikke rigtig konkurrenter i den forstand, at de bevidst målretter mod helt forskellige brugssager. Go ‘s hele tilgang til programmering er radikalt anderledes end Rust’ s, og hvert sprog passer til nogle mennesker, mens de irriterer andre. Det er helt fint, og hvis både Rust og Go gjorde mere eller mindre de samme ting på mere eller mindre samme måde, ville vi ikke rigtig have brug for to forskellige sprog.
så kan vi få en fornemmelse af de respektive naturer af Rust og gå ved at finde spørgsmål, som de tager drastisk forskellige tilgange? Lad os finde ud af det.
Garbage collection
“at garbage-collect, eller ikke at garbage-collect” er et af de spørgsmål, der ikke har noget rigtigt svar. Affaldsindsamling og automatisk hukommelsesstyring generelt gør det hurtigt og nemt at udvikle pålidelige, effektive programmer, og for nogle mennesker gør det vigtigt. Men andre siger, at garbage collection, med sin ydeevne overhead og stop-the-verden pauser, gør programmer opfører sig uforudsigeligt på run-time, og introducerer uacceptabel latenstid. Debatten rumler videre.
Go er et meget andet sprog til Rust. Selvom begge vagt kan beskrives som systemsprog eller erstatninger for C, har de forskellige mål og applikationer, stilarter for sprogdesign og prioriteter. Affaldssamling er en virkelig enorm differentiator. At have GC I Go gør sproget meget enklere og mindre, og let at begrunde.
ikke at have GC i Rust gør det virkelig hurtigt (især hvis du har brug for garanteret latenstid, ikke kun høj gennemstrømning) og muliggør funktioner og programmeringsmønstre, der ikke er mulige I Go (eller i det mindste ikke uden at ofre ydeevne).
—PingCAP
tæt på metallet
historien om computerprogrammering har været en historie om stadig mere sofistikerede abstraktioner, der lader programmereren løse problemer uden at bekymre sig for meget om, hvordan den underliggende maskine faktisk fungerer. Det gør programmer lettere at skrive og måske mere bærbare. Men for mange programmer er adgang til udstyret og præcis kontrol af, hvordan programmet udføres, vigtigere. Rust sigter mod at lade programmører komme “tættere på metallet” med mere kontrol, men gå abstracts væk de arkitektoniske detaljer for at lade programmører komme tættere på problemet.
begge sprog har et andet omfang. Golang skinner til at skrive mikroservices og til typiske “DevOps” – opgaver, men det er ikke et systemprogrammeringssprog. Rust er stærkere til opgaver, hvor samtidighed, sikkerhed og/eller ydeevne er vigtige; men det har en stejlere indlæringskurve end Go.
– Matthias Endler
skal gå hurtigere
Jeg har skrevet andetsteds, at ydeevne er mindre vigtig end læsbarhed for de fleste programmer. Men når ydeevne betyder noget, betyder det virkelig noget. Rust foretager en række designafvejninger for at opnå den bedst mulige eksekveringshastighed. I modsætning hertil er Go mere bekymret for enkelhed, og det er villig til at ofre nogle (run-time) præstationer for det. Men Go ‘ s byggehastighed er uovervindelig, og det er vigtigt for store kodebaser.
Rust er hurtigere end gå. I benchmarks ovenfor var Rust hurtigere, og i nogle tilfælde en størrelsesorden hurtigere. Men før du løber af med at vælge at skrive alt i Rust, skal du overveje, at Go ikke var så langt bag det i mange af disse benchmarks, og det er stadig meget hurtigere end Java, C#, JavaScript, Python og så videre.
Hvis det, du har brug for, er top-of-the-line ydeevne, så vil du være foran spillet, der vælger et af disse to sprog. Hvis du bygger en internettjeneste, der håndterer høj belastning, som du vil være i stand til at skalere både lodret og vandret, passer begge sprog perfekt til dig.
—Andreas Lader
korrekthed
på den anden side kan et program være vilkårligt hurtigt, hvis det ikke behøver at fungere korrekt. De fleste kode er ikke skrevet på lang sigt, men det er ofte overraskende, hvor længe nogle programmer kan forblive i produktion: i nogle tilfælde mange årtier. I disse situationer er det værd at tage lidt ekstra tid i udvikling for at sikre, at programmet er korrekt, pålideligt og ikke har brug for meget vedligeholdelse i fremtiden.
min take: gå efter den kode, der skal sendes i morgen, Rust efter den kode, der skal fortsætte med at køre uberørt i de næste fem år.
-Nosek
mens både Go og Rust er gode valg til ethvert seriøst projekt, er det en god ide at gøre dig selv så velinformeret som muligt om hvert sprog og dets egenskaber. I sidste ende betyder det ikke noget, hvad andre synes: kun du kan beslutte, hvad der passer til dig og dit team.
Hvis du vil udvikle dig hurtigere, måske fordi du har mange forskellige tjenester at skrive, eller du har et stort team af udviklere, så er Go dit valgte sprog. Go giver dig samtidighed som førsteklasses borger og tolererer ikke usikker hukommelsesadgang (heller ikke Rust), men uden at tvinge dig til at styre hver eneste detalje. Go er hurtig og kraftfuld, men det undgår bogging udvikleren ned, fokuserer i stedet på enkelhed og ensartethed. Hvis på den anden side, vride ud hver sidste ounce af ydeevne er en nødvendighed, så Rust bør være dit valg.
—Andreas Lader
konklusion
Jeg håber, at denne artikel har overbevist dig om, at både Rust og Go fortjener din seriøse overvejelse. Hvis det overhovedet er muligt, skal du sigte mod at få mindst et vist niveau af erfaring på begge sprog, fordi de vil være utroligt nyttige for dig i enhver teknisk karriere, eller endda hvis du nyder programmering som en hobby. Hvis du kun har tid til at investere i at lære et sprog godt, skal du ikke tage din endelige beslutning, før du har brugt både Go og Rust til en række forskellige slags programmer, store og små.
og kendskab til et programmeringssprog er virkelig kun en lille del af at være en succesfuld programmør. Langt de vigtigste færdigheder, du har brug for, er design, teknik, arkitektur, kommunikation og samarbejde. Hvis du udmærker dig ved disse, vil du være en stor programmør uanset dit valg af sprog. Glad læring!
sammenligning af Rust and Go-kode
Der er en fantastisk hjemmeside kaldet programming-idioms.org som har et “snydeark”, der viser, hvordan Rust and Go-koden ser ud til over 200 almindelige programmeringsopgaver:
- Go vs Rust idiomer
Kom godt i gang
Hvis du er interesseret i at lære at programmere med Rust and Go, Her er et par ressourcer, du kan finde nyttige.
Go
- Installer Go
- Go tutorials af Bitfield
- for kærligheden til Go
- en rundvisning i Go
- gå ved eksempel
- Go Playground
- fantastisk Go
Rust
- installer Rust
- en blid introduktion rust
- rust programmeringssprog
- rust books
- rust ved eksempel
- rust playground
- hundrede rust binære filer
anerkendelser
jeg er ikke ung nok til at vide alt, som man siger, så jeg er meget taknemmelig for en række fremtrædende gophers og rustaceans hvem tog sig tid til at gennemgå og rette dette stykke, samt give nogle virkelig nyttige forslag. Min særlige tak går til Bill Kennedy, Sam Rose, Jack Mott, Steve Klabnik, mn Mark, Ola Nordstrom, Levi Lovelock, Emile Pels, Sebastian Lauere, Carl Lerche og alle andre, der har bidraget. Du får måske indtryk af at læse online hot takes, at Rust and Go-samfundene ikke kommer overens. Intet kunne være længere væk fra sandheden, efter min erfaring; vi havde meget civiliserede og frugtbare diskussioner om udkastet til artikel, og det har gjort en stor forskel for det færdige produkt. Tak igen.
Leave a Reply