Nel mondo dell'informatica ce ne sono attualmente almeno alcuni 8900 diversi linguaggi di programmazione e molti di loro hanno usi nel mondo Web3. Si tratta di un numero enorme di linguaggi, soprattutto se teniamo conto che l'elenco dei linguaggi di programmazione più utilizzati è molto più breve (meno di 100). Questo ci dà un'idea chiara che i linguaggi di programmazione sono uno strumento diffuso nel mondo dell'informatica generale e lo stesso vale per il mondo Web3.
Si può dire che il mondo dei linguaggi di programmazione per Web3 sia iniziato con Bitcoin Script , ed è così per un semplice motivo: Web3 è il decentramento del Web e Bitcoin Script, anche con la sua capacità limitata, consente di costruire tale decentramento.
Infatti, sviluppi come il Monete colorate, progetti come Counterparty o BCOPD di ChromaWay (che diventerebbe parte di OpenAssets), sono solo i primi tentativi di rendere Web3 una realtà più ampia costruita su Bitcoin. Attualmente, questi tentativi sono replicati in progetti come RSK e Bisq, che chiariscono che Web3 su Bitcoin è possibile, e progetti in costruzione come RGB e Taro Protocol, ribadiscono questa idea.
Tuttavia, l'arrivo di Ethereum ha dato un enorme impulso all'idea di costruire Web3. Ciò è dovuto all'arrivo del contratti intelligenti e Turing Linguaggi di programmazione completi, come Solidity. In questo modo, le possibilità sono state ampliate e ora abbiamo la possibilità di utilizzare un numero enorme di linguaggi di programmazione per costruire Web3.
I 10 linguaggi di programmazione che devi conoscere per costruire Web3
Abbiamo già visto che la lista dei linguaggi di programmazione è molto ampia, ma i più utilizzati per costruire Web3 sono:
HTML5
HTML5 non può davvero essere definito come un linguaggio di programmazione in sé (è strettamente un linguaggio di markup), ma come un'unione di strumenti standardizzati progettati per costruire ambienti Web. È, per dirla più semplicemente, il framework su cui costruire il Web visivo e interattivo che conosciamo oggi.
HTML5 unisce HTML, JavaScript e CSS a creare e progettare applicazioni sia in Web2 che in Web3. Ad esempio, ogni volta che visiti Facebook, è presente HTML5. Ma quando visiti Uniswap, lo è anche HTML5, dopotutto sono entrambe pagine web, solo il loro funzionamento interno le rende diverse.
Quindi, il primo "linguaggio" che devi tenere in considerazione quando crei servizi in Web3 è proprio HTML5, poiché ti darà gli strumenti per sviluppare la parte visiva della tua applicazione Web.
Solidità (o il linguaggio di smart contract della blockchain)
Il secondo linguaggio da tenere in considerazione quando si programma in blockchain è Solidity, il linguaggio di programmazione di smart contract di gran parte delle blockchain più utilizzate.
Solidity È il linguaggio per eccellenza, visto che la maggior parte dei progetti Web3 sono sviluppati su Ethereum o reti compatibili con il Ethereum Virtual Machine (EVM). Quindi, conoscere Solidity ti aiuta non solo a farlo pianificare contratti intelligenti su Ethereum, ma su un'ampia selezione di blockchain che Solidity ed EVM utilizzano per creare le loro soluzioni di smart contract.
Ad esempio, Solidity è utilizzato in:
- Poligono
- Catena BNB
- Avalanche
- arbitrato
- Fantom
- Cronos
- Klaytn
- GNOSI
- Kava
- Zelo
- Raggio di luna
- RSK
- Astar
- Moonriver
- Metis
- Oasi
- telos
- Theta
- Wanchain
- Armonia
E questo è un breve elenco di oltre 100 blockchain supportate da EVM, che chiarisce il fatto che conoscere Solidity apre enormi possibilità nello sviluppo Web3.
Naturalmente, entra in gioco anche l'altro lato di questa situazione: ci sono piattaforme blockchain compatibili con Web3 che non sono compatibili con Solidity. In questo caso entrano in gioco altri linguaggi di programmazione, come:
- C++ utilizzato in EOS e Ontologia.
- Haskell usato in Cardano.
- Missile usato in NEO e la sua NEO Virtual Machine, che offre supporto nativo per .NET (C#, VB.Net e F#) così come Python, Go, Java, Kotlin e JavaScript.
- Rust è usato in reti come cosmo, tramite CosmosWASM, sebbene sia disponibile anche il supporto per altre lingue.
Come puoi notare, il supporto ai linguaggi di programmazione nella blockchain è molto ampio, e le possibilità di creare smart contract utilizzandoli sono praticamente infinite.
Python
Python è un linguaggio di programmazione con enormi possibilità, non solo per la creazione di applicazioni desktop, ma per campi diversi come la ricerca scientifica, l'analisi dei dati, l'intelligenza artificiale e, naturalmente, la blockchain.
In blockchain, Python è ampiamente utilizzato per l'analisi dei dati, lo sviluppo di applicazioni Web (utilizzando framework come Django o Flask), applicazioni desktop (Electrum Wallet, ne è un esempio) o semplicemente per abilitare l'accesso alle API Web3 utilizzando questo linguaggio ampiamente adottato nel mondo della informatica (ad esempio, Web3 Python consente di creare applicazioni decentralizzate compatibili con EVM).
È proprio la grande versatilità di Python che lo rende così ampiamente utilizzato nell'ecosistema. E in effetti, ora con l'avvento di potenti interfacce AI, la maggior parte delle quali sviluppate in Python, questo linguaggio vedrà un'enorme esplosione di utilizzo per integrare in modo più efficace Web3 e AI.
Ruggine
Rust è un altro linguaggio di programmazione che viene utilizzato nel mondo della blockchain, poiché è progettato per farlo essere al sicuro per impostazione predefinita a livello di memoria (memoria sicura). Ciò significa che i programmi creati in Rust hanno protezioni che per impostazione predefinita li rendono più sicuri senza perdere velocità.
La ruggine è ampiamente utilizzata nella blockchain per generare le famose Macchine Virtuali (VM) o per contratti intelligenti che cercano di evitare problemi legati alla gestione degli spazi di memoria e alla gestione delle variabili. Inoltre, viene utilizzato anche nell'implementazione di nodi e software di infrastruttura che cercano di essere più sicuri per servire gli utenti desiderosi di decentralizzazione.
Un buon esempio di questo utilizzo può essere visto in Rust-Web3, un'implementazione di Web3 per Ethereum. Possiamo anche trovarlo nella build di SputnikVM, un EVM compatibile con WASM per reti basate su Ethereum implementato in Rust.
CosmosWasm o CosmWasm è anche in grado di utilizzare Rust per generare contratti intelligenti con supporto multi-chain o multi-chain. Solana e NEAR usano anche Rust per la generazione dei loro contratti intelligenti.
Infatti, Rust è uno dei linguaggi di programmazione più utilizzati per costruire sistemi di privacy come zk-SNARKs e zk-STARKs su diverse blockchain, che è considerato il futuro di molte di queste reti.
Dattiloscritto
TypeScript è un superset di JavaScript, ovvero, TypeScript è JavaScript con vitamine sotto forma di lievi modifiche alla sintassi, digitazione forte e una serie di aggiunte intese a migliorare la leggibilità e la purezza del codice.
Essendo un superset, chi conosce JavaScript si adatta velocemente a TypeScript, e generalmente chi arriva a TypeScript non lo abbandona. Dopotutto, quello che puoi fare in JavaScript, puoi farlo in TypeScript, di solito molto più semplice e con strumenti migliori se ti interessa avere un codice più sicuro.
Qui non parleremo del tipico flamewar di JavaScript vs TypeScript, poiché alla fine entrambi sono linguaggi di programmazione perfettamente capaci che gli sviluppatori possono utilizzare per i loro progetti.
Ma la crescita di TypeScript nel settore lo inserisce nell'elenco per un motivo: molti progetti Web3 stanno migrando da JavaScript a TypeScript. Un buon esempio di ciò è la stessa libreria web3.js, che inizialmente era scritta in JavaScript e dal 2020 è iniziata la migrazione a TypeScript (dalla versione 1.3.0).
Go
Go o Golang, è un altro linguaggio di programmazione che ha subito una rapida espansione nel suo utilizzo a causa di una situazione molto simile a quella che vediamo in Rust: sicurezza.
Go è un linguaggio di programmazione incentrato su fornire un ambiente di memoria sicuro, un ottimo sistema di netturbino, facilitano la compilazione incrociata (Cross-chain, consentendo rapidamente il supporto multipiattaforma), tra le altre caratteristiche che lo rendono efficiente a livello computazionale.
Nel mondo blockchain e P2P ci sono due grandi progetti che si distinguono per l'utilizzo di Go come principale linguaggio di programmazione. Il primo progetto è Vai Ethereum o GETH, il software leader per i nodi Ethereum e le reti compatibili. Mentre il secondo progetto è IPFS o file system interplanetario, la piattaforma principale per l'archiviazione dei dati decentralizzati utilizzati nelle DApp.
Ragioni sufficienti per imparare Go? La verità è che ce ne sono molte altre, soprattutto se ti interessano implementare infrastrutture blockchain. Ad esempio, Docker, uno dei software container più utilizzati al mondo, è scritto in Go, quindi conoscere il linguaggio aiuta i programmatori a creare strumenti personalizzati (soluzioni indoor) per la propria infrastruttura se utilizzano Docker.
Progetti come Kubernetes, InfluxDB, OpenShift e lnd (un'implementazione del Lightning Network di Bitcoin) sono altri progetti legati al mondo blockchain che sono anch'essi costruiti su Go.
Ruby
Ruby è uno di quei linguaggi più fraintesi nel mondo della programmazione. Molti ti diranno che non vale la pena impararlo, che è complesso e difficile. La realtà è che Ruby è ampiamente utilizzato nel settore per creare soluzioni affidabiliIn effetti, molti scambi si affidano a Ruby per sviluppare il software che esegue le loro piattaforme e, non commettere errori, lo stesso vale nel mondo decentralizzato.
Reti come Ethereum hanno tutto il necessario per utilizzare questo linguaggio nello sviluppo di Dapps. Lo stesso accade in altre reti come NEO, Cosmos, Avalanche o Polkadot. Un noto progetto che utilizza questo linguaggio è Peatio, considerato uno dei più grandi progetti open source per lo sviluppo degli scambi e che può essere utilizzato per creare scambi decentralizzati (DEX).
GraphQL
GraphQL non è un linguaggio di programmazione in quanto tale, ma un linguaggio per la creazione di richieste di dati tramite API.
GraphQL te lo consente scrivere schemi di richiesta che utilizzano le API di una piattaforma per ottenere l'accesso a tali informazioni. In questo modo, è più facile per i programmatori accedere ai dati che si trovano all'interno di una piattaforma, utilizzando per essa una struttura standardizzata.
GraphQL ha iniziato la sua vita come sviluppo interno di Facebook e, sin dal suo rilascio come software gratuito, è stato utilizzato in diversi progetti con lo stesso obiettivo: rendere la vita più facile agli sviluppatori.
Nella blockchain, GraphQL è abituato a accedere a dati di terze parti accessibili tramite API. Ad esempio, Bitquery ha un accesso API compatibile con GraphQL con il quale è possibile accedere ai dati da blockchain come Bitcoin, Bitcoin Cash, Ethereum, Litecoin e altre criptovalute e blockchain.
L'utilità di questo è che puoi accedere a tali informazioni senza avere direttamente quell'infrastruttura, riducendo i costi e accelerando lo sviluppo. Se non ti piacciono le soluzioni centralizzate, puoi rivolgerti ad altri progetti come The Graph, che offrono anche questo potenziale ma utilizzando soluzioni decentralizzate.
SQL e noSQL
Quest'ultimo, ovviamente, può essere integrato con la conoscenza di linguaggi come SQL e noSQL. Entrambi i linguaggi sono utili per lo sviluppo di applicazioni Web3 o applicazioni non Web3 ma comunque utili nello spazio blockchain.
Ad esempio, un block explorer è particolarmente utile per gli utenti di criptovalute, ma non sarebbero così utili se non fosse per i database SQL che supportano il loro funzionamento.
In questo mondo ci sono molte scelte da fare, ma le più importanti sono:
- SQL: MySQL, MariaDB, MSSQL, OracleDB o PostgreSQL
- noSQL: MongoDB, Redis, Cassandra, Firebase, InfluxDB.
Conclusioni
Come puoi vedere in questo elenco abbiamo nominato più di 10 lingue (soprattutto durante la programmazione di contratti intelligenti) ma anche così, abbiamo menzionato le principali aree di interesse che dovresti tenere in considerazione quando sviluppi applicazioni Web3.
La realtà è che il mondo della programmazione è in continua evoluzione, che ci sono strumenti che possono o meno essere più adatti a un determinato compito, ma è qualcosa che dovresti studiare quando inizi a sviluppare un'applicazione, per decidere finalmente quali linguaggi e strumenti utilizzerai per realizzare il tuo progetto.