Feeds:
Posts
Comments

Posts Tagged ‘Erlang’

Netduino + Ethernet shield

Netduino + Ethernet shield

Due righe come scusa per pubblicare la foto qui sopra: sto lavorando su una sorta di porting del porting dell’interfaccia Erlang – Java per C# sul .NET Micro Framework, ed in particolare sul Netduino che posseggo; lungo la strada, sto anche debuggando il driver per l’Ethernet shield (questo perchè non ho comprato il Netduino Plus a suo tempo, grave errore)… vi farò sapere!

Advertisements

Read Full Post »

A couple of weeks ago, a new major version of the Erlang runtime system and libraries has been released, and after its inclusion in the Experimental branch of Debian, I have ported it to Ubuntu 11.10 and published the packages on my PPA.

The packages are the same of the Debian release, I have not changed anything; I don’t know if I will have time to backport it to the previous Ubuntu releases, especially because I am not using them anymore. As usual, IWFM:  if you experience any problems, you can report them to me, but as I am not an official maintainer, I don’t know if I will be able to solve them 🙂

Read Full Post »

Ecco le slides della presentazione dell’articolo prodotto a partire dal mio lavoro di tesi magistrale; la conferenza in questione è TOOLS Europe 2011, tenutasi a Zurigo dal 28 al 30 giugno 2011.

Read Full Post »

I have just published the packages for the latest version (R14B03) of Erlang: as usual, you can find them in my PPA.

As a reminder, they have been backported directly from Debian Unstable, without changes, so they work for me and may work for you, but I have published them “as are“, and I am not taking any responsibility for bad behavior.

Read Full Post »

(Edit: lo davo per scontato, ma meglio chiarirlo: nel grafico sottostante l’asse Y è misurato in millisecondi di esecuzione per ciascun test, quindi un valore inferiore è preferibile)

Uno dei punti di forza da sempre declamati di Erlang è la capacità del runtime di gestire la concorrenza anche di migliaia di processi leggeri, grazie alle capacità del runtime, sviluppato appositamente attorno (tra le altre cose) a questa caratteristica. E’ anche il motivo per cui si dice che linguaggi concorrenti implementati su altre macchine virtuali (ad esempio, Scala sulla JVM) non potranno mai avere le medesime prestazioni.

Ebbene, dopo un post intrigante in una mailing list, ho esplorato le prestazioni del progetto Erjang (Erlang sulla JVM) versus Erlang stesso, utilizzando un programma di test distribuito direttamente con i sorgenti di quel progetto: gli autori di Erjang stesso dichiarano che le performance sono, in media, in linea con quelle del runtime originario; il mio test è stato fatto sull’Atom N270 dell’Eeepc, ed è interessante vedere come in alcuni punti la versione Java riesca ad avere le performances più alte.

Grafico del confronto

Grafico del confronto

Ammetto di non aver fatto i test in modo eccessivamente scientifico, in ogni caso i valori sono stati presi alla seconda esecuzione del test stesso, supponendo che la prima possa essere inficiata dal caricamento o dalla compilazione del codice.

Read Full Post »

Erlang R14B02 has been uploaded a few days ago in Debian Unstable, and I have just backported the same packages in my Launchpad PPA, compiled for Ubuntu 10.10 Maverick. I have also added an additional patch that resolves a compilation problem for 64bit architectures, a solution suggested in Erlang bugs mailing list.

As I said in previous occasions, these packages are a direct backport from the Debian repository, without (almost) any other modification; they work in my system, but they may not work for you. I am not the official Erlang maintainer in Ubuntu, and I may not have time to hunt for bugs, so if you find a problem feel free to report it, but it may not be solved (at least in short time).

Read Full Post »

Un breve post per introdurre una caratteristica di Erlang che non viene spiegata in modo così chiaro: le guards per le funzioni lambda (o fun nel linguaggio in questione).

Ordunque: anche Erlang ha la possibilità di filtrare gli input di una funzione utilizzando alcune funzioni predefinite; questo permette di evitare l’uso di condizionali, che peraltro non sono il massimo dell’usabilità in un linguaggio del genere.

Qualunque manuale vi mostrerà, ad esempio, un listato come il seguente:

abs(Number) when Number < 0 ->
    -Number;
abs(Number) ->
    Number.

Questo è un banale esempio di una funzione che calcola il valore assoluto di un numero: quando questo è minore di zero, viene ritornato il suo opposto, in caso contrario viene ritornato il numero stesso.

E fin qui, tutto bene. La questione è: è possibile filtrare anche nelle lambda allo stesso modo? E la risposta è sì, anche se la sintassi non è proprio chiarissima e soprattutto non è segnata nei manuali; ad esempio, riprendendo l’esempio di prima:

abs(List) when is_list(List) ->
    lists:map(fun(Element) when Element < 0 ->
                     -Element;
                 (Element) ->
                     Element end, List).

In questo caso, il filtraggio avviene esattamente come prima, in una funzione che prende in input una lista di numeri e ne restituisce una versione con i valori assoluti di ciascun valore. Da notare la sintassi per applicare le guards nella lambda interna alla map: bisogna ripetere i parametri della funzione, parentesi comprese, ma senza ripetere la dichiarazione fun.

E’ una caratteristica che cercavo da tempo, ed ora finalmente ho scoperto come si applica…

Read Full Post »

« Newer Posts - Older Posts »