Zėŋōfōbìå

1 dicembre 2009

Perl is a four letter word. Or six.

Filed under: architettura, Linguaggi, Perl — Tag:, — Zeno @ 19:27

Sto chiaccherando su facebook con Francesco Oha sul Perl 6, versione che rivoluziona il linguaggio e, visto l’interesse che ho per l’argomento ho pensato di spostare sul Blog la conversazione, per coinvolgere chiunque sia interessato. (Rodi, parlo con te. ;-)

Io sono praticamente fermo al Perl 4, che è stato il mio primo linguaggio dinamico. Ne ho abusato, come ogni pessimo programmatore. Mi sono accorto che nel frattempo il Perl si è evoluto enormemente, anche grazie alla splendida comunità che si è consolidata. Ho letto il libro introduttivo di Stefano Rodighiero, e ho riassaporato il gusto del dinamismo portato alle estreme conseguenze.

Da diversi anni la comunità Perl, una delle più affascinanti in tutto il panorama hacker mondiale, sta lavorando alla versione 6, che si distingue dalla versione 5 per un numero impressionante di differenze. Non credo di dire un eresia nel sostenere che la versione 6 sia un linguaggio nuovo ispirato alle versioni precedenti.

Francesco, solleticando la mia attenzione con la frase “[…]il sorgente puo’ modificare in linea la grammatica del compilatore, rendendo dinamico non solo l’eseguito ma anche il compilante.“,  mi propone di leggere un testo introduttivo: http://perlgeek.de/en/article/5-to-6 .

La mia considerazione conseguente alla lettura è stata:

Sto guardando, stavo leggendo, tutto bene, le stringhe, gli array i tipi, sì… I TIPI? AH! finalmente!

Bello che la trasformazione di Schwartz viene fatta dal compilatore, è un’idea geniale, ma l’implementazione non spetta al programmatore. Non riesco a capire però perché non poteva essere fatta dal compilatore già dal perl 5. Qualcuno me lo spiega?

Però, decisamente più bello del 5! Le prestazioni poi saranno eccezionali, paragonabili al C, immagino…

La sintassi è ancora troppo criptica, però. Ti faccio un esempio: i Context e i twigils, il cross meta operator (come fai a vederlo? non si poteva usare lo zip di haskell?)

Uè, le liste lazy, bene! Le adoro.
L’overload degli operatori…
Che spettacolo le regexpes, si fanno i parser al volo!!!
Il reduction meta operator non l’avevo ancora visto, modo strano per fare folding.

Molto paradigma funzionale, ma rielaborato. Le funzioni diventano operatori. questo fa perdere un po’ di espressività, temo.

Francesco Oha mi fa notare che:

[…] trovo piu’ spiacevoli ancora i puntatori C e gli unari affini.

per come la vedo io, per ora, il perl6 e’ ancora un calderone… ci vorra’ ancora molto prima che esca quello che serve, ma gia’ solo per le RegExp e’ sensazionale (e il compilatore e’ fatto con quelle regexp, quindi puoi overloadare il compilatore, ed essendo dinamico puoi capire l’esoterismo che si puo’ ottenere)

Che ne dite? Proseguiamo con il discorso?

Annunci

Blog su WordPress.com.