Tempo di lettura: 4 minuti

Skills Updated: future trends


In quanto informatici, oltre a saper padroneggiare le tecnologie presenti, dobbiamo saper interpretare il futuro sperimentando nuovi sentieri, talvolta spingendoci ai confini della ricerca.
Con questa idea in mente, oggi voglio introdurvi un progetto piuttosto ambizioso: Eve, una strabiliante alternativa allo sviluppo web moderno.
Se i numerosi, quanto nuovi, framework JS vi hanno stancato, forse è il momento di dare un’occhiata a questo incredibile progetto: Eve, programming designed for humans.
 

Status Quo
 

Eve Piattaforma Web
 
Negli ultimi anni lo sviluppo web si è evoluto con una crescita esponenziale. Si è passati dall’avere una semplice pagina HTML, con qualche stile CSS e un paio di file Javascript, a vere e proprie applicazioni strutturate.

Gli sviluppatori di frontend lavorano con complessi, quanto differenti, strumenti di sviluppo:
 
  • - Task runner, come Gulp e Grunt, per automatizzare i processi;
  • - Bundler, come Webpack, per facilitare le build;
  • - Package manager, come npm e yarn, per gestire le sempre più numerose dipendenze dei progetti;
  • - Linguaggi compilati, come Typescript e Flow, per aumentare le potenza espressiva;
  • - Framework di sviluppo, come Angular, Vue e React, per strutturare meglio le applicazioni;
  • - Nuovi pattern e paradigmi di programmazione,
    come l’architettura a componenti e il sistema di data flow di flux;
  • - Programmazione reattiva, con observable e immutable.

E tutto ciò solo per realizzare un’applicazione web.
In che modo siamo arrivati a una tale complessità?

 

Soluzioni per lo sviluppo
 

Eve Piattaforma Web
 
È vero: le applicazioni moderne, così come lo sviluppo, sono molto più complesse rispetto a quelle di 10 anni fa.
Il problema sorge nell’aver dato priorità all’affrontare problematiche di sviluppo piuttosto che di produzione, creando soluzioni parziali e immediate, in alcun modo definitive.

Oggi solo per avviare un progetto moderno sono richieste moltissime competenze, tanta esperienza e soprattutto tempo. Per chi è pratico nell’ambito del frontend, avrà sicuramente sentito parlare della cosiddetta “Javascript Fatigue”. Così, invece di creare strumenti per realizzare in poco tempo applicazioni web facilmente manutenibili e semplificando la vita agli sviluppatori, abbiamo creato framework sempre più articolati e strumenti difficili da gestire.
Lo sviluppo si è focalizzato su come istruire minuziosamente le macchine, piuttosto che trovare un modo per comunicare con esse a un livello più astratto: le configurazioni e le istruzioni sono granulari e dettagliate e la macchina viene istruita su come eseguire qualsiasi minima operazione.
Guardando al passato, non possiamo fare a meno di chiederci se, a un certo punto della storia, abbiamo intrapreso un sentiero troppo difficile, se non addirittura totalmente sbagliato.
 
 

Eve: una piattaforma per gli esseri umani

Invece di creare ulteriori framework che ripercorrono strade già battute, Eve sperimenta un nuovo percorso.
Si presenta come un mix di interessanti tecnologie: un linguaggio di programmazione e un IDE web.
 
Eve è dotato delle seguenti funzionalità:
blocchi di codice indipendenti
programmazione senza ordine imposto
codice annidato nella documentazione (literate programming)
un IDE Markdown
il record come unità fondamentale
unificazione dello stack di programmazione
 
 

Il buon (dis)ordine
 

Eve Piattaforma Web


Se solitamente avere un flusso ordinato d’esecuzione può sembrare utile, per non dire necessario, con Eve la questione è affrontata sotto un punto di vista completamente differente.
Invece di definire la sequenza di azioni che l’applicazione deve intraprendere, Eve permette di sviluppare blocchi di codice completamente indipendenti, organizzati nel modo che sembra più sensato a noi.
In questo modo gli applicativi possono crescere seguendo lo sviluppo del progetto, senza dover continuamente riarchitettare l’infrastruttura o creare strutture complesse in modo che si modellino con l’evoluzione del progetto stesso.
 
 

Global Correctness

Per gestire in modo sensato blocchi indipendenti di codice, Eve si appoggia sul concetto di Global Correctness, ossia la possibilità di specificare dei vincoli globali tra i blocchi.
Questi vincoli permettono due cose: la prima di non dover definire degli schemi o dei tipi di dato su cui fare controlli futuri; la seconda è che i record non entreranno mai in uno stato inconsistente.
In questo modo possiamo progettare ogni blocco senza dover replicare controlli ad ogni riga, pensando semplicemente a come dovranno essere eseguiti.
 
 

Literate Programming
 

Eve Piattaforma Web


Uno dei pilastri su cui poggia il progetto Eve è, come viene definito da Donald Knuth, il “literate programming”:
 
"Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do"
 
Quando si scrive un’applicazione con Eve, si ha la sensazione di scrivere più un documento di specifica che del vero listato.
Il risultato è un documento chiaro, leggibile e comprensibile a tutti, se non per le parti di codice (i blocchi indipendenti) che compongono la logica applicativa.
Questo permette che i sorgenti dell’applicazione rimangano accessibili a tutti, senza dover utilizzare degli strumenti esterni per capire cos’è che fa esattamente quel modulo utilizzato in quel punto, o quei metodi dichiarati con una firma astrusa.
Per i più curiosi è possibile consultare questo sito: http://witheve.com/deepdives/literate.html
 
 

IDE Web
 

Eve Piattaforma Web
 
Eve non è semplicemente un linguaggio, bensì una vera e propria piattaforma.
Infatti, un altro componente importante è l’IDE, dotato di una visualizzazione a tre colonne su tutta la pagina: un menu di navigazione sulla sinistra, contenente i titoli e i sottotitoli delle sezioni; un corpo centrale dove viene scritto il sorgente; una preview dell’applicazione sulla destra, comprensiva di un debugger live.
L’esperienza utente è quella di scrivere un documento Markdown a tutti gli effetti, inserendo comodamente i blocchi di codice di Eve, potendo attivarli/disattivarli in qualsiasi momento.
 
 

Record: l’unità fondamentale
 

Eve Piattaforma Web

Un altro forte concetto di Eve è che qualsiasi elemento viene visto come un record: un insieme di chiavi a cui sono associati dei valori.
In questo modo, ogni operazione che viene effettuata riguarda la ricerca, la creazione e la modifica di record all’interno di specifici database.
I database di Eve sono da considerarsi come le tabelle in un database relazionale oppure come collezioni per quelli non relazionali.
Per fare un esempio, il DOM è rappresentato come database @browser, in cui è possibile fare ricerche e inserire nuovi tag (record) HTML.
 
 

One stack to rule them all

 
Eve Piattaforma Web
 
Non sarebbe bello poter definire la logica applicativa in un solo punto in modo che funzioni su tutto lo stack?
Eve unifica lo stack di sviluppo con un apposito layer di astrazione, permettendo all’utente di ignorare come vengano gestite le logiche a più basso livello.
Lo sviluppo diventa quindi più regolare e uniforme attraverso tre operazioni base: search, commit, bind.
Ogni blocco di codice potrà eseguire queste operazioni che verranno tradotte nelle corrispondenti azioni, come chiamate HTTP, query su database relazionali, inserimento di nodi nel DOM del browser, e via discorrendo.
 
Eve piattaforma web
 
 

Sviluppi futuri

Il team di sviluppo di Eve sta eseguendo proprio in questi mesi un refactoring al sistema di runtime in modo da renderlo più veloce, estensibile e con la possibilità di interfacciarsi facilmente con le librerie di terze parti.
Anche l’IDE potrebbe subire importanti cambiamenti, come la possibilità di usare namespace e più file per singolo progetto (attualmente il sorgente risiede in un unico file).
Last but not least la comunità è sempre più coinvolta grazie a bollettini mensili pubblicati sul blog e sulle continue discussioni sul forum.
 

 

In conclusione

Eve è un progetto in fase embrionale e ben lontano dall’essere pronto per la produzione (è tuttora in alpha).
Nonostante questo, è molto promettente: getta le basi per una possibile alternativa allo sviluppo web e allo sviluppo più in generale, rivisitando e modernizzando metodologie passate sotto una nuova luce.
Eve risulta essere così un progetto da seguire da vicino nei prossimi anni.
L’idea di poter scrivere documenti composti per la maggior parte da documentazione può sembrare bizzarra ma al tempo stesso intrigante, soprattutto se si considera l’alternativa corrente: scrivere centinaia di migliaia di righe di codice, incomprensibili a chi non è abituato a usare le tecnologie coinvolte.
 
 

RESTA AGGIORNATO, ISCRIVITI ALLA NOSTRA NEWSLETTER

Vincenzo Ferrari