Den ultimate guiden til blockchain-programmering for nye utviklere

Jeg vil bidra med kode til et av disse prosjektene – hvordan kan jeg komme i gang?

Er det noe språk som brukes spesielt for blokkjeder??

Jeg vet ikke hvordan jeg skal programmere – kan jeg hoppe rett inn i blockchain-programmering?

For noen måneder siden hadde jeg gleden av å moderere et panel med fire aktive NEO-programmerere på San Francisco NEO Dev Conference. Temaet for panelet var generell blockchain-programmering, men en ekstra advarsel gjorde dette deltakerpanelet veldig interessant: alle fire programmerere brukte et annet valgspråk for å jobbe med NEO-prosjektet.

En favoriserte C #-språket på den gamle skolen, en annen produserte Python-skript, en tredje evangeliserte den stadig populære Javascript-implementeringen & den fjerde deltakeren diskuterte begeistret et kommende domenespesifikt NEO-språk.

To tanker satt fast på meg etter panelet:

  1. NEO-kompilatoren har seriøs flerspråklig utviklingsstøtte
  2. Læringskurven for blockchain-programmering er brutal og forferdet av mangel på organiserte ressurser, spesielt for nye utviklere

Denne artikkelen tar sikte på å adressere punkt 2. Maksimering av effektiviteten til denne veiledningen krever å begrense forventet publikum til en smal nisje: ny & junior programmerere som ønsker å bryte spesifikt inn i blockchain-rommet. For veteranutviklere, programmerere, & programvareingeniører som leser – den følgende delen kan gi noen fordeler, men du vil sannsynligvis finne dem grunnleggende. Senioringeniører kan maksimere tiden sin ved å bla til et kjent språk, & begynner å rive fra hverandre de vedlagte læringsressursene & dokumentasjon.

Så du tror du vil bryte inn i blockchain-programmering, ikke sant? La oss starte med å ytterligere definere nøyaktig hva blockchain-programmering innebærer.

Ny industri

Generelt sett emner som personlig interesserer deg & det er lettere å lære å tilpasse seg verdiene dine enn å huske noe uten en klar buy-in; Jeg understreker sterkt at dette prinsippet gjelder stadig flere i et medfødt komplekst, raskt utviklende felt som blockchain-programmering. Før vi begynner, la oss sjekke ut noen av utfordringene som en blockchain-utvikler står overfor i den voksende industrien.

Først & først og fremst er det kontinuerlige, offentlige avviket mellom hva en “blockchain” gjør eller ikke innebærer. Bruk litt tid på crypto-twitter & det vil bli klart hvordan tribal crypto-fellesskap, & på en strekning har utviklingssamfunnene deres blitt. Ukontrollert tribalisme fører naturligvis til partiske samtaler om hva som burde være objektivt innhold, og legger til et nytt lag av forvirring for innkommende utviklere.

Deretter, med de fleste prosjekter i testnettfasen & med live-prosjekter som kontinuerlig oppdateres, forking, & blir offer for hack, er det ikke overraskende å se ufullstendig dokumentasjon & uferdige opplæringsprogrammer. Landleggingen utvikler seg raskt, noe som krever jevn iterasjon – ingen enkel oppgave for noe lag.

Sist er det sanne stigmaet at blockchain-programmering er flat komplisert & består av flere kryssende felt som krever minst en rudimentær forståelse av følgende: økonomi, kryptografi, valuta, datastrukturer, finanspolitikk & fysikk. Å lære selv bare de delene av disse feltene som er relevante for blockchain-programmering, tar god tid å forstå – ingen snarveier her.

Tribalism, tilfeldig dokumentasjon & kompliserte grunnleggende. Alle advarselstegn på en bratt stigning oppover. For å motivere seg tilstrekkelig gjennom disse hindringene for inngang, hjelper det å grave gjennom litt klarhet om hva som er nøyaktig blockchain programmering betyr i første omgang. I tillegg kan det hjelpe å avdekke …


Hvorfor vil du lære blockchain-programmering? Hvilket prosjekt ønsker du spesielt å jobbe med? Hvilke problemer prøver du å løse?

Dekonstruere Blockchain-programmering

Hvis du allerede vet hvilket prosjekt du feberisk vil jobbe med, kudos – jeg foreslår at du går over til organisasjonene GitHub repository eller ctrl-Fing det valgte språket her for å lese fremover. Den følgende delen vil mest være til fordel for de som ikke helt kan finne ut hvilket prosjekt & nødvendig ferdighetssett / språk som passer best for dem som utgangspunkt for de potensielle læringskartene fremover.

Generelt kan blockchain-programmering bety tre forskjellige ting:

  • Implementering av et første mynttilbud (ICO)
  • Bygg en smart kontrakt eller en desentralisert app (DAPP)
  • Bidra til en eksisterende eller distribuere en ny blockchain

Tenk på de tre alternativene som er beskrevet ovenfor, da de tilbyr en rekke forskjellige språk & læringskurver. I tillegg bør de hjelpe deg med å få et skritt nærmere å avklare det eksakte preferanse. Ytterligere segmentering for språkkriterier er rett rundt hjørnet; imidlertid ikke glem at personlig preferanse trumfer alt for å motivere deg selv gjennom å lære en ny ferdighet.

Forutsatt at en programvareingeniør på en dag er like interessert i å lære om alle tre typer blockchain-programmering – hvilke andre kriterier kan de henvende seg til for å skinne på et lys på den vennligste veien fremover?

  • Generell bruk vs Domenespesifikke språk
  • Syntakslesbarhet & Læringskurve

Ved å oversikt over disse tre kriteriene får vi endelig en solid ramme for kontekst som vi vil bruke fra vår liste over språk.

Generell bruk vs Domenespesifikk

Å kategorisere verktøy på tvers av kvalitative kvaliteter er sjelden tydelig – programmeringsspråk er ikke annerledes. Her vil vi dele alle mulige blockchain-programmeringsspråk i to forskjellige kategorier: domenespesifikke språk & generelle språk.

Vanligvis er et domenespesifikt språk (DSL) et dataspråk designet & spesielt egnet for en bestemt applikasjon. Et generelt språk (GPL), som navnet treffende beskriver, er et språk som er bredt anvendelig på mange programmeringsdomener.

Generelt språk

Generelle språk er språkene du sannsynligvis har hørt om, for eksempel Java, Javascript, Ruby, C++, & Python. Blant de generelle språkene kan man finne uendelige måter å ytterligere kategorisere dem etter kvalitative & kvantitative forskjeller & likheter som lesbarhet, kompilering, strengt skrevet, frontend / backend, osv … En god tommelfingerregel for første gangs vennlighet er som følger:

Javascript, Python, & Rubin er generelt lettere for nykommere, da de har mindre læringskurve mens C++ & Java tar vanligvis mer tid å lære seg ut av boksen.

Merk at redaktøren avstår fra å kommentere andre & konsekvenser på tredje nivå av at en nykommer begynner med den ene gruppen av språk eller den andre. Det er flere debatter på tvers av ytterligere funksjoner på disse språkene, for eksempel å tvinge nykommere til å forstå variable typer først gjennom et strengt skrevet språk som vi omgår for å maksimere bruken her for en ny utvikler som nærmer seg blockchainområdet.

Den største proffen for nykommere som plukker opp et generelt formål, er den umiddelbare muligheten til å bruke språket på et stort antall felt utenfor blockchain-programmering. Dessverre skaper baksiden av den samme mynten en ulempe for de nykommerne som ønsker å delta i arbeidsmarkedet, da du sannsynligvis vil konkurrere direkte mot senior & veteranprogramvareingeniører fra andre domener med mange års erfaring med å bruke det generelle språket.

Domenespesifikt språk

For å gi sammenheng, la oss gå tilbake fra blockchain-programmering. Selv om det er et ganske nytt programmeringsfelt, er ikke konseptet med et nytt programmeringsfelt i seg selv det nye – du trenger ikke se for langt forbi tvilling-nylig-buzzword maskinlæring for å se dette. Noen få, ekstra programmeringsfelt som også har vært vitne til en naturlig utvikling av ett eller flere domenespesifikke språk er: statistikk (R, MatLab), databaseforespørsel (SQL), Web UI (HTML, CSS).

Domenespesifikke språkblokkjede-programmerere er veldig etterspurt med svært lite tilbud: disse unge språkene, hvis eneste formål er ett eller flere av de tre blokkeringsprogrammeringsalternativene som er oppført ovenfor, gir utvilsomt den klareste veien til landing av karriereindustri.

Siden disse språkene ble designet fra grunnen av med blockchain & med tanke på smart kontraktsteknikk, kan erfarne utviklere slite med å justere tidligere referanserammer fra andre språk.

Mens nykommere, med nye skifeprogrammeringsvaner, lener seg ut alt som er nødvendig for å begynne å distribuere kode i nåværende eller fremtidige prosjekter.

Igjen, ved å omgå de veldig reelle programmeringsgrunnleggende som finnes i språk for generelt formål, kan man finne seg selv i en betydelig ulempe nedover linjen hvis det domenespesifikke språket etter eget valg på en eller annen måte blir avskrevet..

Følgende diagram viser en oversikt over mulige blockchain-programmeringsinngangspunkter fra en DSL / GDL-segmentering. gjennomsiktige / fjerne språk er språk ikke dekket i lengden:

Syntakslesbarhet & Læringskurve

Ulike programmeringsspråk tilbyr forskjellige nivåer av lesbarhet basert på hvor enkle eller komplekse de er syntaks er. Syntaks refererer til den angitte stavemåten & grammatikkregler for et programmeringsspråk. Vanligvis korrelerer syntakslesbarhet med brattheten i læringskurven; vanskelig å lese kode gjør det vanskelig å lære kode. Igjen er det absolutt unntak fra denne regelen, men for vårt formål gjelder dette lineære forholdet.

Vi vil bruke to viktige, men allikevel vanlige, syntaksefunksjoner for programmeringsspråk for å skape en lesbarhetsforståelse spesielt for nye utviklere & programmeringsspråk for blockchain. Det vanligste av disse konseptene er løs kontra streng variabel skriving.

Løs mot streng skriving

All programmering bruker omfattende variabler; det er imidlertid ikke bare en enkelt, vanlig variabel type – det er mange, hver med unike egenskaper. Du har sikkert hørt noen av disse variabeltypene, for eksempel strenger, heltall, & booleanere. Hvert programmeringsspråk utnytter disse naturlige typene i sin syntaks; hvert språk lag imidlertid disse variabel typene med sin egen variabel-refererende logikk. Noen språk, for eksempel Python & Javascript, la utviklere bare bruke en enkelt “var” -variabel: var eksempel = “Coincentral.” Denne fleksibiliteten gjør det mulig for utviklere å omgå den kjedelige prosessen med å sørge for at hver variabeltype er riktig innstilt i hver linje. Språk som skjuler tildeling av variabel på lavt nivå, er kjent som språk som er løst skrevet.

Sistnevnte kategori, strengt skrevet språk, består av en mer detaljert, om enn mer beskrivende syntaks. Å erklære variabler på strengt typede språk består i å spesifisere den originale variabeltypen som utvikleren har til hensikt å bruke: streng eksempel = “Coincentral.” Hvis du sammenligner dette med den forrige variabeldeklarasjonen, må du følge nøye med den fetstilte “strengen”. Denne strenge typingen av en variabel er nøkkelforskjellen i syntaksen mellom løst tastet språk & strengt skrevet språk. Forskjellen i syntaks er i det hele tatt ikke begrenset til bare å erklære variabler, det er en nøkkel for språkdesign som er gjennomgripende over hele språket..

Begge løst skrevne & strengt typede språk tilbyr massevis av proffer & ulemper avveininger. En av de viktigste avveiningene man bør vurdere for nykommere, er læringskurven knyttet til begge typer. Generelt tilbyr løst tastede språk en vennligere syntaks for nykommere & derfor en lavere inngangsbarriere; Imidlertid er den største umiddelbare ulempen å vurdere et alvorlig gap av grunnleggende programvareteknikk når det gjelder samhandling med variable typer.

Utnytt denne informasjonen, uansett hvordan du vil, vi skiller visuelt ut vårt utvalg av blockchain-programmeringsspråk ved å skrive dem løst & strengt skrevet syntaks nedenfor:

Språklandskapet

Vi er endelig kjernen i denne artikkelen, som er en katalog på høyt nivå & undersøkelse av tilgjengelige blockchain-programmeringsspråk. For hver seksjon introduserer vi kort språket, oppsummerer det tiltenkte formålet innen blockchain-miljøet, oversikt over prosjekter eller rammer som er i produksjon, & endelig liste ut læringsressurser for ytterligere informasjon.

C++

C ++

La oss starte med det eldste språket i listen først: C ++. Introdusert først av en Mr.Bjarne Stroustrup i 1985, ble C ++ opprettet som en utvidelse av det originale C-språket. Tanken var å opprettholde fleksibiliteten, sikkerheten & effektivitet av C, men for å effektivisere språket for mer objektorienterte prosesser. Dermed fører til at C ++ er et objektorientert språk mens C forblir prosessorientert.

C ++ er et spesielt kraftig, oldschool, domene-generelt språk som er ganske populært for kjerne blockchain-programmering.

Imidlertid blir den nye utvikleren advart. Som et strengt skrevet språk med en relativt utdatert syntaks i forhold til sine jevnaldrende, er læringskurven veldig bratt. Det er sannsynligvis det vanskeligste å snakke for en ny utvikler å hoppe inn i; likevel må det anføres at den grunnleggende kunnskapen som oppnås ved å skyve C ++ læringskurven er uten sidestykke. Som tidligere nevnt, støtter blockchain-verdenen tungt på C ++, slik at du ikke finner mangel på læringsressurser:

Bitcoin Core: https://github.com/bitcoin/bitcoin

Ripple Daemon: https://github.com/ripple/rippled

C ++ opplæring: https://www.cplusplus.com/doc/tutorial/

Javascript

Javascript

JavaScript er et løst skrevet programmeringsspråk for skript for nettet som støttes av alle store nettlesere; det er hovedspråket som brukes til å forbedre statisk HTML & CSS-sider til fullverdige brukergrensesnitt. Noen få av disse vanlige web-brukergrensesnittene inkluderer animasjoner, forfriskende sider, brukermenyer & dialogbokser, interaktive kart osv …

Dette språket som driver alle nettsidene i moderne nettlesere, Javascript, skulle aldri forlate presentasjonslaget på høyeste nivå i en webapp. Likevel er det ubestridelig at Javascript tok av, spesielt for nykommere, på en enestående måte. Med Node.JS først å plassere Javascript-serversiden, så har Angular / React / Vue i hovedsak omskrevet HTML / CSS stack-klientsiden, full-stack Javascript har blitt raseri. Uten å dykke for dypt, er det trygt å si at i det minste en håndfull veteranutviklere vil stønne etter denne anbefalingen. Selv om det kan være fordelaktig med disse klagene, blir det ikke følgende setning falsk:

Javascript er veldig nykommervennlig, modnes, & nå forankret i alle deler av den moderne nettbunken.

For Javascript er den fremste løperen innen blockchain-støtte Lisk blockchain-prosjektet. Landingssiden deres taler volum når det gjelder deres tro på å bygge et helt blockchain-økosystem i Javascript: “Lisk gjør det enkelt for utviklere å bygge og distribuere blockchain-applikasjoner i JavaScript.”

Læringsressurser

Lisk: https://lisk.io/

Python

Python

Et relativt moderne programmeringsspråk, Python er ofte favoritten for nykommere – og med god grunn! Python ble designet av Guido van Rossum med syntaks enkelhet & lesbarhet over alt annet. Siden utgivelsen har Python eksplodert som et enkelt, men likevel kraftig språk med massiv fellestøtte som fører til Python-integrering bokstavelig talt overalt – fra web-UI-biblioteker som Flask til maskinlæringsutstyr som NumPy.

Mens med innfødt Python man ikke teknisk kan bidra til en eksisterende blockchain, skrive desentraliserte apper eller holde et første mynttilbud, ville det være en feil å forlate Python utenfor denne listen, da nesten hvert eneste blockchain-økosystem har en eller flere offentlige verktøy skrevet i & for Python.

Læringsressurser

IBM Blockchain Foundations Tutorial – https://developer.ibm.com/courses/all/ibm-blockchain-foundation-developer/

Ethereum Web Wrapper – https://web3py.readthedocs.io/

GÅ

GO (forkortelse for GOLang) programmeringsspråk er et relativt moderne domene-generelt språk utviklet hos Google i 2007 & avslørt for offentlig bruk i 2012. Designet som et robust, flerbruksspråk, var GO et forsøk på å kombinere syntaksen & brukervennlighet av moderne språk som Python & Javascript, med forestillingen & sikkerhetsfordeler med eldre, kompilerte språk som C.

GO er et kompilert språk – som betyr at det kjører direkte i et operativsystem. Denne funksjonen gir maksimal fleksibilitet når det gjelder å bruke GO til flere deler av et blockchain-prosjekt. Vil du bidra direkte til en eksisterende blockchain? Ethereum har en protokoll SDK skrevet i GO. Vil du skrive en smart kontrakt? Linux-Foundation Hyperledger Fabric blockchain har det dekket.

Læringsressurser

Gå dokumentasjon – https://golang.org/doc/

Gå Ethereum – https://github.com/ethereum/go-ethereum

Hyperledger stoff – https://github.com/hyperledger/fabric-sdk-go

Tørrhet

Tørrhet

Soliditet er et javascript-aktig domenespesifikt språk laget av Ethereum-teamet (Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai & andre) for å lage desentraliserte apper på Ethereum-plattformen. Det er den klart mest tilpassede & mainstream DSL som har sett rikelig med adopsjon i Ethereum-samfunnet & blockchain-industrien.

For alle som ønsker å bygge en dApp eller ha en ICO, er Soliditet hands-down en av de mest enkle måtene å dykke direkte inn i hjertet av det hele. Siden utviklingen av soliditet begynte før Ethereum hardgaffel, forhindret den heldigvis alle tekniske effekter på deler av den sivile uenigheten, som begge Ethereum Classic viser. & Ethereum fortsetter soliditetsstøtte. Videre kunngjorde Cardano-teamet nylig Soliditetsstøtte – noe som gjør Solidity til den single blockchain-programmering DSL støttes i flere blokkeringer.

Språket i seg selv ble opprettet med utvikler-adopsjon prioritert, noe som førte til en syntaks målrettet lik det stadig populære Javascript med, selvfølgelig, noen vendinger.

Læringsressurser

Consensys Academy – https://consensys.net/academy/

Soliditetsdokumentasjon – https://solidity.readthedocs.io/en/v0.4.24/

I Avslutning

Bitcoin & blockchain-teknologien vil fortsette å revolusjonere måten data blir på & eiendeler overføres – det er klart at virkningen vil være global & industri-agnostiker. Uansett hvor du begynner, er det første steget å ta det første trinnet i å lære et av disse språkene. Misforholdet i etterspørsel etter denne ferdigheten kan ikke overvurderes.

De beste estimatene plasserer antall aktive utviklere over hele verden, på rundt ~ 20M. Likevel anslår industrien at mindre enn 1 i en hel del 1000 aktive utviklere føler seg trygge i ferdighetssettet deres for å betrakte seg som blockchain-programmerere & søker aktivt på åpne stillinger. For mindre aritmetisk tilbøyelige betyr det at det er omtrent 20 tusen blockchain-programmerere.

programmering 1

Hvis det virker mye, la oss se på Microsoft – med en antall ansatte på omtrent 100k – la oss anta at de har minst ett støttepersonell per programvareingeniør, som etterlater oss med rundt 50 tusen programmerere. På den andre siden, bankgiganten Goldman Sachs har for tiden ~ 9 tusen programmerere & ingeniører.

Poenget er – denne mangelen på blockchain-programmerere er veldig reell & svaret på din indre dialog men er det for sent for meg å begynne å lære fra bunnen av? er NEI. For utviklere, investorer, & regulatorer, og alle andre involverte, er det fortsatt veldig tidlige dager.

Det eneste spørsmålet er hvilket prosjekt du vil begynne å jobbe med & hvilket problem vil du begynne å løse?

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map