Vai al contenuto principale
Change page

Linguaggi per i contratti intelligenti

Ultimo aggiornamento della pagina: 25 febbraio 2026

Un grande aspetto di Ethereum è che i contratti intelligenti possono essere programmati utilizzando linguaggi relativamente facili per gli sviluppatori. Se hai esperienza con Python o con qualsiasi linguaggio a parentesi graffe (opens in a new tab), puoi trovare un linguaggio con una sintassi familiare.

I due linguaggi più attivi e mantenuti sono:

  • Solidity
  • Vyper

Remix IDE fornisce un ambiente di sviluppo completo per creare e testare contratti sia in Solidity che in Vyper. Prova l'IDE Remix nel browser (opens in a new tab) per iniziare a programmare.

Gli sviluppatori più esperti potrebbero anche voler utilizzare Yul, un linguaggio intermedio per la macchina virtuale di Ethereum, o Yul+, un'estensione di Yul.

Se sei curioso e ti piace aiutare a testare nuovi linguaggi che sono ancora in forte sviluppo, puoi sperimentare con Fe, un linguaggio emergente per i contratti intelligenti che è attualmente ancora agli inizi.

Prerequisiti

Una conoscenza pregressa dei linguaggi di programmazione, specialmente di JavaScript o Python, può aiutarti a comprendere le differenze nei linguaggi per i contratti intelligenti. Ti consigliamo inoltre di comprendere i contratti intelligenti come concetto prima di addentrarti troppo nei confronti tra i linguaggi. Introduzione ai contratti intelligenti.

Solidity

  • Linguaggio di alto livello orientato agli oggetti per l'implementazione di contratti intelligenti.
  • Linguaggio a parentesi graffe che è stato profondamente influenzato dal C++.
  • Tipizzato staticamente (il tipo di una variabile è noto al momento della compilazione).
  • Supporta:
    • Ereditarietà (puoi estendere altri contratti).
    • Librerie (puoi creare codice riutilizzabile che puoi chiamare da contratti diversi, come le funzioni statiche in una classe statica in altri linguaggi di programmazione orientati agli oggetti).
    • Tipi complessi definiti dall'utente.

Esempio di contratto

Questo esempio dovrebbe darti un'idea di come sia la sintassi dei contratti in Solidity. Per una descrizione più dettagliata delle funzioni e delle variabili, consulta la documentazione (opens in a new tab).

Vyper

  • Linguaggio di programmazione pythonico
  • Tipizzazione forte
  • Codice del compilatore piccolo e comprensibile
  • Generazione efficiente del bytecode
  • Ha deliberatamente meno funzionalità rispetto a Solidity con l'obiettivo di rendere i contratti più sicuri e facili da verificare. Vyper non supporta:
    • Modificatori
    • Ereditarietà
    • Assembly in linea
    • Sovraccarico delle funzioni
    • Sovraccarico degli operatori
    • Chiamate ricorsive
    • Cicli di lunghezza infinita
    • Punti fissi binari

Per maggiori informazioni, leggi le motivazioni di Vyper (opens in a new tab).

Esempio

Questo esempio dovrebbe darti un'idea di come sia la sintassi dei contratti in Vyper. Per una descrizione più dettagliata delle funzioni e delle variabili, consulta la documentazione (opens in a new tab).

Yul e Yul+

Se sei nuovo su Ethereum e non hai ancora programmato con i linguaggi per i contratti intelligenti, ti consigliamo di iniziare con Solidity o Vyper. Esamina Yul o Yul+ solo quando avrai familiarità con le migliori pratiche di sicurezza dei contratti intelligenti e con le specifiche del lavoro con l'EVM.

Yul

  • Linguaggio intermedio per Ethereum.
  • Supporta l'EVM ed Ewasm (opens in a new tab), un WebAssembly in stile Ethereum, ed è progettato per essere un denominatore comune utilizzabile per entrambe le piattaforme.
  • Ottimo obiettivo per le fasi di ottimizzazione di alto livello che possono avvantaggiare equamente sia le piattaforme EVM che Ewasm.

Yul+

  • Un'estensione di Yul di basso livello e altamente efficiente.
  • Inizialmente progettato per un contratto di rollup ottimistico.
  • Yul+ può essere considerato come una proposta di aggiornamento sperimentale per Yul, aggiungendovi nuove funzionalità.

Esempio di contratto

Il seguente semplice esempio implementa una funzione di potenza. Può essere compilato utilizzando solc --strict-assembly --bin input.yul. L'esempio dovrebbe essere salvato nel file input.yul.

Se hai già molta esperienza con i contratti intelligenti, puoi trovare un'implementazione completa di ERC20 in Yul qui (opens in a new tab).

Fe

  • Linguaggio tipizzato staticamente per la macchina virtuale di Ethereum (EVM).
  • Ispirato a Python e Rust.
  • Mira a essere facile da imparare, anche per gli sviluppatori che sono nuovi nell'ecosistema di Ethereum.
  • Lo sviluppo di Fe è ancora nelle sue fasi iniziali, il linguaggio ha avuto la sua versione alpha a gennaio 2021.

Esempio di contratto

Di seguito è riportato un semplice contratto implementato in Fe.

Come scegliere

Come per qualsiasi altro linguaggio di programmazione, si tratta principalmente di scegliere lo strumento giusto per il lavoro giusto, oltre che di preferenze personali.

Ecco alcune cose da considerare se non hai ancora provato nessuno dei linguaggi:

Cosa c'è di fantastico in Solidity?

  • Se sei un principiante, ci sono molti tutorial e strumenti di apprendimento disponibili. Scopri di più nella sezione Impara programmando.
  • Buoni strumenti per sviluppatori disponibili.
  • Solidity ha una grande community di sviluppatori, il che significa che molto probabilmente troverai risposte alle tue domande abbastanza rapidamente.

Cosa c'è di fantastico in Vyper?

  • Ottimo modo per iniziare per gli sviluppatori Python che vogliono scrivere contratti intelligenti.
  • Vyper ha un numero minore di funzionalità, il che lo rende ottimo per la prototipazione rapida di idee.
  • Vyper mira a essere facile da verificare e massimamente leggibile dall'uomo.

Cosa c'è di fantastico in Yul e Yul+?

  • Linguaggio di basso livello semplicistico e funzionale.
  • Permette di avvicinarsi molto di più all'EVM grezza, il che può aiutare a ottimizzare l'utilizzo del gas dei tuoi contratti.

Confronti tra i linguaggi

Per confronti sulla sintassi di base, il ciclo di vita del contratto, le interfacce, gli operatori, le strutture dati, le funzioni, il flusso di controllo e altro ancora, dai un'occhiata a questo cheat sheet di Auditless (opens in a new tab)

Letture consigliate

Questo articolo è stato utile?