Proposta Tesi di Laurea interna: http chat server in Erlang

Summary: I’m looking for a student to pick up the task of writing an http chat server in Erlang

I linguaggio di programmazione Erlang è una rara bestia — deriva dai linguaggi di programmazione cari agli informatici teorici, come Lisp e Prolog, e li cala in un contesto industriale con un’implementazione di tutto rispetto.

Erlang nasce da una ricerca in Ericsson di un linguaggio di programmazione alternativo al C per sviluppare le centrali telefoniche. Intorno al 1982 Ericsson ha condotto esperimenti con una ventina di diversi linguaggi di programmazione. Gli esperimenti dimostrarono che i linguaggi che fornivano una maggiore produttività in quest’ambito applicativo erano i linguaggi simbolici di alto livello, come Lisp e Prolog. Un fatto curioso emerso da queste ricerche fu che il numero di errori in un programma risultò proporzionale al numero di linee di codice, a parità di funzionalità implementata. Questo implicava la ricerca di un linguaggio che fosse molto più conciso del C.

Il contesto applicativo di Ericsson, ovvero il software che permette a Tizio di telefonare a Caio, richiede però alcune caratteristiche addizionali che questi linguaggi simbolici non avevano: la gestione della concorrenza, la possibilità di contenere l’impatto degli inevitabili errori di programmazione, la scalabilità, la fault tolerance, il soft real-time.

Questa ricerca condusse quindi all’invenzione di un linguaggio ad hoc. Ora, un linguaggio di programmazione vive o muore sulla base della qualità della sua implementazione. E il linguaggio Erlang ha un interprete che permette di realizzare applicazione massicciamente concorrenti (si pensi a quante telefoni comunicano contemporaneamente con una centrale telefonica), con la possibilità di aggiornare il codice a caldo (un po’ come la possibilità di cambiare i dischi in un server senza spegnerlo, solo che qui si tratta di software.) Erlang gestisce la concorrenza con un modello ad attori che è più semplice per il programmatore del meccanismo basato su stato condiviso e semafori. Erlang ha un database transazionale integrato, che può essere distribuito in maniera trasparente su più nodi per fault tolerance e scalabilità. C’è uno studio che dimostra che un web server implementato in Erlang ha una capacità di sopportare picchi di carico di almeno un ordine di grandezza maggiore di Apache.

Tutto ciò porta a concludere che Erlang è il candidato ideale per realizzare applicazioni client-server che necessitino della massima scalabilità e affidabilità: ad esempio i mercati telematici.

L’obiettivo di questa Tesi è di realizzare un progetto pilota di servizio web interattivo push in Erlang. In una parola, realizziamo un server di “chat” tipo lingr o campfire, interamente in Erlang. Questo coinvolgerà l’adattamento di Erlang allo stile di programmazione comet.

Questa Tesi è di livello specialistico, ma possiamo vedere di ritagliarne un pezzo più piccolo per una laurea Triennale. Se sei interessato, mandami un messaggio per prendere appuntamento per parlarne. E’ preferibile avere un po’ di esperienza con la programmazione in stile funzionale.

Aggiornamento: i programmatori pragmatici stanno per fare uscire un libro su Erlang. Questa è una grande notizia!

13 Responses to “Proposta Tesi di Laurea interna: http chat server in Erlang”

  1. Federico Says:

    Molto interessante, forse un po’ in anticipo sui miei tempi, dovro’ scrivere la tesi l’anno prossimo… pero’ e’ un argomento su cui gia’ stavo indagando da tempo… unico mio difetto è che di erlang ho letto solo qualche tutorial introduttivo… avresti da consigliarmi un buon testo o un bel tutorial online?

  2. matteo Says:

    Su erlang.org trovi un sacco di documentazione. Ci dovrebbe essere anche almeno la prima parte di “Concurrent programming with Erlang” (che non ho letto!) In realtà sono totalmente ignorante di Erlang; la ragione per cui propongo la tesi è per avere l’occasione di impararlo anch’io.

    A parte questo, se ragioniamo sul lungo periodo, credo che la cosa più importante sia dominare i principi; in questo caso i principi rilevanti sono quelli di programmazione funzionale, e di programmazione concorrente.

    Per la programmazione funzionale ci sono tanti ottimi testi, e non ha moltissima importanza se la studi in Erlang o Scheme o ML o Haskell. E’ importante che tu sappia come si usa la ricorsione al posto del “while”! Ti suggerisco:

    Structure And Interpretation of Computer Programs (http://mitpress.mit.edu/sicp/full-text/book/book.html) Grande classico che ti insegna come un semplice linguaggio possa illustrare tutti i paradigmi di programmazione.

    The little Schemer
    (http://www.ccs.neu.edu/home/matthias/BTLS/)
    Altro classico, che ti propone dei koan funzionali su cui meditare. Molto zen.

    Altri testi che potresti trovare utili sulla programmazione funzionale: ML For The Working Programmer di Paulson, o Introduction to Functional Programming di Bird e Wadler.

    Sulla programmazione concorrente, invece, non so darti molti consigli. Non conosco testi così ben scritti come quelli che ho citato qui sopra. Che dipenda dal fatto che la programmazione concorrente è un argomento molto meno ben compreso?

    Comunque, una cosa importante da capire è il concetto di transazione (perché? perché è un concetto fondamentale per ridurre o gestire il nondeterminismo in un sistema concorrente.) Un buon testo che spiega i sistemi concorrenti e le transazioni è il Coulouris, Distributed Systems (http://www.cdk4.net/). Io ho letto la seconda edizione, ormai è giunto alla quarta.

  3. Federico Says:

    Wow, ti ringrazio per tutti questi spunti, iniziero’ a documentarmi! Intanto ieri mi sono stampato un paio di tutorial su erlang che mi sono ripromesso di finire entro le prossime settimane.
    Come dici tu credo che la cosa piu’ “difficile” sia cambiare forma mentale rispetto alla programmazione procedurale… iniziero’ con qualcosa di semplice e conosco comunque qualche smanettone di erlang a cui chieder consigli… ;)

  4. Lawrence Oluyede Says:

    Che idee grandiose! Erlang è (in teoria) il mio linguaggio per il 2007. Ho fatto anche qualche prova l’anno scorso: http://www.oluyede.org/blog/category/erlang/

  5. riffraff Says:

    (leggo solo oggi..)

    perché non sei un mio professore, percheeeee!

  6. Matteo Vaccari » Blog Archive » Tesi su Erlang… le cose si muovono Says:

    […] La tesi su Http chat server in Erlang è partita… sono molto contento. Pare che diverse cose si stiano muovendo: i Programmatori Pragmatici stanno per pubblicare un libro su Erlang scritto da Joe Armstrong, che è uno dei principali autori del linguaggio. Fra l’altro la tesi di dottorato di Armstrong è molto leggibile (prendete esempio, o studenti!) […]

  7. LudovicoVan Says:

    Ciao Matteo,

    Trovo questa tua proposta estremamente interessante, soprattutto per via di certi “studi” che sto portando avandi sul ruolo e le meccaniche dei linguaggi funzionali (il tutto nel contesto di una teoria che sia in grado di comprendere e distinguere i vari paradigmi), e devo dire che una significativa esperienza in tal senso e’ cio’ che attualmente mi manca di piu’.

    Detto cio’, la domanda da 1 milione di dollari sarebbe: pensi che potrei essere “eleggibile”, in qualche modo, per un’opportunita’ del genere? E, soprattutto, pensi che ci sia un qualche modo di avere una minima “retribuzione”, perlomeno a coprire alcune spese di base? Non ho grandi esigenze, ma non mi potrei permettere di smettere completamente di guadagnare…

    Per darti un’idea piu’ precisa, un accenno al mio background “accademico”: sono quasi completamente autodidatta, con licenza liceale, anche se ho frequentato vari anni di varie universita’, il che mi ha dato occasione di approfondire la questione dei “linguaggi” non solo dal punto di vista della matematica (soprattutto number theory) e della computer science (soprattutto le questioni legate a decidibilita’, computabilita’, ecc.), ma anche dal punto di vista umanistico, fino agli aspetti filosofici.

    Alcuni miei recenti contributi e domande su argomenti correlati sono disseminati per lo sci.math group. Un punto di partenza: http://mathforum.org/kb/profile.jspa?userID=483994

    Che ne dici, c’e’ qualche speranza? Con tutte le recenti “riforme”, temo di non essere sicuro della risposta…

    -LV

  8. LudovicoVan Says:

    P.S. Scusa, mi rendo ora conto che il mio post arriva alquanto in ritardo. Tuttavia la domanda, se vuoi, resta.

    Grazie,

    Julio

  9. matteo Says:

    @LudovicoVan: l’offerta è (era) valida solo per laureandi in informatica, e specificamente per laureandi in informatica a Varese. No, non c’è nessuna possibilità di rimborso spese per il “lavoro” di laurea se fai una laurea interna (come quella di cui parliamo). C’è una (magra) speranza di avere un rimborso spese se fai uno stage presso un’azienda, che però non è tenuta a corrisponderlo.

    Non ho capito il commento sulle “riforme” comunque se vuoi approfondire Erlang penso che un bravo autodidatta non dovrebbe avere grosse difficoltà. Anche se in generale ti consiglierei di riprendere e completare gli studi per una laurea.

  10. LudovicoVan Says:

    Hai perfettamente ragione, e grazie per la risposta.

    Ad essere sincero, il fatto e’ che lavorando all’Universita’ -mi immagino- uno in un certo senso “si paga gli studi”, mentre se devi conciliare lavoro e studio ti dico che diventa “una giostra continua” (per quanto non sto implicando particolari bilanci). In ogni caso, point taken: in effetti, non smetto di pensarci.

    La formazione in azienda, almeno per come e’ impostata attualmente (direi, per via della piaga degli smart-test, soprattutto quando regolarmente somministrati da persone per lo piu’ incompetenti a persone tendenzialmente non qualificate, welcome simplicity), purtroppo non e’ un’opzione. Lavoro prevalentemente in azienda, e allora e’ meglio imparare a caccia di progetti interessanti, tipo training on the job ma autogestito e, per forza di cose, del tutto indipendente, nonche’, ahime’ sembrerebbe, sempre in ultima istanza incompatibile, indipendentemente da qualunque rigore… ti ritrovi a lavorare di nascosto, alla lettera: il cambiamento e’ bandito, insieme a qualunque cosa non esca da una ricetta al micro-onde; e con essi e’ bandita l’essenza stessa di qualunque processo di apprendimento e dunque di progresso e sviluppo. Superna morale del mondo di fuori: ti devi conformare, ma non troppo, ma non troppo, ma non troppo, e cosi’ via. This ain’t gonna happen: almeno solo.

    Giusto a titolo di commento dall’altro lato della barricata: diciamo che mi starebbe bene anche fare il bidello, se non che gli studenti pare si siano trasformati tutti in capre, e gli insegnanti tutti in… chi puo’ dirlo.

    !?[:,D-/=~+
    *#{8-;=/=:|
    ?!<<;-)/=-)

    Bottom line: colgo il tuo spunto sul tentare uno “stage in azienda”, chissa’… #####

    E intanto continuero’ a pensarci… :]8};)

    Grazie di nuovo e buon lavoro.

    -LV

  11. matteo Says:

    Lo so che la formazione in azienda spesso è carente o assente. Bisogna scegliere bene l’azienda per cui lavorare.

    Non ho capito cosa c’entri fare il bidello; i bidelli non sono lì per studiare. E non è assolutamente vero che gli studenti siano tutti capre.

  12. LudovicoVan Says:

    Quella del bidello era un modo per dire, appunto, che lavorare *in* Universita’ tende a risolvere entrambi i problemi (lavorare *e* studiare).

    Era un esempio: un mio amico (vero) lavora in Universita’ come addetto al servizio di prestito libri per la biblioteca inter-facolta’ (non vero). Il lavoro e’ abbastanza “umano” da lasciargli carrettate di tempo per portare avanti qualunque genere di studio egli preferisca, e – *nel contempo* – gli consente un continuo rapporto e scambio con *tutto* lo studentato, assistentato, docenza varia, amministrativi e chi piu’ ne ha piu’ ne metta, ecc. ecc. Se poi ci metti che e’ puro uno gigolo…

    Morale: si e’ laureato in Psicologia qualche anno fa con tesi di Antropologia sugli “Ipertesti” – ovviamente con supporto tecnico dal sottoscritto e non solo – con il Prof. di Storia del Cinema (da Lingue) in correlazione. E fa ancora il bidello…

    Sugli studenti, ti darei ragione, ma non piu’ che al 2-5%… nella mia esperienza per lo meno.

    -LV

  13. LudovicoVan Says:

    P.S. L’ultima volta che l’ho incontrato, stavano facendo alcuni tentativi di “garage-domotica” per uso “artistico”. Non mi chiedere che vuol dire… ;)

    -LV

Leave a Reply