Il futuro de “Le avventure di un Pythonista in Schemeland”

In un commento alla prima puntata delle mie “Avventure” dicevo che questa
era una serie di ampio respiro che ci avrebbe accompagnato per molte
puntate. Parlavo seriamente: in questo momento, dopo cinque puntate,
siamo soltanto alla conclusione dell’introduzione. La serie vera
comincia adesso
.

Questo è il momento giusto per fare il punto della situazione.
Nelle puntate introduttive il mio scopo era quello di raggiungere il
grande pubblico e non era richiesto un grosso sforzo da parte del lettore.
In effetti, qualcuno che non conoscesse mimimamente Scheme e non avesse
neppure interesse a conoscerlo avrebbe tratto egualmente beneficio dalla
lettura della serie, visto che si sono discusse tematiche di carattere
generale e indipendenti dal linguaggio utilizzato (per esempio
la differenza tra ricorsione e iterazione e i pericoli dei
benchmark, che si applicano a tutti i linguaggi).

D’altra parte, nella serie vera e propria la mia intenzione è quella di
parlare veramente di Scheme ed in particolare delle caratteristiche
che lo caratterizzano e distinguono da tutti gli altri linguaggi.
Ho sentito nel passato dei programmatori dire che i linguaggi
sono tutti uguali: dappertutto ci sono gli if, i for, qualche
classettina, eccetera. Di solito chi la pensa in questo modo conosce
soltanto linguaggi come il Visual Basic, Java e C#. Chi conosce Python o
Ruby sa che i linguaggi non sono tutti uguali. Ci sono linguaggi che
usano paradigmi diversi e che richiedono un diverso modo di pensare.
Tanto per dirne una, il toolbox di un Pythonista non è lo stesso di quello di un
programmatore Java.
A maggior ragione questo è vero per Scheme. Potreste conoscere
alla perfezione Python ma avreste ancora davanti una lunga strada prima
di poter dire di conoscere Scheme: il linguaggio fornisce tutta
una serie di strumenti e tecniche che non hanno equivalente in Python.
In effetti, alcune delle tecniche di programmazione comuni in Scheme non
esistono in nessun altro linguaggio: ciò significa non si può sfruttare la
conoscenza acquisita da altre fonti ed è necessario ripartire da zero.
Questo rende lo studio di Scheme non facile e non adatto a tutti.

La seconda parte delle mie “Avventure” sarà quindi più tecnica e più
impegnativa. Se vorrete seguirla non basterà leggere ma bisognerà
anche scrivere: dovrete scaricarvi un’implementazione di Scheme e
mettervi a giocare con essa, scrivendo dei programmini, provando il
codice che fornirò nei articoli e risolvendo le challenge che di
tanto in tanto lancerò. Mi aspetto quindi di avere meno lettori perché
non tutti avranno il tempo e/o la voglia di seguire una serie così
impegnativa. Non importa: uno dei vantaggi di una rivista come
Stacktrace, che si basa sul lavoro volontario, è che siamo svincolati
dalla logica commerciale. L’editoria tradizionale ha un problema di
fondo insolubile: tutto quanto viene pubblicato è soggetto ad un
appiattimento verso il basso, in quanto ci sono orde di programmatori
principianti e pochi programmatori competenti. Questo significa che
c’è tutta una categoria di articoli bellissimi che non vengono mai
scritti perché non avrebbero un numero di lettori sufficientemente
ampio da assicurare un ritorno economico all’editore. Una delle ambizioni di
Stacktrace è quella di risolvere questo problema alla radice. La
nostra politica è quella di pubblicare articoli che secondo noi sono
validi, indipendentemente dal fatto che possano avere molti lettori o
pochi lettori.

Detto questo, non è mia ambizione quella di scrivere una serie elitaria.
Nelle mie intenzioni le mie “Avventure” dovrebbero essere leggibili per molti,
anche se non necessariamente per tutti. Allo scopo di raggiungere questa
ambizione quello che mi serve è il feedback dei lettori. Mi rivolgo qui
alla maggioranza silenziosa, a coloro i quali hanno seguito che le prime
cinque puntate ma che non hanno mai postato alcun commento. Alcuni (sempre
i soliti in realtà 😉 hanno già postato dei commenti lusinghieri e quindi so
che almeno tre o quattro lettori fedeli li avrò, ma allo zoccolo duro chiedo
di astenersi dal commentare. Scrivete soltanto se non avete mai commentato
prima. Le domande che vi faccio sono:

  1. vi è piaciuta la serie fino ad adesso?
  2. se non vi è piaciuta cosa avreste voluto leggere invece?
  3. vi va bene il cambio di stile che ho in mente per il futuro, l’entrare nello
    specifico del linguaggio e il dare delle challenge da risolvere a casa?
  4. avete delle tematiche in mente che vorreste vedere approfondite?
  5. se avete qualunque altra cosa che avreste voluto chiedere, chiedetela adesso,
    è il momento giusto! 😉

Siccome prevedo che molti si chiederanno come continuerà la serie,
gioco di anticipo e vi dico subito che l’argomento che andrò a
trattare nelle prossime puntate è quello delle macro. Le macro di Scheme
non hanno corrispettivo in nessun altro linguaggio; potreste anche avere
programmato in Common Lisp per vent’ anni ed ancora essere del tutto
incapaci di scrivere macro in Scheme. L’argomento dunque è impegnativo
e richiederà molte puntate per essere sviscerato. D’altra parte non esiste
a mia conoscenza un buon testo di riferimento sulle macro in Scheme (almeno
per il target di lettori che ho in mente io) dunque dovrò scriverlo da me
e prenderò l’occasione fornita da questa serie per portare a termine l’impresa,
sempre sperando di fare cosa gradita ai miei (pochi o tanti) lettori.

Questo è quanto. La parola a voi!

Michele Simionato

Comments

  1. Se non fosse stato Scheme io avrei scelto Lisp, un altro di quei linguaggi che sta li e mi guarda, e io non so se dire “Lo prendo!” oppure no. Oppure Smalltalk.
    Detto questo, trovo molto interessante l’essere avvicinato a un linguaggio cosi’… schivo ( 😛 ), ben venga quindi un percorso piu’ approfondito e accompagnato da piccole sfide (purche’ non si tratti di scrivere Jukebox!).
    E infine complimenti per gli articoli scritti fin’ora, ci voleva proprio qualcosa di diverso 🙂

  2. Ti ho seguito con interesse fin dell’inizio stando comodo sul divano, non vedo l’ora di mettere le mani alla console!

  3. Non vedo l’ora di mettere mano alla tastiera per “fare i compiti” 😉 finora ho seguito con interesse quanto scritto e sono convinto che si potrà solo guadagnare dal cambio che hai in mente!

  4. Non ho (ancora) letto i precedenti articoli su scheme: ma, da ex programmatore (emacs) lisp, mi sembra che la descrizione che hai fatto delle macro di scheme sia abbastanza interessante…per cui spero di riuscire a trovare dei ritagli di tempo libero da potere dedicare all’ argomento 😉

  5. effeuno says:

    Sono altamente interessato alla serie e ben vengano le “sfide” da risolvere accendendo il cervello e mettendo mano alla tastiera!
    Da parte mia ho un background di Lisp (Common e non solo) e di Smalltalk (sono molto interessato anche da Squeak), anche se purtroppo ho lavorato sempre con altri linguaggi e da poco in Ruby (dopo essermi documentato proprio su Python, di cui però non sono riuscito a digerire alcune cosette 🙁 ).
    Attendo con impazienza!.

  6. Non posso giurare che potrò seguirti passo passo nelle avventure (dannata real life) ma ti offro tutto il mio impegno 😀

    L’argomento mi affascina, e, comunque, non voglio perdere l’occasione di poter approfondire argomenti come questo.

    (inoltre è una generosa — oltre che doverosa — boccata d’ossigeno, visto che sto lavorando per la mia tesi in C 25 ore al giorno)

  7. Nicola Valentini says:

    Challenge! Challenge! Challenge!
    Facci sudare!!

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.