Le Nuove Avventure di un Pythonista in Schemeland

Qualche tempo fa si è concluso il secondo ciclo delle “Avventure di un Pythonista in Schemeland”. Scrivevo nell’editoriale che annunciava la fine del ciclo: “Per darvi il tempo di riflettere e di assorbire le puntate pubblicate finora, conto di lasciare una breve pausa tra la fine di questo ciclo e l’inizio del prossimo”. La “breve pausa” si è allungata a cinque mesi, un pò per le due trilogie di articoli su Python che sono apparsi nel frattempo, un pò per le vacanze estive e un pò per esigenze personali (vi dice qualcosa la parola matrimonio? 😉 Inoltre, in questi mesi ho un pò ripensato la strategia di pubblicazione delle “Avventure”.

Scheme è un linguaggio ricchissimo su cui si potrebbero scrivere decine e decine di puntate. Tuttavia ci sono due fattori da tenere in considerazione:

  1. scrivere decine e decine di puntate richiede un grosso sforzo;
  2. il numero di lettori interessati è molto piccolo.

Dati questi due problemi, ci sono due possibili soluzioni: ridurre il numero di puntate oppure aumentare il pubblico potenziale. Siccome mi dispiace lasciare non dette molte cose che vale la pena di spiegare, ho deciso di scegliere la seconda soluzione e di allargare il pubblico potenziale il più possibile. Il massimo allargamento possibile è quello di passare dal pubblico italiano al pubblico mondiale: ho quindi deciso che il terzo ciclo delle “Avventure” sarà in inglese e verrà pubblicato sul mio blog su Artima. Ho già cominciato a tradurre e a ripubblicare i vecchi articoli: si tratta di una traduzione non letterale con qualche aggiunta rispetto alla versione originale italiana, quindi potrebbe valere la pena di dare una rilettura alla serie nella sua nuova incarnazione.

Il terzo ciclo approfondirà gli aspetti funzionali del linguaggio Scheme. Molti linguaggi imperativi offrono un qualche supporto per la programmazione funzionale; per esempio Python ha costrutti quali map, filter, reduce, list comprehension, generatori, eccetera: tuttavia c’è un’abisso tra un linguaggio imperativo con un qualche supporto per la programmazione funzionale ed un linguaggio funzionale vero. Parlerò di list comprehension in Scheme, che non è la stessa cosa che in Python; mostrerà le differenze tra il concetto di generatore di Python e il concetto di stream in Scheme; infine parlerò di pattern matching in Python e in Scheme. In tutti questi esempi vedrete che Scheme è più puro e più potente di Python. Ci tengo a far vedere questi esempi perché ho speso quasi tutto il primo ciclo a parlare male di Scheme ed era tempo di bilanciare un pò le cose.

Il quarto ciclo ritornerà a parlare di macro e discuterà in profondità i segreti delle macro cosiddette non-igieniche, ovvero di syntax-case. Fatto questo, rimarrebbero ancora moltre altre cose di cui parlare, come per esempio eccezioni e condizioni, oppure le famigerate continuazioni, o la programmazione logica in Scheme, o i web server modali, o la programmazione ad oggetti in Scheme (TinyCLOS e simili). Tutto questo è di là da venire ma spero prima o poi di affrontare tutto questo, tempo permettendo.

Avendo spiegato tutto ciò, avrebbe senso cominciare a studiare seriamente la programmazione funzionale, studiando per esempio i linguaggi della famiglia dell’ML (tra questi includerei anche i nuovi nati F# e Scala oltre a i più classici SML e OCaml) oppure Haskell. Come vedete le cose da scrivere non mancano (io non ho mai avuto problemi di mancanza di ispirazione ;). Continuate a seguirmi e ne vedrete delle belle!

Michele Simionato

Comments

  1. …ma un link al tuo blog, pareva brutto? 🙂

  2. Agh! Hai ragione, ho aggiunto il link, sorry, pensavo
    di averlo messo!

  3. Francesco says:

    Auguri Michele!
    La continuazione della serie e’ un’ottima notizia:
    è nella mia lista-di-cose-da-studiare 🙂
    Ultimamente ho cominciato a dare un’occhiata a ocaml e f# quindi se tu volessi continuare in quei lidi mi farebbe molto piacere!

Policy per i commenti: Apprezzo moltissimo i vostri commenti, critiche incluse. Per evitare spam e troll, e far rimanere il discorso civile, i commenti sono moderati e prontamente approvati poco dopo il loro invio.