Sprievodca programovaním blockchainu pre nových vývojárov

Chcem prispieť kódom do jedného z týchto projektov – ako môžem začať?

Existuje nejaký jazyk používaný špeciálne pre blockchainy?

Neviem, ako programovať – ​​môžem skočiť priamo do programovania blockchainu?

Pred niekoľkými mesiacmi som mal to potešenie moderovať panel štyroch aktívnych NEO programátorov na San Francisco NEO Dev Conference. Témou panelu bolo všeobecné programovanie blockchainu, ďalšie upozornenie však urobilo tento konkrétny panel účastníkov veľmi zaujímavým: všetci štyria programátori používali iný jazyk podľa vlastného výberu pre prácu na projekte NEO.

Jeden uprednostňoval starý jazyk C #, ďalší produkoval skripty Python, tretí evanjelizoval stále populárnejšiu implementáciu Javascript & štvrtý účastník nadšene diskutoval o pripravovanom doménovo špecifickom jazyku NEO.

Po paneli sa mi prilepili dve myšlienky:

  1. Kompilátor NEO má vážnu podporu viacerých jazykov
  2. Krivka učenia sa pre programovanie blockchainu je brutálna a veľmi podráždená nedostatkom organizovaných zdrojov, najmä pre nových vývojárov

Cieľom tohto článku je venovať sa bodu číslo 2. Maximalizácia účinnosti tejto príručky si vyžaduje obmedzenie očakávaného publika na úzke miesto: nové & juniorskí programátori, ktorí chcú preniknúť konkrétne do blockchainového priestoru. Pre skúsených vývojárov, programátorov, & prezeranie softvérových inžinierov – nasledujúca časť môže poskytnúť určitú výhodu, pravdepodobne ich však nájdete ako základné. Starší technici môžu maximalizovať svoj čas prechodom na známy jazyk, ktorý si vyberú, & ktoré začínajú trhať priložené učebné zdroje & dokumentácia.

Takže si myslíte, že by ste chceli preniknúť do blockchainového programovania, hm? Začnime ďalšou definíciou, čo presne programovanie blockchainu zahŕňa.

Nový priemysel

Všeobecne témy, ktoré vás osobne zaujímajú & zosúladiť sa s vašimi hodnotami sa dá ľahšie naučiť, ako učiť sa naspamäť niečo bez jasného nákupu; Veľmi zdôrazňujem, že táto zásada sa uplatňuje čoraz viac v vrodene zložitej a rýchlo sa rozvíjajúcej oblasti, ako je blockchain programovanie. Skôr ako začneme, pozrime sa na niektoré výzvy, ktorým blockchainový vývojár čelí v rýchlo sa rozvíjajúcom priemysle.

najprv & najdôležitejší je neustály verejný rozpor medzi tým, čo presne „blockchain“ znamená alebo čo neznamená. Strávte nejaký čas v krypto-twitteri & vyjasní sa, ako kmeňové kryptomeny, & časom sa ich rozvojové komunity stali. Nekontrolovaný tribalizmus prirodzene vedie k neobjektívnym rozhovorom o tom, čo by malo byť objektívnym obsahom, a pridáva ďalšiu vrstvu zahmlievania pre prichádzajúcich vývojárov.

Ďalej s väčšinou projektov v ich fáze testnet & živé projekty sa neustále aktualizujú, rozdvojujú sa, & padajúcou obeťou hackerov, nie je prekvapením vidieť neúplnú dokumentáciu & nedokončené návody. Poloha krajiny sa rýchlo rozvíja, čo si vyžaduje dôslednú iteráciu – pre žiadny tím to nie je ľahká úloha.

Posledná je skutočná stigma, že programovanie blockchainu je plošne komplikované & pozostáva z viacerých pretínajúcich sa oblastí, ktoré si vyžadujú minimálne základné znalosti z nasledujúcich oblastí: ekonómia, kryptografia, mena, dátové štruktúry, finančná politika & fyzika. Naučiť sa iba tie časti týchto oblastí, ktoré sú relevantné pre blockchain programovanie, trvá dosť času na to, aby ste ich pochopili – tu nie sú žiadne skratky.

Tribalizmus, náhodná dokumentácia & komplikované základy. Všetky varovné príznaky prudkého stúpania dopredu. S cieľom adekvátne sa motivovať cez tieto prekážky vstupu pomáha prehĺbiť určitú jasnosť v tom, čo presne programovanie blockchainu znamená na prvom mieste. Ďalej by to mohlo pomôcť odhaliť …

Prečo sa chcete naučiť programovať blockchain? Na akom projekte chcete konkrétne pracovať? Aké problémy sa snažíte vyriešiť??

Dekonštrukcia programovania blockchainu

Ak už viete, na akom projekte chcete horúčkovito pracovať, dobre – navrhujem prejsť do repozitára organizácií GitHub alebo ctrl-Fing tu zvoleného jazyka a prečítať si ich dopredu. Nasledujúca časť bude mať najväčší úžitok pre tých, ktorí nevedia presne určiť, aký projekt & požadovaná sada zručností / jazyka im najlepšie vyhovuje ako východiskový bod pre potenciálne ďalšie študijné plány.

Programovanie blockchainu môže vo všeobecnosti znamenať tri rôzne veci:

  • Nasadenie počiatočnej ponuky mincí (ICO)
  • Budovanie inteligentnej zmluvy alebo decentralizovanej aplikácie (DAPP)
  • Prispievanie k existujúcemu alebo nasadenie nového blockchainu

Dôrazne zvážte tri možnosti popísané vyššie, pretože každá ponúka množstvo rôznych jazykov & krivky učenia. Ďalej by vám mali pomôcť dostať sa o krok bližšie k objasneniu vašej presnej preferencia. Ďalšia segmentácia podľa jazykových kritérií je priamo za rohom; nezabudnite však, že pri motivácii k učeniu sa novej zručnosti zvíťazia všetky osobné preferencie.

Za predpokladu, že sa softvérový inžinier jedného dňa rovnako zaujíma o poznávanie všetkých troch typov programovania blockchainu – na aké ďalšie kritériá sa môžu obrátiť, aby si posvietili na najpriateľskejšiu cestu vpred?

  • Jazyky na všeobecné účely verzus jazyky špecifické pre doménu
  • Čitateľnosť syntaxe & Krivka učenia

Zhrnutím týchto troch kritérií získame konečne pevný rámec kontextu, z ktorého sa dostaneme do nášho zoznamu jazykov.

Všeobecné a vs špecifické pre doménu

Kategorizácia nástrojov medzi kvalitatívnymi kvalitami je zriedka jasná – programovacie jazyky sa nelíšia. Tu rozdelíme všetky možné programovacie jazyky blockchainu do dvoch rôznych kategórií: jazyky špecifické pre doménu & univerzálne jazyky.

Typickým jazykom domény (DSL) je počítačový jazyk & špeciálne vhodný pre konkrétnu aplikáciu. Všeobecný jazyk (GPL), ako názov výstižne popisuje, je jazyk, ktorý je všeobecne použiteľný v mnohých programovacích doménach..

Univerzálny jazyk

Univerzálne jazyky sú jazyky, o ktorých ste pravdepodobne počuli, napríklad Java, Javascript, Ruby, C.++, & Python. Medzi univerzálnymi jazykmi možno nájsť nekonečné spôsoby, ako ich ďalej kvalitatívne kategorizovať & kvantitatívne rozdiely & podobnosti, ako je čitateľnosť, kompilácia, prísne zadanie, frontend / backend atď. Dobré pravidlo pre prvotriednu priateľskosť je nasledovné:

Javascript, Python, & Rubíny sú pre nováčikov všeobecne jednoduchšie, pretože majú menšiu krivku učenia sa, zatiaľ čo C.++ & Java sa zvyčajne učia po vybalení viac času.

Upozorňujeme, že redaktor sa zdržiava komentovania sekundy & dôsledky tretej úrovne pre začiatočníka začínajúceho sa jednou alebo druhou skupinou jazykov. O ďalších vlastnostiach týchto jazykov sa vedú viaceré debaty, napríklad nútenie nováčikov porozumieť typom premenných najskôr prostredníctvom striktne písaného jazyka, ktorý obchádzame, aby sme tu maximalizovali využitie nového vývojára, ktorý pristupuje striktne k priestoru blockchainu.

Najväčším prínosom pre nováčikov, ktorí si osvoja všeobecné použitie, je okamžitá schopnosť uplatniť tento jazyk v obrovskom množstve oblastí mimo programovania blockchainu. Nanešťastie, odvrátená strana tej istej mince vytvára výhodu pre tých nováčikov, ktorí sa chcú prihlásiť na trh práce, pretože pravdepodobne budete priamo konkurovať starším. & skúsení softvéroví inžinieri z iných domén s dlhoročnými skúsenosťami s používaním spomínaného univerzálneho jazyka.

Jazyk špecifický pre doménu

Aby sme poskytli kontext, poďme späť od programovania blockchainu. Aj keď je to pomerne nové programovacie pole, samotný koncept nového programovacieho poľa nie je až taký nový – nemusíte sa dívať príliš ďaleko za dvojité posledné módne slovo strojové učenie toto vidieť. Niekoľko ďalších oblastí programovania, ktoré boli tiež svedkami prirodzeného vývoja jedného alebo viacerých jazykov špecifických pre doménu, sú: štatistika (R, MatLab), dopytovanie po databáze (SQL), webové používateľské rozhranie (HTML, CSS).

Programátori blockchainových jazykov pre konkrétnu doménu sú veľmi žiadaní a majú veľmi malú ponuku: tieto mladé jazyky, ktorých jediným účelom je jedna alebo viac z troch vyššie uvedených možností programovania blockchainu, nepochybne ponúkajú najjasnejšiu cestu k umiestneniu v kariérovom priemysle..

Keďže tieto jazyky boli od základu navrhnuté pomocou blockchainu & inteligentné zmluvné inžinierstvo, skúsení vývojári môžu mať problém s úpravou predchádzajúcich rámcov referencií z iných jazykov.

Zatiaľ čo nováčikovia, s novými programovacími návykmi na bridlicu, sklopia všetko, čo je potrebné na začatie nasadenia kódu v súčasných alebo budúcich projektoch.

Opäť platí, že obídením veľmi reálnych základov programovania nájdených v univerzálnom jazyku sa človek môže ocitnúť v značnej nevýhode po celej čiare, ak je jazyk jeho konkrétnej domény podľa jeho výberu nejako zastaraný..

Nasledujúci diagram rozdeľuje skupinu možných vstupných bodov programovania blockchainu z segmentácie DSL / GDL; transparentné / vzdialené jazyky sú jazyky nie pokryté na dĺžku:

Čitateľnosť syntaxe & Krivka učenia

Rôzne programovacie jazyky ponúkajú rôzne úrovne čitateľnosti podľa toho, ako jednoduché alebo zložité sú syntax je. Syntax odkazuje na určený pravopis & gramatické pravidlá programovacieho jazyka. Čitateľnosť syntaxe zvyčajne koreluje so strmosťou krivky učenia; ťažko čitateľný kód sťažuje učenie sa kódu. Z tohto pravidla opäť určite existujú výnimky, pre náš účel tento lineárny vzťah platí.

Na vytvorenie porozumenia čitateľnosti špeciálne pre nových vývojárov použijeme dve kľúčové, zatiaľ bežné funkcie syntaxe programovacieho jazyka & blockchain programovacie jazyky. Najbežnejším z týchto konceptov je voľné a striktné písanie premenných.

Loose vs Strict Typing

Celé programovanie vo veľkej miere využíva premenné; neexistuje však iba jeden typ pravidelnej premennej – existuje veľa z nich, každá s jedinečnými vlastnosťami. Pravdepodobne ste už počuli niekoľko z týchto typov premenných, ako sú reťazce a celé čísla, & booleans. Každý programovací jazyk využíva tieto prirodzené typy vo svojej syntaxi; každý jazyk však tieto typy premenných vrství svojou vlastnou logikou odkazovania na premenné. Niektoré jazyky, napríklad Python & Javascript, umožniť vývojárom jednoducho použiť jednu premennú „var“: var príklad = „Coincentral“. Táto flexibilita umožňuje vývojárom obísť zdĺhavý proces zabezpečovania toho, aby bol každý typ premennej správne nastavený v každom riadku. Jazyky, ktoré skrývajú priradenie premenných na nízkej úrovni, sú známe ako voľne písané jazyky.

Druhá kategória, jazyky s prísnym typom, pozostávajú z podrobnejšej, aj keď popisnejšej syntaxe. Deklarovanie premenných v prísne zadaných jazykoch spočíva v konkrétnom vyhlásení pôvodného typu premennej, ktorú vývojár zamýšľa použiť: struna príklad = „Coincentral“. Ak to porovnáte s predchádzajúcou deklaráciou premennej, venujte zvláštnu pozornosť tučnému „reťazcu“. Toto striktné písanie premennej je kľúčovým rozdielom v syntaxi medzi voľne písaným jazykom & prísne písaný jazyk. Rozdiel v syntaxi sa vôbec nezužuje iba na deklarovanie premenných, jedná sa o kľúčovú vlastnosť návrhu jazyka, ktorá je všadeprítomná v celom jazyku..

Obaja voľne napísaní & prísne zadané jazyky ponúkajú kopu výhod & proti kompromisy. Jedným z najdôležitejších kompromisov pre nováčikov je krivka učenia spojená s oboma typmi. Voľne písané jazyky všeobecne ponúkajú nováčikom prívetivejšiu syntax & preto spodná bariéra vstupu; najväčšou okamžitou nevýhodou, ktorú je potrebné zvážiť, je však vážna medzera v základných znalostiach softvérového inžinierstva, pokiaľ ide o interakciu s typmi premenných.

Využite tieto informácie, akokoľvek to uznáte za vhodné, vizuálne oddelíme našu skupinu programovacích jazykov blockchain voľnými typmi & prísne zadaná syntax nižšie:

Jazyková krajina

Konečne sme pri hlavnej časti tohto článku, čo je katalóg na vysokej úrovni & prehľad dostupných programovacích jazykov blockchainu. Pre každú sekciu stručne predstavíme jazyk, zhrnieme jeho zamýšľaný účel v prostredí blockchainu, prehľad všetkých projektov alebo rámcov, ktoré sú momentálne vo výrobe, & nakoniec uveďte učebné zdroje pre ďalšie informácie.

C.++

C ++

Začnime najskôr najstarším jazykom v zozname: C ++. Prvýkrát predstavený jedným z Mr.Bjarne Stroustrup v roku 1985, bol C ++ vytvorený ako rozšírenie pôvodného jazyka C. Cieľom bolo zachovať flexibilitu a bezpečnosť & efektívnosť jazyka C, ale na zjednodušenie jazyka pre objektovejšie procesy. To vedie k tomu, že C ++ je objektovo orientovaný jazyk, zatiaľ čo C zostáva orientovaný na procesy.

C ++ je obzvlášť silný, oldschool, všeobecný jazyk pre domény, ktorý je veľmi populárny pre základné programovanie blockchainu.

Nového vývojára však treba upozorniť. Ako prísne písaný jazyk s relatívne zastaranou syntaxou oproti svojim rovesníkom je krivka učenia veľmi strmý. Pre nového vývojára je pravdepodobne najťažšie jazykové riešenie; napriek tomu je potrebné konštatovať, že základné vedomosti získané pretlačením krivky učenia C ++ sú neporovnateľné. Ako už bolo uvedené, svet blockchainu sa vo veľkej miere opiera o jazyk C ++, takže tu nenájdete žiaden nedostatok učebných zdrojov:

Bitcoinové jadro: https://github.com/bitcoin/bitcoin

Zvlnenie démona: https://github.com/ripple/rippled

Výukový program pre C ++: https://www.cplusplus.com/doc/tutorial/

Javascript

Javascript

JavaScript je voľne písaný skriptovací programovací jazyk pre web, ktorý podporujú všetky hlavné prehliadače; je to primárny jazyk používaný na vylepšenie statického HTML & Stránky CSS do plnohodnotných používateľských rozhraní. Niektoré z týchto bežných webových používateľských rozhraní zahŕňajú animácie, obnovujúce stránky a ponuky používateľov & dialógové okná, interaktívne mapy atď.

Tento jazyk poháňajúci všetky chovania webových stránok v moderných prehľadávačoch, Javascript, nikdy nemal opustiť najvyššiu úroveň prezentačnej vrstvy webovej aplikácie. Je ale nepopierateľné, že Javascript sa ujal, najmä pre nováčikov, bezprecedentným spôsobom. Keď Node.JS najskôr umiestni Javascript na stranu servera, potom Angular / React / Vue v podstate prepisuje zásobník HTML / CSS na stranu klienta, javový Javascript s plným zásobníkom sa stal zúrivým. Bez toho, aby sme sa ponorili príliš hlboko, je bezpečné povedať, že aspoň hŕstka skúsených vývojárov pri tomto odporúčaní zasténa. Aj keď tieto sťažnosti môžu mať určité zásluhy, nevytvára nasledujúcu vetu za nepravdivú:

Javascript je veľmi priateľský k nováčikom, dozrieva, & teraz zakorenené vo všetkých častiach moderného webového zásobníka.

Pre Javascript je popredným hráčom v oblasti podpory blockchainu projekt Lisk blockchain. Ich cieľová stránka hovorí v duchu ich viery v budovanie celého blockchainového ekosystému v Javascript: „Lisk uľahčuje vývojárom vytvárať a nasadzovať blockchainové aplikácie v JavaScripte.“

Učebné zdroje

Lisk: https://lisk.io/

Python

Python

Pomerne moderný programovací jazyk, Python, je často obľúbený pre nováčikov – a to z dobrého dôvodu! Python navrhol Guido van Rossum s jednoduchosť syntaxe & čitateľnosť nadovšetko. Od svojho uvedenia Python explodoval ako jednoduchý, ale výkonný jazyk s masívnou podporou komunity vedúcou k integrácii Pythonu doslova všade – od knižníc webového používateľského rozhrania, ako je Flask, až po základy strojového učenia, ako je NumPy.

Zatiaľ čo s natívnym Pythonom nemožno technicky prispieť k existujúcemu blockchainu, písať decentralizované aplikácie alebo držať počiatočnú ponuku mincí, bolo by chybou vynechať Python z tohto zoznamu, pretože takmer každý jeden blockchainový ekosystém má jednu alebo viac verejných nástroje napísané v & pre Python.

Učebné zdroje

Výukový program IBM Blockchain Foundations – https://developer.ibm.com/courses/all/ibm-blockchain-foundation-developer/

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

Choď

Choď

Programovací jazyk GO (skratka GOLang) je relatívne moderný doménový všeobecný jazyk vyvinutý v spoločnosti Google v roku 2007 & predstavený pre verejné použitie v roku 2012. GO bol navrhnutý ako robustný a viacúčelový jazyk a bol pokusom o kombináciu syntaxe. & užívateľská prívetivosť moderných jazykov, ako je Python & Javascript, s predstavením & bezpečnostné výhody starších kompilovaných jazykov, napríklad C..

GO je kompilovaný jazyk – čo znamená, že beží priamo v operačnom systéme. Táto funkcia umožňuje maximálnu flexibilitu, pokiaľ ide o použitie GO pre viac častí blockchainového projektu. Chcete prispieť priamo do existujúceho blockchainu? Ethereum má protokol SDK napísaný v GO. Chcete napísať inteligentnú zmluvu? Blockchain Linux-Foundation Hyperledger Fabric to má pokryté.

Učebné zdroje

Prejsť na dokumentáciu – https://golang.org/doc/

Go Ethereum – https://github.com/ethereum/go-ethereum

Látka Hyperledger – https://github.com/hyperledger/fabric-sdk-go

Pevnosť

Pevnosť

Solidity je ako javascript jazyk pre konkrétnu doménu vyrobené tímom Ethereum (Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai & iní) pre vytváranie decentralizovaných aplikácií na platforme Ethereum. Je to zďaleka najviac prispôsobené & mainstream DSL, ktorý zaznamenal v komunite Ethereum rozsiahle prijatie & blockchainový priemysel.

Pre každého, kto chce vytvoriť dApp alebo držať ICO, je Solidity jedným z najpriamočiarejších spôsobov, ako sa ponoriť priamo do srdca toho všetkého. Pretože vývoj Solidity začal pred hard-forkom Ethereum, našťastie odvrátil akékoľvek inžinierske efekty v časti občianskeho sporu, o čom svedčia obe Ethereum Classic & Podpora Ethereum pokračujúca Solidity. Tím Cardano tiež nedávno ohlásil podporu Solidity – vďaka čomu je Solidity jediným blockchainovým programovaním DSL podporovaným vo viacerých blockchainoch.

Samotný jazyk bol vytvorený s uprednostňovaním adopcie vývojárom, čo viedlo k syntaxi účelovo podobnej stále populárnejšiemu Javascriptu, samozrejme s niekoľkými zvratmi.

Učebné zdroje

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

Dokumentácia solídnosti – https://solidity.readthedocs.io/sk/v0.4.24/

V záverečnej

Bitcoin & technológia blockchain bude aj naďalej spôsobovať revolúciu v spôsobe dát & aktíva prevedené – je zrejmé, že dopad bude globálny & priemyselno-agnostický. Bez ohľadu na to, kde začínate, je prvý krok v učení sa jedného z týchto jazykov už podstatným prvým krokom. Nesúlad medzi dopytom a dopytom po tejto skupine zručností nemožno preháňať.

Najlepšie odhady uvádzajú počet aktívnych vývojárov na celom svete, okolo ~ 20 miliónov. Napriek tomu priemyselné odhady uvádzajú, že menej ako 1 za neskutočných 1 000 aktívni vývojári sa cítia istí svojimi schopnosťami, aby sa mohli považovať za programátorov blockchainu & sa aktívne hlásia na otvorené pozície. Pre menej aritmeticky naklonených to znamená, že existujú zhruba okolo 20 tisíc programátorov blockchainu.

programovanie1

Ak sa to zdá byť veľa, pozrime sa na Microsoft – s počtom zamestnancov zhruba 100 000 – predpokladajme, že majú najmenej jedného podporného personálu na jedného softvérového inžiniera, čo nám dáva okolo 50 tisíc programátorov. Na opačnej strane, bankový gigant Goldman Sachs v súčasnosti zamestnáva ~ 9 tisíc programátorov & inžinieri.

Ide o to – tento nedostatok blockchainových programátorov je veľmi skutočný & odpoveď na váš vnútorný dialóg ale je už neskoro na to, aby som sa začal učiť od nuly? je Č. Pre vývojárov, investorov, & regulačné orgány a všetci ostatní, ktorých sa to týka, je ešte stále veľmi skoro.

Jedinou otázkou je, na akom projekte chcete začať pracovať & aky problem chces zacat riesit?

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