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

8 commenti »

  1. “[Perl] 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.”

    Assolutamente no, anzi è piuttosto accurato. Per essere ancora più espliciti si può citare questo post di Matt Trout: http://www.shadowcat.co.uk/blog/matt-s-trout/f_ck-perl-6/

    “Perl 5 and Perl 6 are two different languages. Perl 5 and Perl 6 are both part of the Perl family.”

    Altra cosa che mi piace citare – tornando però a Perl 5 – sono le slide della presentazione che Michele Beltrame ha recentemente tenuto all’OSDay di Udine. Trovi il link alle slide qui: http://www.perl.it/blog/archives/000656.html. Forse perdono un po’ di valore senza il loro presentatore che ci parla sopra, ma secondo me rendono l’idea e contengono puntatori utili.

    Ma la cosa che volevo dire davvero in questo post è che se l’anno prossimo (tentativamente 4-6 Agosto) non vieni a Pisa allo YAPC::Europe ti tolgo il saluto :)

    Commento di larsen — 1 dicembre 2009 @ 20:39

  2. Dopo aver letto il post di Matt Trout ho cambiato titolo al post, ho fatto bene? :-)
    La presentazione di Beltrame aveva un indice di stupore notevole. (quando leggi stupore, immagina me che dice: “cazzo, però!” ;)
    Mi piace. E per la prima volta la data di uscita è vicina: primavera 2010 è qui.

    Perl è la VM, CPAN è il linguaggio, bellissimo, però:
    TMTOWTDI ma una è consigliata è una scelta matura. Libertà di uscire dalla strada principale, ma l’importante è che ci siano le indicazioni per entrare in autostrada. 18k moduli di CPAN mi spaventa un po’. Probabilmente, per ogni aspetto, ci sono moltissime scelte possibili, è inicato da parte della community in modo esplicito quale modulo o quale approccio scegliere?

    Bella la AOP con i role, i before e gli after. Molto pulita.
    Interessante Moose, come funzionano “isa” e i multimethod su Perl 5? E’ un trucco o sono supportati solo su perl 6?
    I metodi sui tipi nativi adesso cominciano a piacermi, ho dovuto abituarmici, però…
    Pulitissima la parte funzionale. C’è il tail recursion optimization?
    Devel::Declare mi fa paura, hai qualche link per vederne un uso “consigliato”? Chissà se verrà escluso dal obfuscated perl per abuso di potere!!!

    Quest’anno non avrei potuto venire a Pisa neanche dipinto, ho saltato perfino il convegno hacker olandese che si tiene ogni 4 anni, l’anno prossimo sarà diverso. :-)

    Commento di Fabrizio — 2 dicembre 2009 @ 10:03

    • un po’ di chiarimenti e correzioni:

      “E per la prima volta la data di uscita è vicina: primavera 2010 è qui”
      2010Q1 e` in realta` la data prevista di rilascio di Rakudo * (che si legge “Rakudo Star” o se preferisci “Rakudo whatever”: e` il risultato di un brainstorming che credo sia stato troncato d’ufficio :)).
      Rakudo * implementera` grandissima parte di Perl 6, ma ancora non tutto.

      “18k moduli di CPAN mi spaventa un po’. Probabilmente, per ogni aspetto, ci sono moltissime scelte possibili, è inicato da parte della community in modo esplicito quale modulo o quale approccio scegliere?”
      Hai ragione, e difatti tali best practice esistono.

      Sul resto non mi sento sufficientemente qualificato per rispondere con la cura che vorrei.

      Spiacente per Pisa :/

      Commento di larsen — 2 dicembre 2009 @ 10:58

      • “non mi sento sufficientemente qualificato per rispondere con la cura che vorrei.”
        AhahaHaH! Che vuol dire: RTFM. :-D

        Tu usi Moose regolarmente?
        E Perl 6 in produzione?

        Commento di Fabrizio — 2 dicembre 2009 @ 19:21

  3. :) no non volevo dire RTFM ma ora che me l’hai fatto notare la rivendero` in questo senso.
    Non uso Moose spesso, ma mi piacerebbe.
    Tantomeno uso Perl 6 in produzione (e neanche 5.10, se e` per questo; per le mie cose personali, che pero` non definirei “produzione”, uso normalemente l’ultima stable)

    Commento di larsen — 2 dicembre 2009 @ 20:49

  4. Come ho già detto attendo il 6 per rivalutare il linguaggio (senza pregiuduzi, promesso!).
    Come avete detto, rispetto al Perl “vecchio”, sembra un linguaggio nuovo… :D

    Commento di jp — 3 dicembre 2009 @ 8:41

  5. Va detto che il Perl 6 ha tutte le premesse per diventare qualcosa di imporante. Ma fintanto che non ci sia una implementazione stabile è difficile considerarlo un linguaggio realistico.
    Forse potrei riciclare la vecchia battuta e dire che è sicuramente un linuaggio complesso: figlio di padre reale e di madre immaginaria.
    :-)

    Commento di Fabrizio — 3 dicembre 2009 @ 12:09

    • i twigil e gli ulteriori abusi dei simboli mi spaventano un po, ma piu’ li rivedo e piu’ ritengo sia questione di abitudine, il TIMTOWTDI aiutera’ a trovare forme leggibili.

      Commento di Oha — 3 dicembre 2009 @ 12:51


RSS feed for comments on this post. TrackBack URI

Rispondi

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Blog su WordPress.com.

%d blogger hanno fatto clic su Mi Piace per questo: