Le avventure del futuro

Con la puntata pubblicata la settimana scorsa abbiamo chiuso il
secondo ciclo delle “Avventure di un Pythonista in Schemeland”. È
tempo di una pausa di riflessione. Il primo ciclo di cinque puntate è
stato puramente introduttivo e rivolto a tutti, mentre il secondo
ciclo è stato più tecnico e rivolto ad un pubblico attento. In
particolare, siamo entrati nel cuore di Scheme, andando a discutere il
concetto di code is data ed introducendo le macro di tipo
syntax-rules. Adesso è il momento di avere un pò di feedback
dai lettori. Sondando nella lista degli autori di Stacktrace ho
scoperto che molti trovano il ritmo di pubblicazione attuale (poco
meno di un articolo a settimana) un pò difficile da seguire. Voi
lettori abituali che ne dite? State ancora seguendo? Vi è scoppiata
la testa leggendo la decima puntata?

A parte gli scherzi, avevo già pensato di dare un pò di tempo ai lettori
per mettersi al passo, e per il terzo ciclo delle “Avventure” pensavo di
affrontare una tematica piu “soft”, ovverossia le strutture dati in
Scheme. Questo significa liste (è vero che ne abbiamo già parlato,
ma delle liste in Scheme non si finisce mai di discutere 😉 vettori,
dizionari, iteratori e stream, records e chi più ne ha più ne metta.
L’argomento è molto importante, ma anche meno “esotico” delle macro
e dovrebbe essere più semplice da seguire. Inoltre, parlando di strutture
dati avrò molte occasioni di dare esempi concreti di macro e di mostrare
la loro utilità sul campo.

Il mio piano è quello di riprendere il discorso teorico sulle macro,
discutendo syntax-case a partire dal quarto ciclo delle
“Avventure”, sempre che i miei lettori continuino a seguirmi. Questo
è il vostro momento: se volete dire “basta con le macro!”, oppure
anche “basta con questa serie che non ne possiamo più!” ditelo ora!
D’altra parte, se volete vedere la serie proseguire con un taglio
differente, proponete i cambi che avete in mente. Finora ho seguito un
taglio vagamente accademico, nel senso che i miei esempi sono stati
molto poco pratici. Per esempio, ho completamente trascurato
l’input/output e non ho mai detto come leggere un file in Scheme o
come scrivere su di un socket. Se volete un taglio più pratico,
ditelo e vedrò di accontentarvi. I motivi per cui sono stato sul
teorico sono vari:

  1. pare che i lettori di Stacktrace apprezzino le cose “inutili”, vedi
    per esempio il grande successo degli articoli sul progetto Eulero;
  2. mi aspetto che la maggior parte di voi legga le mie avventure
    per cultura personale e non per scrivere applicazioni in Scheme;
  3. il linguaggio stesso ha una tradizione accademica e viene solitamente
    spiegato con esempi poco pratici (se dovessi spiegare il
    linguaggio bash, tanto per dirne uno, mi verrebbe naturale dare esempi
    molto più pratici invece).

Ciò detto, se i lettori mi chiedono esempi più pratici, non ho
problemi a esibirne, sta a voi decidere il taglio che vorreste vedere.
Per esempio, non sarebbe difficile re-implementare in Scheme quanto ho
illustrato nella miniserie “Gestione dei record in Python”, facendo
vedere come si processano file CSV e come si interagisce con un
database.

Un discorso a parte meritano le “sfide”: sono stato incerto fin
dall’inizio sulla loro inclusione e mi sono deciso a farlo dietro
incoraggiamento dei lettori (“non vedo l’ora di mettere le mani alla
console!”, “ben vengano le sfide da risolvere accendendo il cervello e
mettendo mano alla tastiera”, “Challenge! Challenge! Challenge! Facci
sudare!!”); nonostante i buoni propositi, però, nessuno ha postato
soluzioni alle sfide poste nelle ultime quattro puntate. Non so bene
il motivo (sfide troppo difficili? paura di esporsi postando la
propria soluzione? mancanza di tempo per affrontare la sfida?) ma
qualunque esso sia mi chiedo se abbia senso continuare con le sfide e
la risposta probabilmente è no.

Infine, volevo dire due parole sul numero dei lettori. Quanti siete a
seguire la serie? Ho fatto una piccola ricerca con Google Analytics,
aspettandomi di avere venticinque lettori o giù di lì, ed invece ho
scoperto che un articolo della serie di Scheme in media è letto da
duecento persone in un mese. Tanto per fare un confronto, la
miniserie su Python ha circa quattrocento lettori, numero paragonabile
con quello degli articoli più letti di Stacktrace: questo significa
che circa la metà dei lettori di Stacktrace legge anche la serie di
Scheme. Questo è un risultato notevole, tenendo conto che il numero
di programmatori Scheme in Italia è molto ridotto. D’altra
parte, sarei più contento se il numero dei lettori aumentasse
piuttosto che diminuire, quindi fatevi sentire e ditemi cosa vorreste
leggere. Qualunque sia la vostra opinione sul futuro di questa serie,
siate invitata a postarla come commento a questo editoriale. 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, pausa che occuperò concludendo la miniserie su
Python.

Chiudo con un’esortazione: commentate, commentate, commentate!

Michele Simionato

Comments

  1. Ciao, credo che sia giusto l’approccio accademico che hai tenuto fino ad ora, in fondo scheme è un linguaggio per molti versi fatto proprio a questo fine. Per quanto riguarda il ritmo delle postate, forse un pò più di pausa potrebbe aiutare, magari stando sui 10 giorni, vediamo altri lettori che dicono, comunque anche uno alla settimana non è un grosso problema secondo me.

  2. Premetto che seguo le tue avventure con mero spirito di curiosità in quanto, pur avendo al mio fianco il fido manuale di Python della O’Reilly, attendo di averci compreso qualcosa di più di Ruby (e metterlo all’opera) per curiosare più attentamente in questo splendido linguaggio. Figurati dunque la mia comprensione di Scheme, che neanche sapevo cosa fosse, fin dove può giungere! 🙂

    Detto questo e chiarito che dunque che la mia voce non é da prendere in considerazione circa la tua domanda riguardo la scansione temporale degli articoli, devo redarguirti sulla tua credenza circa la inutilità di questa e di altre serie. I tuoi articoli non sono inutili in quanto, seppure non danno ‘consigli pratici’ danno le informazioni necessarie per comprendere le dinamiche interne, i modelli che stanno alla base di un linguaggio. Questo permette a chi segue, me ad esempio, di comprendere la teoria pur senza mettere mano al codice vero e proprio e alla sintassi. Sapere che altrove le cose possono essere fatte seguendo modalità diverse e, magari, molto più efficiente.

    Meglio dare informazioni su come coltivare un campo di patate o meglio dare direttamente un cesto di patate? Io son sempre stato della prima opinione ed ho sempre stimato coloro che mi hanno dato il modo di comprendere come poter coltivare un campo invece di limitarsi a passarmi il cesto bello che fatto.
    Quindi un grazie ed un ‘continua così’ (una volta a settimana va bene, per me).

  3. Apprezzo tale serie, ma in
    effetti trovo il ritmo degli articoli troppo elevato.

    Mi piacerebbe che ci fosse un seguito su questo argomento ma non sulle
    strutture dati, quanto piuttosto sulle applicazioni pratiche (es. web application
    basata su cps, o utilizzo di un db, o opengl, o scheme come linguaggio
    embedded, DSL etc.).

    Preferirei ovviamente che si parlasse
    di queste applicazioni per mostrare delle feature di scheme
    cosi’ peculiari che ne facciano apprezzare l’uso, piuttosto che mostrare le
    API della libreria di turno.

    Comunque, complimenti per il lavoro prodotto fin ora!!!

  4. tiziano says:

    ciao michele, trovo la tua serie su scheme estremamente interessante e ti esorto a continuare. Il taglio “teorico” che hai dato ai tuoi articoli mi e’ piacuto molto, e per il futuro l’ideale sarebbe continuare cosi’, dando pero’ via via esempi sempre piu’ concreti (magari come piccole digressioni), e lasciando i toy-examples nel corpo degli articoli piu’ “teorici”. il ritmo di pubblicazione mi e’ indifferente: al momento non ho assolutamente tempo di seguirti con regolarita’, appena escono gli articoli cerco sempre di darci un’occhiata, ma il lavoro serio sono riuscito a farlo solo un paio di volte (e in quelle occasioni ho postato tentativi di soluzione alle sfide). confido di trovare il tempo nel prossimo futuro (2-3 anni :-)) di riguardarmi tutto con calma e con i miei ritmi. per questo le “sfide”, per quanto immagino ti costino una certa fatica (dovrai pur implementare le soluzioni prima di proporle :-)), sono secondo me importantissime: mi divertono molto e sono l’unico modo per forzare il lettore a mettere mano alla tastiera. quando iniziero’ lo studio di scheme mi propongo di mettermi li’ e tentare di risolvere tutte le sfide. quindi mi raccomando: non mollare!

  5. Ciao Michele! Io adoro la serie e sono interessato soprattutto agli aspetti del linguaggio che sono unici di questa famiglia, come le macro. Sono partito con dei buoni propositi riguardo alle sfide, ma ultimamente ho parecchie scadenze e non riesco a tenere il passo. Secondo me pero’ sono molto utili, e spero di potere recuperare piu’ in la’… Grazie mille!

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.