Ghidul final pentru programarea Blockchain pentru noii dezvoltatori

Vreau să contribui cu codul la unul dintre aceste proiecte – cum pot începe?

Există o limbă utilizată special pentru blockchain-uri?

Nu știu cum să programez – pot să intru direct în programarea blockchain?

Cu câteva luni în urmă, am avut plăcerea să moderez un grup de patru programatori NEO activi la Conferința NEO Dev din San Francisco. Subiectul panoului a fost programarea generală a blockchain-ului, totuși, o avertizare suplimentară a făcut ca acest grup special de participanți să fie foarte interesant: toți cei patru programatori au folosit un limbaj diferit de alegere pentru a lucra la proiectul NEO.

Unul a favorizat limbajul C # al școlii vechi, altul a produs scripturi Python, un al treilea a evanghelizat implementarea Javascript, care a fost populară. & al patrulea participant a discutat cu entuziasm despre o viitoare limbă NEO specifică domeniului.

Două gânduri mi-au rămas după panou:

  1. Compilatorul NEO are un suport serios pentru dezvoltarea multilingvistică
  2. Curba de învățare pentru programarea blockchain este brutală și puternic exasperată de lipsa resurselor organizate, în special pentru noii dezvoltatori

Acest articol își propune să abordeze punctul 2. Maximizarea eficacității acestui ghid necesită reducerea publicului așteptat la o nișă îngustă: nou & programatori juniori care doresc să intre în mod specific în spațiul blockchain. Pentru dezvoltatori veterani, programatori, & inginerii software examinând – următoarea secțiune poate oferi unele avantaje, cu toate acestea, probabil că le veți găsi elementare. Inginerii superiori își pot maximiza timpul parcurgând un limbaj familiar la alegere, & începând să rupă resursele de învățare atașate & documentație.

Deci crezi că ai vrea să intri în programarea blockchain-ului, nu? Să începem prin a defini mai exact ce presupune programarea blockchain.

Noua industrie

În general, subiecte care te interesează personal & alinierea cu valorile dvs. este mai ușor de învățat decât memorarea memorată a unui lucru fără un buy-in clar; Subliniez foarte mult că acest principiu se aplică din ce în ce mai mult într-un domeniu înnăscut complex, care evoluează rapid, cum ar fi programarea blockchain. Înainte de a începe, să verificăm câteva dintre provocările cu care se confruntă un dezvoltator de blockchain în industria în plină dezvoltare.

Primul & cel mai important este discrepanța publică continuă între ceea ce presupune sau nu exact un „blockchain”. Petreceți ceva timp în crypto-twitter & va deveni clar modul în care cripto-comunitățile tribale, & pe de o parte, comunitățile lor de dezvoltare au devenit. Tribalismul necontrolat duce în mod firesc la conversații părtinitoare asupra a ceea ce ar trebui să fie conținutul obiectiv, adăugând un alt strat de ofuscare pentru dezvoltatorii care intră.

Apoi, cu majoritatea proiectelor în faza lor de testnet & cu proiecte live care se actualizează continuu, se bifurcă, & victima hacks, nu este surprinzător să vezi documentația incompletă & tutoriale neterminate. Suprafața terenului evoluează rapid, ceea ce necesită o iterație consecventă – nicio sarcină ușoară pentru nicio echipă.

Ultima este adevărata stigmă că programarea blockchain este complet complicată & alcătuit din mai multe câmpuri intersectate care necesită cel puțin o înțelegere rudimentară a următoarelor: economie, criptografie, monedă, structuri de date, politică financiară & fizică. Învățarea chiar și a părților din aceste câmpuri relevante pentru programarea blockchain necesită mult timp pentru a înțelege – fără comenzi rapide aici.

Tribalism, documentare întâmplătoare & fundamentele complicate. Toate semnele de avertizare ale unei urcări abrupte urcă înainte. Pentru a vă motiva în mod adecvat prin aceste bariere la intrare, vă ajută să explorați cu claritate ce anume programare blockchain înseamnă în primul rând. În plus, ar putea ajuta să descoperiți …


De ce vrei să înveți programarea blockchain? La ce proiect doriți să lucrați în mod specific? Ce probleme încercați să rezolvați?

Deconstruirea programării Blockchain

Dacă știți deja la ce proiect doriți febril să lucrați, felicitări – vă sugerez să vă îndreptați către depozitul GitHub al organizațiilor sau ctrl-Fing limba de alegere aici pentru a citi mai departe. Următoarea secțiune va beneficia cel mai mult de cei care nu pot identifica cu exactitate ce proiect & abilitățile / limbajul necesar li se potrivește cel mai bine ca punct de reper pentru potențialele foi de parcurs de învățare viitoare.

În general, programarea blockchain poate însemna trei lucruri diferite:

  • Implementarea unei oferte inițiale de monede (ICO)
  • Construirea unui contract inteligent sau a unei aplicații descentralizate (DAPP)
  • Contribuirea la un existent sau implementarea unui nou blockchain

Luați în considerare cu tărie cele trei opțiuni descrise mai sus, deoarece fiecare oferă o gamă de limbi diferite & curbele de învățare. În plus, acestea ar trebui să vă ajute să vă apropiați cu un pas de clarificarea exactă preferinţă. O segmentare suplimentară pentru criteriile lingvistice este chiar după colț; totuși, nu uitați că preferința personală este mai mare decât pentru motivarea dvs. prin învățarea unei noi abilități.

Presupunând că un inginer software de o zi este la fel de interesat să afle despre toate cele trei tipuri de programare blockchain – la ce alte criterii se pot orienta pentru a străluci pe o lumină pe cea mai prietenoasă cale înainte?

  • Limbi cu scop general vs limbi specifice domeniului
  • Citibilitatea sintaxei & Curbă de învățare

Privind în ansamblu aceste trei criterii, vom avea în sfârșit un cadru solid de context din care ne vom aplica listei noastre de limbi.

Scop general vs specific domeniului

Clasificarea instrumentelor pe calități calitative este rareori clară – limbajele de programare nu diferă. Aici vom împărți toate limbajele de programare blockchain posibile în două categorii diferite: limbaje specifice domeniului & limbi de uz general.

De obicei, un limbaj specific domeniului (DSL) este un limbaj pentru computer conceput & potrivit special pentru o anumită aplicație. Un limbaj cu scop general (GPL), așa cum îl descrie în mod adecvat numele, este un limbaj care se aplică pe scară largă în multe domenii de programare.

Limbaj cu scop general

Limbile cu scop general sunt limbile despre care probabil ați auzit, cum ar fi Java, Javascript, Ruby, C++, & Piton. Printre limbile cu scop general, se pot găsi modalități infinite de a le clasifica în continuare în funcție de calitativ & diferențe cantitative & asemănări, cum ar fi lizibilitatea, compilarea, tastarea strictă, frontend / backend, etc … O regulă generală bună pentru prima utilizare este următoarea:

Javascript, Python, & Rubinul este, în general, mai ușor pentru noii veniți, deoarece au o curbă de învățare mai mică în timp ce C++ & Java necesită de obicei mai mult timp pentru a învăța din cutie.

Rețineți, editorul se abține de la a comenta a doua & consecințele la nivelul al treilea ale unui nou venit care începe cu un grup de limbi sau altul. Există mai multe dezbateri în alte caracteristici ale acestor limbi, cum ar fi forțarea noilor veniți să înțeleagă mai întâi tipurile de variabile printr-un limbaj strict tipat pe care îl ocolim pentru a maximiza utilizarea aici pentru un nou dezvoltator care se apropie strict de spațiul blockchain.

Cel mai mare pro pentru noii veniți care primesc un scop general este capacitatea imediată de a aplica acel limbaj într-un număr mare de domenii în afara programării blockchain. Din păcate, flipside-ul aceleiași monede creează un inconvenient pentru acei nou-veniți care doresc să se alăture pe piața muncii, deoarece probabil vei concura direct împotriva seniorilor & ingineri veterani de software din alte domenii, cu ani de experiență folosind acest limbaj de uz general.

Limbaj specific domeniului

Pentru a oferi context, să trecem înapoi de la programarea blockchain. Deși este un câmp de programare destul de nou, conceptul unui nou câmp de programare în sine nu este atât de nou – nu trebuie să te uiți prea departe dincolo de cuvântul-cheie recent-recent învățare automată pentru a vedea asta. Câteva câmpuri de programare suplimentare care au asistat, de asemenea, la o evoluție naturală a unuia sau mai multor limbaje specifice domeniului sunt: ​​statisticile (R, MatLab), interogarea bazelor de date (SQL), interfața web (HTML, CSS).

Programatorii blockchain de limbaj specific domeniului au o cerere foarte mare, cu foarte puțină ofertă: aceste limbi tinere, al căror singur scop este una sau mai multe dintre cele trei opțiuni de programare blockchain enumerate mai sus, oferă, fără îndoială, cea mai clară cale către destinația plasamentului în carieră.

Deoarece aceste limbi au fost concepute de la început cu blockchain & având în vedere ingineria contractelor inteligente, dezvoltatorii cu experiență se pot lupta să reajusteze cadrele anterioare de referințe din alte limbi.

În timp ce noii veniți, cu obiceiuri proaspete de programare în ardezie, înclină tot ceea ce este necesar pentru a începe implementarea codului în proiectele actuale sau viitoare.

Din nou, ocolind fundamentele de programare foarte reale găsite în limbajul de uz general, se poate găsi pe el sau ea însăși la un dezavantaj semnificativ în linie dacă limbajul specific domeniului la alegerea sa este într-un fel depreciat..

Diagrama următoare descompune grupul de posibile puncte de intrare de programare blockchain dintr-o segmentare DSL / GDL; limbile transparente / îndepărtate sunt limbi nu acoperit pe lung:

Citibilitatea sintaxei & Curbă de învățare

Diferite limbaje de programare oferă niveluri diferite de lizibilitate bazate pe cât de simple sau complexe sunt sintaxă este. Sintaxa se referă la ortografia desemnată & reguli gramaticale ale unui limbaj de programare. De obicei, lizibilitatea sintaxei se corelează cu abruptitatea curbei de învățare; codul greu de citit face codul greu de învățat. Din nou, există cu siguranță excepții de la această regulă, totuși, pentru scopul nostru, această relație liniară este adevărată.

Vom folosi două caracteristici cheie, dar comune, ale sintaxei limbajului de programare pentru a crea o înțelegere a lizibilității special pentru noii dezvoltatori & limbaje de programare blockchain. Cea mai comună dintre aceste concepte este tiparea variabilă slabă vs..

Slăbire vs tastare strictă

Toate programările utilizează pe scară largă variabile; cu toate acestea, nu există pur și simplu un singur tip variabil regulat – există multe, fiecare cu proprietăți unice. Probabil ați auzit câteva dintre aceste tipuri de variabile, cum ar fi șiruri, numere întregi, & booleeni. Fiecare limbaj de programare valorifică aceste tipuri naturale în sintaxă; cu toate acestea, fiecare limbă stratifică aceste tipuri de variabile cu propria lor logică de referință a variabilelor. Unele limbi, cum ar fi Python & Javascript, permiteți dezvoltatorilor să utilizeze pur și simplu o singură variabilă „var”: var exemplu = „Coincentral”. Această flexibilitate permite dezvoltatorilor să ocolească procesul obositor de a se asigura că fiecare tip de variabilă este setat corespunzător în fiecare linie. Limbile care ascund atribuirea variabilelor de nivel scăzut sunt cunoscute ca limbi slab tipizate.

Această din urmă categorie, limbi strict tipate, constă într-o sintaxă mai detaliată, deși mai descriptivă. Declararea variabilelor în limbi strict tipizate constă în declararea specifică a tipului de variabilă original pe care intenționează să îl utilizeze dezvoltatorul: şir exemplu = „Coincentral”. Dacă comparați acest lucru cu declarația variabilă anterioară, acordați o atenție deosebită „șirului” cu caractere aldine. Această tastare strictă a unei variabile este diferența cheie în sintaxă între limbajul slab tastat & limbaj strict tastat. Diferența de sintaxă nu este deloc restrânsă doar la declararea variabilelor, este o caracteristică esențială de proiectare a limbii care este omniprezentă în întreaga limbă..

Ambele sunt slab tipizate & limbile strict tastate oferă o grămadă de avantaje & dezavantaje. Unul dintre cele mai importante compromisuri de luat în considerare pentru noii veniți este curba de învățare asociată ambelor tipuri. În general, limbile slab tipizate oferă o sintaxă mai prietenoasă pentru noii veniți & prin urmare, o barieră mai mică la intrare; cu toate acestea, cel mai mare dezavantaj imediat de luat în considerare este un decalaj grav în cunoștințele fundamentale de inginerie software atunci când vine vorba de interacțiunea cu tipurile variabile.

Folosiți aceste informații oricum considerați oportun, separăm vizual grupul nostru de limbaje de programare blockchain prin tastare liberă & sintaxă strict tipată mai jos:

Peisajul limbajului

În sfârșit ne aflăm la secțiunea de bază a acestui articol, care este un catalog la nivel înalt & sondaj al limbajelor de programare blockchain disponibile. Pentru fiecare secțiune vom introduce pe scurt limbajul, vom rezuma scopul intenționat al acestuia în mediul blockchain, vom prezenta toate proiectele sau cadrele aflate în prezent în producție, & în cele din urmă enumeră resursele de învățare pentru informații suplimentare.

C++

C ++

Să începem cu cea mai veche limbă din listă: C ++. Introdus mai întâi de un singur domn Bjarne Stroustrup în 1985, C ++ a fost creat ca o extensie a limbajului C original. Ideea era să menținem flexibilitatea, securitatea & eficiența C, dar pentru a raționaliza limbajul pentru procese mai orientate obiect. Astfel, conducând la C ++ fiind un limbaj orientat obiect, în timp ce C rămâne orientat spre proces.

C ++ este un limbaj deosebit de puternic, oldschool, domeniu general, destul de popular pentru programarea blockchain de bază.

Cu toate acestea, noul dezvoltator va fi avertizat. Fiind un limbaj strict tastat, cu o sintaxă relativ depășită în raport cu colegii săi, curba de învățare este foarte abrupt. Este probabil cel mai greu de utilizat pentru un nou dezvoltator; totuși, trebuie să se afirme că cunoștințele fundamentale obținute prin împingerea curbei de învățare C ++ sunt egale. După cum sa menționat anterior, lumea blockchain se bazează puternic pe C ++, astfel încât să nu găsiți lipsă de resurse de învățare:

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

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

Tutorial C ++: https://www.cplusplus.com/doc/tutorial/

Javascript

Javascript

JavaScript este un limbaj de programare de tip script, slab, pentru web, acceptat de toate browserele majore; este limbajul principal utilizat pentru a îmbunătăți HTML-ul static & Pagini CSS către interfețe UI complete. Câteva dintre aceste UI-uri web comune includ animații, pagini reîmprospătate, meniuri pentru utilizatori & casete de dialog, hărți interactive, etc …

Acest limbaj care alimentează toate comportamentele paginilor web din browserele moderne, Javascript, nu trebuia să părăsească niciodată stratul de prezentare la cel mai înalt nivel al unei aplicații web. Cu toate acestea, este incontestabil faptul că Javascript a decolat, în special pentru noii veniți, într-un mod fără precedent. Cu Node.JS plasând mai întâi serverul Javascript, apoi Angular / React / Vue rescriând în principiu stiva HTML / CSS partea client, Javascript cu stivă completă a devenit la modă. Fără a aprofunda prea adânc, este sigur să spunem că cel puțin o mână de dezvoltatori veterani vor gemea la această recomandare. Deși pot exista unele merite pentru aceste plângeri, aceasta nu face următoarea propoziție falsă:

Javascript este foarte nou pentru utilizatori, se maturizează, & acum înrădăcinată în toate părțile stivei web moderne.

Pentru Javascript, primul lider în asistența blockchain este proiectul blockchain Lisk. Pagina lor de destinație își exprimă volumul în ceea ce privește credința lor în construirea unui întreg ecosistem blockchain în Javascript: „Lisk facilitează dezvoltatorilor să construiască și să implementeze aplicații blockchain în JavaScript.”

Resurse de învățare

Lisk: https://lisk.io/

Piton

Piton

Un limbaj de programare relativ modern, Python este adesea favoritul pentru noii veniți – și dintr-un motiv bun! Python a fost proiectat de Guido van Rossum cu simplitatea sintaxei & lizibilitate mai presus de orice. De la lansare, Python a explodat ca un limbaj simplu, dar puternic, cu suport comunitar masiv care duce la integrarea Python literalmente peste tot – de la bibliotecile de interfață web precum Flask la elemente esențiale de învățare automată precum NumPy.

În timp ce cu Python nativ nu se poate contribui tehnic la un blockchain existent, să scrie aplicații descentralizate sau să dețină o ofertă inițială de monede, ar fi o greșeală să lăsăm Python în afara acestei liste, deoarece aproape fiecare ecosistem blockchain are unul sau mai multe instrumente scrise în & pentru Python.

Resurse de învățare

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

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

MERGE

MERGE

Limbajul de programare GO (prescurtare pentru GOLang) este un limbaj relativ modern, general, dezvoltat la Google în 2007 & prezentat pentru uz public în 2012. Conceput ca un limbaj robust, multifuncțional, GO a fost o încercare de a combina sintaxa & ușurința utilizării limbilor moderne, cum ar fi Python & Javascript, cu spectacolul & avantajele de securitate ale limbilor vechi, compilate, cum ar fi C.

GO este un limbaj compilat – ceea ce înseamnă că rulează direct într-un sistem de operare. Această caracteristică permite flexibilitate maximă atunci când vine vorba de utilizarea GO pentru mai multe părți ale unui proiect blockchain. Doriți să contribuiți direct la un blockchain existent? Ethereum are un protocol SDK scris în GO. Doriți să scrieți un contract inteligent? Blockchain-ul Linux-Foundation Hyperledger Fabric îl acoperă.

Resurse de învățare

Documentație Go – https://golang.org/doc/

Du-te Ethereum – https://github.com/ethereum/go-ethereum

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

Soliditate

Soliditate

Soliditatea este asemănătoare unui javascript limbaj specific domeniului realizat de echipa Ethereum (Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai & altele) pentru crearea de aplicații descentralizate pe platforma Ethereum. Este de departe cea mai adaptată & DSL principal, care a cunoscut o amplă adoptare în cadrul comunității Ethereum & industria blockchain-ului.

Pentru oricine dorește să construiască un dApp sau să dețină un ICO, Solidity este unul dintre cele mai simple moduri de a scufunda direct în inima tuturor. Întrucât dezvoltarea Solidity a început înainte de hard-fork-ul Ethereum, din fericire a evitat orice efect de inginerie asupra unei părți a dezacordului civil, după cum demonstrează ambele Ethereum Classic & Ethereum continuă sprijinul Solidity. Mai mult, echipa Cardano a anunțat recent suportul Solidity – transformând Solidity în programarea unică blockchain DSL acceptată în mai multe blockchain-uri.

Limbajul în sine a fost creat cu adoptarea prioritară a dezvoltatorului, ceea ce a dus la o sintaxă similară cu Javascriptul popular, cu, bineînțeles, câteva răsuciri.

Resurse de învățare

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

Documentație soliditate – https://solidity.readthedocs.io/en/v0.4.24/

În încheiere

Bitcoin & tehnologia blockchain va continua să revoluționeze modul în care datele & activele sunt transferate – este clar că impactul va fi global & industrie-agnostic. Indiferent de unde începeți, a face primul pas în învățarea uneia dintre aceste limbi este deja un prim pas substanțial. Nepotrivirea cererii-ofertă pentru acest set de competențe nu poate fi exagerată.

Cele mai bune estimări plasează numărul de dezvoltatori activi la nivel mondial, la aproximativ ~ 20M. Cu toate acestea, estimările industriei afirmă că mai puțin de 1 dintr-o mare 1000 dezvoltatorii activi se simt încrezători în abilitățile lor de a se considera programatori blockchain & aplică activ la poziții deschise. Pentru cei mai puțin înclinați aritmetic, asta înseamnă că există aproximativ 20 de mii de programatori blockchain.

programare1

Dacă pare mult, să ne uităm la Microsoft – cu un efectiv de aproximativ 100k – să presupunem că au cel puțin un personal de asistență pentru fiecare inginer software, ceea ce ne lasă în jur de 50 de mii de programatori. Pe partea inversă, gigantul bancar Goldman Sachs are în prezent aproximativ 9 mii de programatori & ingineri.

Ideea este că această lipsă de programatori blockchain este foarte reală & răspunsul la dialogul tău interior dar este prea târziu pentru mine să încep să învăț de la zero?? este NU. Pentru dezvoltatori, investitori, & autoritățile de reglementare și toți ceilalți implicați sunt încă foarte timpurii.

Singura întrebare este la ce proiect doriți să începeți să lucrați & ce problemă vrei să începi să rezolvi?

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