Conclusioni
"Ha senso, per me, imparare Erlang?" Questa è la domanda che mi sono posto quando è diventato impossibile ignorare i
bip sul radar, e prima di questo esercizio. Penso che una persona esperta sia di Python che di C/C++ abbia le spalle coperte per la stragrande maggioranza delle necessità di sviluppo: sia di sistemi grandi ed articolati che di sistemi che richiedono elevate prestazioni (chi è esperto del linguaggio e della piattaforma Java potrebbe pensarla allo stesso modo).
Erlang va a ricoprire una nicchia di utilizzo molto peculiare: quella dei sistemi
fault-tolerant e distribuiti (che tipicamente sono distribuiti per essere
fault-tolerant, ma potrebbero esserlo anche per necessità di bilanciamento del carico e di scalabilità): implementare una simile soluzione in qualunque altro linguaggio consisterebbe di fatto nel ricreare un sottoinsieme del runtime già disponibile e testato per Erlang, per creare ad esempio gli
alberi di supervisione che invece in Erlang sono pattern fondamentali di architettura. La maniera pressoché nativa in cui è possibile effettuare distribuzione del carico è qualcosa di cui avrei beneficiato largamente in alcuni progetti a cui ho lavorato in passato, e che comunque sono stati costruiti in stile
message passing proprio perché non è così facile distribuire lo stato: avere nel linguaggio stesso (e non nel framework di deploy) le primitive per far sì che un problema possa scalare in maniera semplice aumentando hardware è una cosa che mi farebbe dormire tranquillo anziché impazzire di micro-ottimizzazioni.
Accettato Erlang come linguaggio
utile, lo si può definire
facile? Probabilmente avvicinarsi ad Erlang è più difficile che avvicinarsi a qualunque altro linguaggio imperativo: ricorsione al posto dell'iterazione, pattern matching e clausole multiple come principale meccanismo di scelta... il salto di paradigma è davvero lungo, e non nego che aver studiato il
Prolog mi abbia aiutato all'inizio. Ma visto che il
message passing è un paradigma architetturale solido ed indipendente dal linguaggio, non mi sembra una cattiva occasione quella di sperimentarlo in un linguaggio che non accetta compromessi.
Per me è stato di stimolo anche un famoso aforisma di
Alan Perlis:
un linguaggio che non influenzi il tuo modo di pensare alla programmazione non vale la pena di essere conosciuto.
Segnalibri