Probabilmente, le capacità linguistiche di sviluppo software di Ethereum sono una delle sue più grandi caratteristiche differenzianti, perché la programmazione della blockchain è un obiettivo primordiale. Ethereum non ha uno, ma ben quattro linguaggio di programmazione creati a tali scopi:
Serpent (ispirato da Python), Solidity (ispirato a JavaScript), Mutan (ispirato dal linguaggio Go) e LLL (ispirato da Lisp); tutti progettati da zero per rendere agevole la programmazione orientata-a- contratti.
Essendo uno dei linguaggi di programmazione di alto livello utilizzati per Ethereum, Serpent (come suggerisce il nome) è stato progettato per essere molto simile a Python. E' destinato ad essere il piu' Semplice e pulito possibile, combinando molti dei benefici in termini di efficienza di un linguaggio di basso livello con la facilità d'uso nella programmazione.
Solidity è il linguaggio preferito, e quello sottoposto al maggiore sviluppo. Eredita tutte le qualità di Serpent, ma ha una sintassi simile a JavaScript che gli conferisce un vantaggio nella familirita' di adozione e riduce al minimo le barriere d'ingresso, perché JavaScript è comunemente utilizzato dagli sviluppatori Web. Pertanto, Solidity sfrutta una skillset esistente che milioni di programmatori già possiedono.
Un'altra caratteristica fondamentale della blockchain di Ethereum è la sua "Turing-completezza", una caratteristica importante e necessaria per garantire un elevato grado di solvibilità universale durante l'esecuzione dei puzzle computazionali richiesti. Più precisamente, si tratta di "quasi" Turing-completezza, perché attraverso l'impostazione a priori di limiti sulla quantità di calcolo permesso, si evita il problema di mancanza di terminazione di un linguaggio completamente Turing-completo.
Inoltre, poiché i linguaggi di Ethereum sono progettati specificatamente per questa blockchain, essi forniscono un'incredibile granularità in tempo reale rispetto alla visibilità e all'attività transazionale, una caratteristica desiderabile nella quale invece Bitcoin ha dei limiti. Con Bitcoin, bisogna scaricare il database della blockchain, analizzare tutte le transazioni e interrogare il database per poter estrarre informazioni; mentre con Ethereum, è possibile emettere richieste specifiche in tempo reale su qualsiasi indirizzo della blockchain.
Ethereum permette la creazione di ÐApps
La molteplicità di linguaggi di sviluppo disponibili su Ethereum è importante perché permette agli
sviluppatori di scegliere quelli che preferiscono per poter scrivere applicazioni decentralizzate (ÐApps) in modo più semplice ed efficiente.
Una ÐApp è quell'insieme combinato di smart contracts (contratti intelligenti) e codice client-side che li rende attivi. Gli smart contracts sono come "scatole" crittografiche che contengono un valore e si sbloccano solo se vengono soddisfatte determinate condizioni. Di norma incapsulano una qualche logica, delle regole, un processo o un accordo tra le parti. Quando sono eseguiti su Ethereum, la rete fa rispettare le loro ramificazioni.
Una ÐApp può essere pensata architettonicamente come molto simile ad una tradizionale applicazione web, ma con una differenza: in un'applicazione web tradizionale, c'e' un codice Javascript dal lato client che viene eseguito dagli utenti all'interno dei loro browser, e un codice sul lato server che è gestito da un server host o da un'azienda; in una ÐApp invece, c'e' invece una
logica intelligente in esecuzione sulla blockchain, e il codice dal lato client in esecuzione su Mist, uno speciale browser.
Inoltre, una ÐApp può interagire o connettersi con altre applicazioni web o altre tecnologie decentralizzate. Per esempio, una ÐApp può utilizzare un servizio di messaggistica decentralizzato come Whisper nel contesto di Ethereum, o un sistema di distribuzione decentralizzata di file come IPFS. Sul versante applicazioni web, una società come Google potrebbe voler ottenere i dati da un servizio di reputazione decentralizzato, o un feed di dati di Bloomberg può decidere di interfacciarsi
con una ÐApp finanziaria.