Articles Labelled with “Article”

Pearls of OCaml Batteries (1)

OCaml Batteries logo

OCaml is known to be a powerful functional programming language, but one of its presumed weakness is a relatively poor standard library.

By accident, I'm one of the few people on the planet considering this very clean and virtually bug free library a feature and not a bug, but this is only an opinion.

The standard library contains everything you need to build applications and other libraries, but it's essential, forget something like the Python standard library and things like “sending an email in one line of code”. Instead, think of the C standard library (plus some important data structures missing in the libc).

More than two years ago the OCaml community decided to start the development of a library containing all the conveniences that are missing in the standard library. The project is OCaml Batteries Included and I'd like to introduce the reader with a series of posts, aimed to cast a light on various aspects of the library, without pretending to be an exhaustive tutorial.

The posts will be targeted at novice OCaml programmers because I think that an experienced OCaml hacker already uses "Batteries" or, in any case, he understand the library API and doesn't need help from this blog.

Before starting with the (boring) installation details, I want to give you a taste of Batteries, to show how a simple task could be written in a more natural way using Batteries modules, in comparison with a vanilla implementation. Let's take this simple task: we want to read a file by lines and print on the terminal only those lines containing a particular substring.

A simple and actually working solution is proposed by the PLEAC-Objective CAML project, it's the very first example of the file access section. Here is the proposed code:

let () =
  let in_channel = open_in "/usr/local/widgets/data" in
  try
    while true do
      let line = input_line in_channel in
      try
        ignore (Str.search_forward (Str.regexp_string "blue") line 0);
        print_endline line
      with Not_found -> ()
    done
  with End_of_file ->
    close_in in_channel

Now let's rephrase using Batteries:

Enum.iter
  (fun l ->
    if BatString.exists l "blue"
    then print_endline l)
  (open_in "/usr/local/widgets/data" |> BatIO.lines_of)

The result is the same, but the code is much cleaner and far more idiomatic for a functional language.

Next time we will see how to install OCaml and Batteries, under Linux of course, but hopefully even under Windows.

(Bad) news from Last.fm

Last.fm logo

Some days ago Last.fm announced huge changes in the availability of thematic radios, in particular the cancellation of the “favorites” radio and the personal tag radio. At the end of this post you can find a copy of the original announce.

Since I'm a Last.fm subscriber and therefore I pay for the service, my first reaction has been of extreme disappointment. When I read the reason why the service has been suspended, the disappointment turned into outrage:

Licensing music is a complex and labour intensive process. By discontinuing a few stations, we're able to focus our energy on improving our most popular features, developing new and innovative stations, and offering the best music discovery service to our global audience.

Is managing the licenses so complex? And what happened to the money I pay for the service and the licenses?

The overall result is that I can not listen to “Jazz” or “Pop” radios anymore and, obviously, I will not renew my subscription.

Click here to read the Last.fm original announcement

Your browser doesn't support the "iframe" HTML element.

Sorpresa (brutta) da Last.fm

Last.fm logo

Qualche giorno fa Last.fm ha annunciato grossi cambiamenti nella disponibilità di radio tematiche, in particolare la cancellazione della radio con i propri “brani preferiti” e quelle con le tag personali. In fondo a questo post trovate una copia locale dell'annuncio originale.

Siccome sono abbonato a Last.fm e quindi pago per un servizio, la mia prima reazione è stata di estremo disappunto. Quando ho letto la motivazione per la quale il servizio è stato sospeso il disappunto si è trasformato in indignazione:

La gestione delle licenze musicali è un processo complesso che richiede molte risorse. Eliminando alcune stazioni, saremo in grado di concentrare le nostre energie nel migliorare le funzioni più rinomate del sito, sviluppare innovative stazioni e offrire al nostro pubblico globale un servizio di esplorazione musicale senza precedenti.

Gestire le licenze è così complesso? E i soldi che pago, proprio per gestire il servizio e le licenze, che fine hanno fatto?

Il risultato complessivo è che non posso più ascoltare una radio “Jazz” o “Pop” come facevo prima e, ovviamente, non rinnoverò l'abbonamento.

Fai clic qui per vedere l'annuncio originale di Last.fm

Il tuo browser non supporta l'elemento HTML "iframe".

È morto Benoît Mandelbrot

Benoît Mandelbrot è morto tre giorni fa, il 14 di Ottobre. Potete leggere una sua biografia su Wikipedia, anche se dubito che da quella si possa comprendere quale sia stata la sua influenza nei numerosi campi che il concetto di geometria frattale ha rivoluzionato, dalla Fisica all'Informatica, dallo studio dell'Anatomia e della Fisiologia alla Geologia ed alla Teoria dei Sistemi Dinamici, per la quale i frattali danno un inquadramento geometrico rigoroso al concetto di caos deterministico.

Dal momento che sono la persona meno adatta a ricordare un grande matematico — in Matematica sono una scarpa — preferisco spiegare perché quest'uomo ha influenzato la mia vita, piuttosto che quella dell'Umanità.

Ho scoperto l'insieme di Mandelbrot nei primi anni delle scuole superiori. A quell'epoca veniva pubblicata MCmicrocomputer, una rivista di informatica davvero speciale per l'approfondimento con cui molti argomenti venivano trattati. Corrado Giustozzi, tra le altre cose, teneva Matenigmici, una rubrica di Matematica ricreativa. Nel numero 62, Aprile 1987, 23 anni fa, appariva l'articolo “Frattali e complessi” in cui Giustozzi introduceva l'argomento. Lessi quell'articolo con interesse, ma non me ne feci nulla fino ad un paio d'anni dopo quando, iniziato il Liceo Scientifico, conobbi Marco Arrigoni.

L'insieme di Mandelbrot

Marco ed io avevamo molte passioni in comune, dalla bicicletta al computer, ed armati di un PC (di suo padre) con processore Intel 80286 decidemmo di scrivere un programma per disegnare l'insieme di Mandelbrot. È stato uno dei primissimi programmi con output grafico che abbiamo scritto e fu un'emozione. Il programma disegnava l'insieme di Mandelbrot ma non aveva la possibilità di fare zoom, di caricare o salvare le immagini, non faceva assolutamente nulla se non calcolare e disegnare a video. Premendo un tasto si cancellava tutto.

Lasciammo girare il programma per una notte intera ed il giorno dopo passai a casa di Marco dopo la scuola, dove ammirammo il risultato, estasiati, prima di premere INVIO e cancellare ogni traccia. Di quell'evento non ho quindi nessuna prova se non la mia memoria, ed anche il sorgente del programma è andato perso per sempre, sempre che Marco non l'abbia tenuto, ma dubito. Successivamente scoprimmo Fractint, un meraviglioso programma per disegnare frattali, con zoom, salvataggio, caricamento, animazioni colorate e 3D. Calcolava in meno di tre secondi la stessa immagine che al nostro programma era costata una nottata :-)

Qualche anno dopo, ormai iscritto ad Ingegneria, incontrai nuovamente i frattali in contesto meno ludico. I sistemi dinamici presentano spesso soluzioni caotiche che si è scoperto avere geometrie frattali. Come pure è frattale il bordo del bacino di attrazione di uno strano attrattore.

Per concludere consiglio a tutti la lettura di “Gli oggetti frattali”, di Mandelbrot stesso. È un testo divulgativo ma davvero molto profondo sull'argomento, a tratti un po' ostico, ma ne vale la pena.

Addio e grazie, professor Mandelbrot.

Università italiana in lacrime

Oggi l'Università italiana protesta per i tagli ai fondi per la Ricerca operati dalla mano di questo governo. La novità, rispetto alle “normali” proteste di questo tipo, sta nel fatto che a dichiararsi apertamente contro l'azione di governo sono le massime istituzioni accademiche, il Rettore Giulio Ballio ed il Senato Accademico. Ho studiato Ingegneria al Politecnico di Milano e, per quanto non abbia mai fatto mancare le mie critiche all'Ateneo, oggi mi sento vicino a tutti gli studenti, i ricercatori ed i professori del “Poli”, Rettore in testa.

Oggi la protesta si è palesata in modo plateale con un messaggio che ha sostituito la home page del Politecnico e con una lettera del Rettore indirizzata agli allievi. Vi invito a leggerla, ne vale la pena se vi interessa conoscere lo stato delle nostre università.

È stato pure pubblicato un rapporto (attenzione: PDF) che mostra in breve quali sono le vere cifre relative al rapporto tra spesa per la ricerca in Italia ed effettiva “efficienza” rispetto agli altri attori mondiali.

Per conservare memoria di questo triste momento della nostra storia mi permetto di tenere copia del file PDF qui sul mio blog, che sarà perciò raggiungibile anche quando sparirà dal sito del Politecnico. Ad ogni modo vi chiedo di scaricare l'originale dal sito dell'ateneo per far aumentare il numero di clic.

Per lo stesso motivo riporto qui integralmente la lettera di Giulio Ballio.

Cara Allieva, Caro Allievo,
In questi ultimi due anni stiamo assistendo a una campagna denigratoria, sempre più intensa e aggressiva, nei riguardi dell’Università italiana e di tutti coloro che onestamente vi operano.
È una campagna che rischia di demotivare profondamente tutti noi e soprattutto quei giovani che vi sono entrati da poco o che desiderano entrarvi.
È una campagna che può indurre legittimi dubbi in Voi e nelle Vostre famiglie.
Spesso le persone che incontro mi chiedono se è reale il quadro che viene rappresentato dai molti interventi riportati dai media, oppure se stiamo assistendo, forse senza rendercene conto, a un attacco teso a sfiduciare le università statali.
Appare legittimo il dubbio che vi sia il desiderio di sostituire l’università pubblica con un sistema privato, devastando le aspettative di più di un milione e mezzo di famiglie italiane.

Noi, che siamo allo stesso tempo insegnanti e ricercatori, ci sentiamo profondamente offesi perché ci si vuole delegittimare proprio di fronte alla comunità che abbiamo scelto di servire col nostro lavoro e con i nostri sacrifici.
Questi tentativi di delegittimazione fanno male a tutti noi che crediamo nell’università, che vi lavoriamo per formare e per traghettare Voi giovani dalla scuola secondaria al mondo del lavoro, per fare ricerca e servire il nostro Paese in cui ancora crediamo. Ci fanno perdere l’entusiasmo, ci spingono a fare il minimo richiesto, ci allontanano dalla voglia di operare in un servizio che abbiamo scelto e in cui ancora crediamo. Vogliamo reagire soltanto perché, altrimenti, faremmo il gioco di chi ci vuole distruggere privandoci di quella libertà che, sola, permette di fare ricerca e insegnare a Voi giovani.

In questi giorni si parla di agitazioni dei ricercatori, di richiesta di sospensione delle lezioni, di volontà a non tenere insegnamenti, di rivendicazioni da parte di persone che possono sembrare fortunate perché hanno ancora un lavoro, ma alle quali si sta togliendo quella speranza che li aveva spinti a rinunciare ad attività più remunerative per iniziare quel lavoro che a noi, più vecchi, è sempre parso il più bel lavoro del mondo: fare ricerca e contemporaneamente insegnare ai più giovani.

Le aspettative di carriera dei più giovani sono deluse. Da più di tre anni non sono banditi concorsi per passare da ricercatore a professore associato e da associato a professore ordinario e non si può ragionevolmente prevedere il numero di anni che dovranno ancora passare prima che questi concorsi vengano banditi. Per non invecchiare senza speranza molti giovani valenti stanno vincendo concorsi per posizioni di professore in università straniere e coloro che vanno via non sono sostituiti da colleghi stranieri che desiderino venire a lavorare in Italia.
Ci viene impedito di fare ricerca con colleghi stranieri anche se riusciamo a farci finanziare da enti pubblici o privati perché un nuovo dispositivo legislativo prescrive di spendere in missioni di lavoro meno della metà di quanto speso nel 2009.
Ci viene impedito di continuare a offrire una formazione finora apprezzata dal mondo del lavoro perché un recente decreto ministeriale impone una riduzione di insegnamenti e corsi di laurea, indipendentemente dal numero di allievi iscritti. Forse il nostro Ateneo sarà costretto a ridurre le immatricolazioni oppure a chiudere attività didattiche che fino ad oggi hanno soddisfatto le esigenze dei territori in cui il Politecnico è presente.
Ci viene proposto un Disegno di Legge che, seppur necessario, presenta alcuni punti critici:

  • l’imposizione di forme di governo dell’Ateneo molto diverse da quelle da noi adottate nell’ultimo decennio che ci hanno permesso di crescere nella reputazione internazionale
  • l’obbligo di assumere docenti provenienti da altre Università in un paese che fa di tutto per contrastare la mobilità a causa della carenza di servizi erogati
  • pesanti incertezze sul destino dei giovani ricercatori che lavorano con noi per la mancanza di una programmazione nella progressione delle loro carriere
  • scarsa attrattività della carriera accademica per le nuove generazioni poste di fronte a una serie di contratti a tempo determinato che aumenta il loro senso di precarietà.

L’approvazione di una legge che non tenga conto di queste criticità e di un programma pluriennale di finanziamento all’Università rischia di produrre una situazione anche peggiore dell’attuale.
Come si fa a gestire un Ateneo o a fare una programmazione adeguata quando ancora oggi non si conosce l’ammontare del finanziamento statale del Politecnico relativo all’anno 2010?

Questa lettera nasce proprio dal desiderio di condividere con Voi questi sentimenti, di chiedere la vostra comprensione, di cercare la vostra solidarietà. Tutti noi del Politecnico vogliamo continuare la missione che da quasi 150 anni ci è stata affidata, ma non possiamo essere lasciati soli in balia di chi sta usando una falciatrice per fare di tutta l’erba un fascio, incurante di tagliare in un solo passaggio l’erba secca, quella verde e i fiori già cresciuti. È proprio la capacità di distinguere il grano buono dalla gramigna che, insieme a Voi, indipendentemente da ogni fede politica, vorremmo chiedere a questo nostro Paese. Vogliamo che non sia distrutto quanto di buono abbiamo, chiediamo con forza che si investa anche su quanto c’è di buono per renderlo ancora migliore.

Probabilmente molti di Voi si stanno ponendo un certo numero di interrogativi quali ad esempio: Cos’è l’autonomia dell’università? Le università sono tutte uguali? Chi sostiene economicamente le università? Perché i docenti fanno ricerca? Quali sono i doveri che la legge impone ai docenti universitari? Come si recluta un docente universitario? La ricerca italiana è così di basso livello come viene dipinta? È vero che le nostre università sono molto indietro nelle classifiche internazionali? I baroni esistono ancora? Il cosiddetto 3+2 è una iattura? Cosa vuol dire titolo legale?

A queste e ad altre domande, che potrete propormi scrivendo a comunicazione@polimi.it, sarà data una risposta sul sito Polimi nelle prossime settimane.

Cordiali saluti
Giulio Ballio

OCaml per programmatori Python

Sorry for English speaking people, but this post makes sense only for Italians, so it's in Italian :-)

Qualche mese fa, precisamente a fine Febbraio, mi è stato chiesto di presentare in un breve workshop il linguaggio Objective Caml che, manco a dirlo, è il mio linguaggio di programmazione preferito. Mi ero riproposto di scrivere qualcosa in merito, ma una serie di problemi me lo ha impedito, così colmo con qualche mese di ritardo la lacuna.

Read more…

My new blog… in Objective Caml

More than a year ago I decided to dismiss my Wordpress blog, and to write a new one from scratch in OCaml. Unfortunately my spare time for programming projects is getting less and less, so this simple work took a lot of time to reach an usable state.

Read more…

Copyright © 2004–2019 by .
Creative Commons License Content on this site is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Italy License.

RSS Feed. Valid XHTML 1.1. This blog is written in Objective Caml. Design based on the work of Rodrigo Galindez.