🇮🇹 "Perché Cardano ha scelto Haskell - e perché dovrebbe interessarvi"

:it: “Why Cardano chose Haskell—and why you should care” scritto da @ElliotHill della Fondazione Cardano

Traduzione italiana a cura di Lordwotton di RIOT Stake Pools. Se apprezzi queste traduzioni, per favore valuta di supportare il mio lavoro delegando i tuoi ada a RIOT :pray:


Perché Cardano ha scelto Haskell - e perché dovrebbe interessarvi

(Scritto da @ElliotHill della Fondazione Cardano)

Se siete stati coinvolti nell’ecosistema Cardano per un po’ di tempo, potreste aver imparato che la nostra blockchain è costruita utilizzando un linguaggio di programmazione funzionale chiamato ‘Haskell’.

Haskell è la base di Plutus, il linguaggio di programmazione per contratti intelligenti di Cardano, e alimenta anche Marlowe, il nostro linguaggio specifico per i contratti finanziari intelligenti, di cui potete saperne di più nel nostro precedente articolo che introduce applicazioni decentralizzate.

Tuttavia, Haskell non è uno dei linguaggi di programmazione più conosciuti. Né è ampiamente ripreso da chi ha appena iniziato il suo viaggio come sviluppatore. Infatti, il “Popularity of Programming Languages Index” classifica Haskell al 27° posto tra i linguaggi più ricercati su Google a partire da novembre 2020, con Python e Java al primo posto.

Quindi, con questo in mente, molti potrebbero chiedersi perché Cardano è stato implementato in Haskell? Il motivo è che Haskell, soprattutto in combinazione con i metodi formali, è adatto a scrivere codice robusto e corretto. Ma per capire perché questo è importante per Cardano, dobbiamo prima di tutto esplorare che cos’è Haskell ed esaminare il suo ruolo come linguaggio di programmazione funzionale.

Che cos’è Haskell?

Prendendo il nome dal defunto matematico americano Haskell Curry, Haskell affonda le sue radici sia nel mondo accademico e nello studio della logica, sia in precedenti iterazioni di linguaggi di programmazione funzionale, come Miranda.

Queste prime influenze, che hanno stimolato un interesse più diffuso per i linguaggi di programmazione funzionale in generale, hanno portato alla definizione formale di Haskell nel 1990. Tuttavia, diversi ricercatori, come il professor Phillip Wadler, avevano già iniziato a lavorare su componenti proto-Haskell, come le classi di tipo, già nel 1987, prima della versione 1.0 di Haskell.

I linguaggi di programmazione funzionale pongono l’accento sull’uso di funzioni “pure”, ove possibile: funzioni che danno sempre lo stesso risultato per lo stesso input. Mentre questo è un dato di fatto per i matematici, i programmatori di computer sono abituati all’idea che le “funzioni” in un programma per computer dipendono anche dallo stato interno, dai dati su disco o dall’ora corrente. Separando questi “effetti collaterali” dalla logica principale, ove possibile, i programmatori Haskell possono rendere molto più facile ragionare sul loro codice (“ragionamento equazionale”). Questo non solo rende più facile scrivere il codice corretto, ma è anche inestimabile per i test, o anche per provarne la correttezza.

Evolvendosi nel tempo, Haskell ha attraversato diverse iterazioni, come Haskell 98 e Haskell 2010, con membri della comunità dedicati che hanno aggiunto estensioni, classi di tipo e costruito compilatori Haskell per supportare l’ecosistema. Ora esiste un vasto corpo di lavoro e librerie e strumenti completi che gli sviluppatori Haskell possono utilizzare.

Essendo uno dei linguaggi di programmazione funzionali più puri, Haskell ha portato molti sviluppatori a trasformare il modo in cui si approcciano alla programmazione in generale e ha contribuito a migliorare le loro capacità complessive di programmatori.

Secondo Aaron Contorer, CEO della società di programmazione FP Complete di Haskell, questo ha portato a votare Haskell come il linguaggio più consigliato per imparare anche se gli sviluppatori non ne hanno bisogno, ed è per questo che incoraggiamo tutti gli sviluppatori a esplorare ciò che Haskell ha da offrire.

Perché Cardano è stato implementato in Haskell?

Abbiamo imparato che Haskell è un linguaggio di programmazione funzionale, adatto a codici e programmi ad alta sicurezza che richiedono un alto grado di verifica formale.

Come abbiamo discusso in precedenza, questo permette ai programmatori di avere un maggior grado di certezza che il codice che hanno implementato sia corretto. Per il futuro che prevediamo per Cardano, ovvero per diventare il prossimo sistema operativo sociale e finanziario globale, la sicurezza e l’affidabilità sono essenziali.

Con l’arrivo delle applicazioni decentralizzate, della tokenizzazione e dei contratti intelligenti su Cardano, ci aspettiamo che sorga un intero ecosistema di servizi finanziari decentralizzati. Questo porterà miliardi di dollari di valore o più, bloccati attraverso contratti intelligenti, o gestiti attraverso organizzazioni autonome decentralizzate (DAO).

Tuttavia, l’attuale infrastruttura di contratti intelligenti non è riuscita a garantire questo valore on-chain, per lo più implementando nuovi linguaggi di programmazione progettati su misura, ognuno dei quali richiede le proprie catene di strumenti, biblioteche e risorse educative, rendendo difficile ragionare formalmente sul comportamento dei contratti intelligenti e delle applicazioni costruite su di essi.

Sappiamo per esperienza che le vulnerabilità risultanti, i fallimenti del codice o gli exploit di contratti intelligenti su altre blockchain e linguaggi di contratti intelligenti hanno avuto conseguenze disastrose e hanno portato a considerevoli perdite finanziarie, spesso nell’ordine di miliardi di dollari. Questo ha portato alcuni a chiedersi se i contratti intelligenti saranno mai attuabili dal punto di vista del rischio per gli utenti istituzionali.

È qui che Haskell entra in gioco. Attraverso Haskell, i contratti smart di Cardano Plutus e Marlowe possono essere accuratamente implementati in un codice preciso, formalmente verificato, che offre un alto livello di garanzia fin dall’inizio.

Plutus e Marlowe vengono offerti come un insieme di librerie per Haskell, sfruttando la documentazione Haskell esistente, i toolkit e una comunità altamente professionale per fornire una base da cui partire per costruire contratti smart sicuri e di livello enterprise.

Sia il codice off-chain che on-chain per Cardano è scritto in Haskell, che permette a Cardano di ereditare il ricco corpo di ricerca già esistente all’interno dell’ecosistema Haskell, invece di reinventare la ruota con un linguaggio contrattuale intelligente totalmente nuovo e non provato.

Per fornire supporto alla più ampia comunità Haskell, i partner ingegneristici di Cardano IOHK hanno recentemente donato alla Haskell Foundation, un’iniziativa che sostiene lo sviluppo e la crescita di Haskell. Potete saperne di più sulla Haskell Foundation dal discorso di Simon Peyton Jones all’evento virtuale Haskell eXchange 2020 qui.

Dove posso saperne di più su Haskell?

Cardano, e per estensione le piattaforme Plutus e Marlowe, sono open-source e disponibili per l’esplorazione. Potete scoprire di più sul nostro codice tramite Cardano Docs, o visitando direttamente il Cardano GitHub.

Se siete alla ricerca della migliore guida di Haskell e non sapete da dove cominciare, vi consigliamo di consultare il libro o il sito web “Imparare Haskell” di Miran Lipovača. Imparare Haskell è facilitato da questa guida illustrata, uno dei modi più coinvolgenti per imparare questo affascinante linguaggio di programmazione.

Altre risorse per gli sviluppatori di Haskell includono il Glasgow Haskell Compiler (GHC), guidato da Simon Peyton Jones e Simon Marlow, un compilatore di codice nativo open-source per Haskell.

Se volete unirvi alla vivace comunità di sviluppatori di Haskell for developers, vi consigliamo anche di dare un’occhiata all’Haskell Reddit. Se sei interessato a sviluppare su Cardano, perché non ti iscrivi alla lista d’attesa del nostro portale per sviluppatori? Qui, avrete accesso alle ultime notizie sugli sviluppatori dell’ecosistema Cardano.

Buon divertimento e continuate a costruire!