Želim doprinijeti kodu za jedan od ovih projekata – kako mogu započeti?
Postoji li neki jezik koji se koristi posebno za blockchaine?
Ne znam kako programirati – mogu li uskočiti ravno u blockchain programiranje?
Prije nekoliko mjeseci imao sam zadovoljstvo moderirati panel od četiri aktivna NEO programera na konferenciji NEO Dev u San Franciscu. Tema panela bila je općenito programiranje blockchaina, međutim, dodatna upozorenja učinila su ovaj panel sudionika vrlo zanimljivim: sva četvorica programera koristili su drugačiji jezik po izboru za rad na NEO projektu.
Jedan je favorizirao staroškolski jezik C #, drugi je izradio Python skripte, treći je evangelizirao uvijek popularnu implementaciju Javascripta & četvrti je sudionik uzbuđeno raspravljao o nadolazećem NEO jeziku specifičnom za domenu.
Dvije su mi se misli zalijepile za post-panel:
- Kompajler NEO ima ozbiljnu podršku za više jezika
- Krivulja učenja za blockchain programiranje brutalna je i jako ogorčena nedostatkom organiziranih resursa, posebno za nove programere
Ovaj se članak želi pozabaviti točkom broj 2. Povećavanje učinkovitosti ovog vodiča zahtijeva ograničavanje očekivane publike na usku nišu: novo & mlađi programeri koji žele posebno probiti se u blockchain prostor. Za programere veterane, programere, & softverski inženjeri koji proučavaju – sljedeći odjeljak može pružiti određenu korist, no vjerojatno ćete ih smatrati osnovnim. Stariji inženjeri mogu maksimizirati svoje vrijeme pomicanjem na poznati jezik po izboru, & počinjući razdirati priložene resurse za učenje & dokumentacija.
Dakle, mislite da biste željeli upasti u blockchain programiranje? Počnimo s daljnjim definiranjem što točno podrazumijeva blockchain programiranje.
Nova industrija
Općenito, teme koje vas osobno zanimaju & uskladiti se sa svojim vrijednostima lakše je naučiti nego pamtiti nešto bez jasnog unosa; Izuzetno naglašavam da se ovaj princip primjenjuje sve više u urođeno složenom polju koje se brzo razvija, poput blockchain programiranja. Prije nego što započnemo, provjerimo neke od izazova s kojima se programer blockchaina suočava u rastućoj industriji.
Prvi & najvažnije je kontinuirano, javno odstupanje između onoga što točno “blockchain” čini ili ne podrazumijeva. Provedite neko vrijeme u kripto-twitteru & postat će jasno koliko plemenske kripto-zajednice, & odjednom su njihove razvojne zajednice postale. Neprovjereni tribalizam prirodno dovodi do pristranih razgovora o onome što bi trebao biti objektivan sadržaj, dodajući još jedan sloj zamagljivanja za nove programere.
Dalje, s većinom projekata u fazi testne mreže & s live projektima koji se kontinuirano ažuriraju, račvaju, & postajući žrtvom hakova, nije iznenađujuće vidjeti nepotpunu dokumentaciju & nedovršeni tutorijali. Položaj zemlje brzo se razvija što zahtijeva dosljednu ponavljanje – nije nimalo lak zadatak za bilo koji tim.
Posljednja je istinita stigma da je blockchain programiranje komplicirano & sastoji se od više polja koja se sijeku i koja zahtijevaju barem osnovno razumijevanje sljedećeg: ekonomije, kriptografije, valute, struktura podataka, financijske politike & fizika. Učenje čak i samo dijelova ovih polja relevantnih za blockchain programiranje zahtijeva dovoljno vremena za razumijevanje – ovdje nema prečica.
Tribalizam, slučajna dokumentacija & komplicirane osnove. Svi znakovi upozorenja za strmi uspon naprijed. Kako bi se na adekvatan način motivirao kroz ove prepreke ulasku, pomaže u iskopavanju neke jasnosti o tome što točno blockchain programiranje znači na prvom mjestu. Uz to, moglo bi vam pomoći otkriti …
Zašto želite naučiti blockchain programiranje? Na kojem projektu želite konkretno raditi? Koje probleme pokušavate riješiti?
Dekonstrukcija Blockchain programiranja
Ako već znate na kojem projektu grozničavo želite raditi, svaka čast – predlažem da prijeđete na repozitorij organizacija GitHub ili ctrl-Fing ovdje odabrani jezik za čitanje. Sljedeći će odjeljak najviše koristiti onima koji ne mogu točno odrediti koji projekt & traženi skup vještina / jezik najbolje im odgovara kao polazna točka za potencijalne putokaze za učenje koje su pred nama.
Općenito, blockchain programiranje može značiti tri različite stvari:
- Primjena početne ponude kovanica (ICO)
- Izrada pametnog ugovora ili decentralizirane aplikacije (DAPP)
- Doprinos postojećem ili postavljanje novog blockchaina
Dobro razmotrite tri gore opisane opcije jer svaka nudi niz različitih jezika & krivulje učenja. Uz to, trebali bi vam pomoći prići korak bliže razjašnjavanju točnih podataka prednost. Daljnja segmentacija za jezične kriterije je odmah iza ugla; međutim, ne zaboravite da osobne sklonosti prevladavaju zbog motiviranja kroz učenje nove vještine.
Pod pretpostavkom da je softverski inženjer jedan dan podjednako zainteresiran za učenje o sve tri vrste blockchain programiranja – kojim se još kriterijima mogu obratiti kako bi zasjali na najprijateljskijem putu naprijed?
- Opća namjena vs jezici specifični za domenu
- Čitljivost sintakse & Krivulja ucenja
Pregledom ova tri kriterija konačno ćemo dobiti čvrst okvir konteksta iz kojeg ćemo se primijeniti na naš popis jezika.
Opća namjena vs specifična za domenu
Kategorizacija alata prema kvalitativnim kvalitetama rijetko je jasna – programski se jezici ne razlikuju. Ovdje ćemo podijeliti sve moguće blockchain programske jezike u dvije različite kategorije: jezici specifični za domenu & jezici opće namjene.
Tipično je jezik specifičan za domenu (DSL) računalni jezik koji je dizajniran & posebno prikladan za određenu primjenu. Jezik opće namjene (GPL), kako naziv prikladno opisuje, jezik je koji je široko primjenjiv u mnogim programskim domenama.
Jezik opće namjene
Jezici opće namjene su jezici za koje ste vjerojatno čuli, kao što su Java, Javascript, Ruby, C++, & Piton. Među jezicima opće namjene mogu se naći beskonačni načini da ih se dalje kvalitativno kategorizira & kvantitativne razlike & sličnosti kao što su čitljivost, kompajliranje, strogo ukucani, frontend / backend, itd … Dobro pravilo prijateljskog ponašanja je kako slijedi:
Javascript, Python, & Ruby je općenito lakše za novopridošle jer imaju manje krivulje učenja dok C++ & Javi obično treba više vremena za učenje izvan okvira.
Imajte na umu da se urednik suzdržava od komentiranja sekunde & posljedice treće razine pridošlice koja započinje s jednom ili drugom skupinom jezika. Postoje višestruke rasprave oko daljnjih značajki ovih jezika, poput prisiljavanja pridošlica da prvo razumiju varijabilne tipove kroz strogo otkucani jezik koji zaobilazimo kako bi ovdje maksimizirali upotrebu za novog programera koji se strogo približava blockchain prostoru.
Najveći profesionalac za novopridošlice koji se odluče za opću namjenu je neposredna sposobnost primjene tog jezika u velikom broju polja izvan blockchain programiranja. Nažalost, okretanje istog novčića stvara zabludu onima koji se žele pridružiti tržištu rada jer ćete se vjerojatno natjecati izravno protiv starijih & veterani softverski inženjeri iz drugih domena s dugogodišnjim iskustvom u radu s navedenim jezikom opće namjene.
Jezik specifičan za domenu
Da bismo pružili kontekst, vratimo se od blockchain programiranja. Iako je to prilično novo programsko polje, sam koncept novog programskog polja nije toliko nov – ne morate gledati predaleko iza riječi twin-recent-buzzword strojno učenje da vidim ovo. Nekolicina dodatnih programskih polja koja su također svjedočila prirodnom razvoju jednog ili više jezika specifičnih za domenu su: statistika (R, MatLab), upiti u baze podataka (SQL), web korisničko sučelje (HTML, CSS).
Programeri blockchain jezika specifični za domenu vrlo su traženi s vrlo malo ponude: ovi mladi jezici, čija je jedina svrha jedna ili više od tri gore navedene opcije programiranja blockchain-a, nesumnjivo nude najjasniji put do slijetanja u karijeru.
Budući da su ti jezici osmišljeni od temelja s blockchainom & imajući na umu inženjering pametnih ugovora, iskusni programeri mogu se mučiti da prilagode prethodne reference iz drugih jezika.
Dok se pridošlice, sa svježim navikama programiranja, oslanjaju na sve što je potrebno da bi se započelo s implementacijom koda u trenutne ili buduće projekte.
Opet, zaobilazeći vrlo stvarne osnove programiranja pronađene u jeziku opće namjene, može se naći u značajnom nepovoljnom položaju ako je jezik koji odabere njegov domen na neki način zastario.
Dijagram koji slijedi raščlanjuje skup mogućih ulaznih točaka za programiranje blockchain-a iz DSL / GDL segmentacije; prozirni / udaljeni jezici su jezici ne pokriveno:
Čitljivost sintakse & Krivulja ucenja
Različiti programski jezici nude različite razine čitljivosti ovisno o tome koliko su jednostavni ili složeni sintaksa je. Sintaksa se odnosi na naznačeni pravopis & gramatička pravila programskog jezika. Obično je čitljivost sintakse u korelaciji sa strminom krivulje učenja; kod koji je teško pročitati otežava učenje koda. Opet, sigurno postoje iznimke od ovog pravila, međutim, u našu svrhu ovaj linearni odnos vrijedi.
Upotrijebit ćemo dvije ključne, ali uobičajene značajke sintakse programskog jezika kako bismo stvorili razumijevanje čitljivosti posebno za nove programere & programski jezici blockchain. Najčešći od ovih koncepata je labavo naspram strogog tipkanja varijabli.
Loose vs Strogo tipkanje
Sve programiranje opsežno koristi varijable; međutim, ne postoji samo jedan, redoviti tip varijable – postoji mnogo, svaki s jedinstvenim svojstvima. Vjerojatno ste čuli nekoliko ovih vrsta varijabli, poput nizova, cijelih brojeva, & booleovi. Svaki programski jezik koristi ove prirodne tipove u njihovoj sintaksi; međutim, svaki jezik slojeve ovih tipova varijabli ima svojom logikom referenciranja varijabli. Neki jezici, poput Pythona & Javascript, dopustite programerima da jednostavno koriste jednu varijablu „var“: var primjer = “Coincentral.” Ova fleksibilnost omogućuje programerima da zaobiđu dosadan postupak osiguravanja da je svaka vrsta varijable prikladno postavljena u svakom retku. Jezici koji skrivaju dodjeljivanje varijabli niske razine poznati su kao jezici labavog tipa.
Potonja kategorija, strogo upisani jezici, sastoji se od opširnije, iako opisnije sintakse. Deklariranje varijabli u strogo upisanim jezicima sastoji se od specifičnog deklariranja izvorne vrste varijable koju programer namjerava koristiti: niz primjer = “Coincentral.” Ako ovo usporedite s prethodnom deklaracijom varijable, dobro obratite pažnju na podebljani “niz”. Ovo strogo tipkanje varijable ključna je razlika u sintaksi između jezika bez slova & strogo upisan jezik. Razlika u sintaksi uopće nije sužena na samo deklariranje varijabli, to je ključna značajka dizajna jezika koja je raširena u cijelosti svakog jezika.
Obje labave vrste & strogo tipizirani jezici nude gomilu prednosti & kontra kompromisi. Jedan od najvažnijih kompromisa za novopridošlice je krivulja učenja povezana s obje vrste. Općenito, jezici labavog pisma nude prijatniju sintaksu za pridošlice & dakle niža prepreka ulasku; međutim, najveći trenutni nedostatak koji treba razmotriti je ozbiljna praznina u temeljnom znanju softverskog inženjerstva kada je u pitanju interakcija s varijabilnim vrstama.
Iskoristite ove podatke kako god smatrate potrebnim, vizualno odvajamo našu skupinu programskih jezika blockchain labavim tipkanjem & strogo upisana sintaksa u nastavku:
Jezični krajolik
Napokon smo u središnjem dijelu ovog članka, koji je katalog na visokoj razini & pregled dostupnih blockchain programskih jezika. Za svaki odjeljak ukratko ćemo predstaviti jezik, sažeti njegovu namjenu u blockchain okruženju, pregledati sve projekte ili okvire koji su trenutno u izradi, & konačno navesti resurse za učenje za daljnje informacije.
C++
Krenimo prvo s najstarijim jezikom na popisu: C ++. Prvo ga je predstavio gospodin Bjarne Stroustrup 1985. godine, C ++ je stvoren kao produžetak izvornog jezika C. Ideja je bila zadržati fleksibilnost, sigurnost & učinkovitost C, ali za pojednostavljivanje jezika za više objektno orijentirane procese. Dakle, što dovodi do toga da C ++ bude objektno orijentirani jezik, dok C ostaje procesno orijentiran.
C ++ je posebno moćan, oldschool, jezik općenito o domeni koji je prilično popularan za jezgrovito programiranje blockchaina.
Međutim, upozorit će novog programera. Kao strogo tipiziran jezik s relativno zastarjelom sintaksom u odnosu na svoje vršnjake, krivulja učenja je vrlo strma. Vjerojatno je najteže za jezik uskočiti novom programeru; ipak se mora reći da je temeljno znanje stečeno potiskivanjem krivulje učenja C ++ nenadmašno. Kao što je prethodno rečeno, blockchain svijet u velikoj se mjeri oslanja na C ++, tako da nećete nedostajati resursa za učenje:
Bitcoin jezgra: https://github.com/bitcoin/bitcoin
Ripple Daemon: https://github.com/ripple/rippled
Vodič za C ++: https://www.cplusplus.com/doc/tutorial/
Javascript
JavaScript je labavo otkucan skriptni programski jezik za web koji podržavaju svi glavni preglednici; to je primarni jezik koji se koristi za poboljšanje statičkog HTML-a & CSS stranice do punopravnih korisničkih sučelja. Nekoliko ovih uobičajenih web korisničkih sučelja uključuju animacije, osvježavajuće stranice, korisničke izbornike & dijaloški okviri, interaktivne karte itd.…
Ovaj jezik koji pokreće sva ponašanja web stranica u modernim preglednicima, Javascript, nikada nije trebao napustiti najviši nivo prezentacijskog sloja web aplikacije. Ipak, nepobitno je da je Javascript krenuo, posebno za novopridošle, na neviđen način. S Node.JS-om koji je prvo stavio Javascript na poslužiteljsku, a zatim Angular / React / Vue, u osnovi prepravljajući HTML / CSS stog na klijentskoj strani, Javascript s punim stogom postao je bijes. Bez predubokog zalaženja sigurno je reći da će barem nekolicina veteranskih programera zastenjati na ovu preporuku. Iako ove žalbe mogu imati neke zasluge, sljedeću rečenicu ne čini lažnima:
Javascript je vrlo prilagođen pridošlicama, sazrijeva, & sada ukorijenjen u svim dijelovima suvremenog web-stacka.
Za Javascript, vodeći pokretač u podršci za blockchain je projekt blockchain Lisk. Njihova odredišna stranica dovoljno govori o njihovom vjerovanju u izgradnju cjelokupnog blockchain ekosustava u Javascriptu: “Lisk programerima olakšava izgradnju i implementaciju blockchain aplikacija u JavaScript.”
Resursi za učenje
Rizik: https://lisk.io/
Piton
Relativno moderan programski jezik, Python je često omiljen za pridošlice – i to s dobrim razlogom! Python je dizajnirao Guido van Rossum sa jednostavnost sintakse & čitljivost iznad svega. Otkako je izašao, Python je eksplodirao kao jednostavan, ali moćan jezik s masivnom podrškom zajednice koja dovodi do integracije Pythona doslovno svugdje – od biblioteka web korisničkog sučelja poput Flaska do osnovnih elemenata strojnog učenja poput NumPy.
Iako s izvornim Pythonom tehnički ne možete pridonijeti postojećem blockchainu, pisati decentralizirane aplikacije ili držati početnu ponudu novčića, bila bi pogreška izostaviti Python s ovog popisa jer gotovo svaki pojedini blockchain ekosustav ima jedan ili više javnih alati napisani u & za Python.
Resursi za učenje
Vodič za IBM Blockchain Foundation – https://developer.ibm.com/courses/all/ibm-blockchain-foundation-developer/
Ethereum web omot – https://web3py.readthedocs.io/
IĆI
Programski jezik GO (kratica za GOLang) relativno je moderan jezik općenito o domeni razvijen u Googleu 2007. godine & predstavljen za javnu upotrebu 2012. Dizajniran kao robustan, višenamjenski jezik, GO je bio pokušaj kombiniranja sintakse & razumljivost modernih jezika poput Pythona & Javascript, s izvedbom & sigurnosne prednosti starijih, kompajliranih jezika kao što je C.
GO je kompajlirani jezik – što znači da se izravno pokreće unutar operativnog sustava. Ova značajka omogućuje maksimalnu fleksibilnost kada je riječ o korištenju GO za više dijelova blockchain projekta. Želite li izravno pridonijeti postojećem blockchainu? Ethereum ima protokolarni SDK napisan u GO. Želite napisati pametni ugovor? To pokriva blockchain Linux-Foundation Hyperledger Fabric.
Resursi za učenje
Idi dokumentacija – https://golang.org/doc/
Idi Ethereum – https://github.com/ethereum/go-ethereum
Tkanina Hyperledger – https://github.com/hyperledger/fabric-sdk-go
Čvrstoća
Solidnost je poput javascripta jezik specifičan za domenu izradio tim Ethereuma (Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai & drugi) za stvaranje decentraliziranih aplikacija na platformi Ethereum. Daleko je najprilagođeniji & mainstream DSL koji je doživio puno usvajanja unutar zajednice Ethereum & blockchain industrija.
Za svakoga tko želi izraditi dApp ili održati ICO, Solidity je jedan od najjednostavnijih načina zaronjavanja izravno u srž svega. Budući da je razvoj Solidity započeo prije Ethereum hard-forka, srećom je izbjegao bilo kakve inženjerske učinke na dijelu građanske nesuglasice, što dokazuju i oba Ethereum Classic & Ethereum nastavlja solidnu podršku. Nadalje, Cardanoov tim također je nedavno najavio podršku Solidity – čineći Solidity DSL-om s jednim blockchain programiranjem podržanim u više blockchaina.
Sam jezik stvoren je s prioritetom za usvajanje programera, što je dovelo do sintakse namjerno slične uvijek popularnom Javascriptu s, naravno, nekoliko obrata.
Resursi za učenje
Akademija Consensys – https://consensys.net/academy/
Dokumentacija o solidnosti – https://solidity.readthedocs.io/en/v0.4.24/
U zatvaranju
Bitcoin & blockchain tehnologija nastavit će revolucionirati način na koji podaci & imovina se prenosi – jasno je da će utjecaj biti globalni & industrijsko-agnostički. Bez obzira odakle započinjete, prvi korak u učenju jednog od ovih jezika već je značajan prvi korak. Neusklađenost potražnje i potražnje za ovim skupom vještina ne može se precijeniti.
Najbolje procjene svrstavaju broj aktivnih programera širom svijeta, oko ~ 20 milijuna. Ipak, procjene industrije navode da je manje od 1 u ogromnoj količini 1000 aktivni programeri osjećaju se sigurni u svoje vještine kako bi se smatrali blockchain programerima & aktivno se prijavljuju na otvorene pozicije. Za manje aritmetički nagnute to znači da postoje otprilike oko 20 tisuća blockchain programera.
Ako se to čini puno, pogledajmo Microsoft – s brojem zaposlenih otprilike 100 tisuća – pretpostavimo da imaju barem jedno pomoćno osoblje po softverskom inženjeru, što nam ostavlja oko 50 tisuća programera. S druge strane, bankarski div Goldman Sachs trenutno zapošljava oko 9 tisuća programera & inženjeri.
Poanta je u tome – taj je nedostatak blockchain programera vrlo stvaran & odgovor na vaš unutarnji dijalog ali je li prekasno za mene da počnem učiti ispočetka? je NE. Za programere, investitore, & regulatora, i svi ostali koji su uključeni još su vrlo rani dani.
Pitanje je samo na kojem projektu želite početi raditi & koji problem želite početi rješavati?