Notizie in scheme
-
Editoriali 3 Ott 2008
Le Nuove Avventure di un Pythonista in Schemeland
di
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”.
-
Editoriali 21 Mag 2008
Le avventure del futuro
di
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? -
Programmazione 15 Mag 2008
Le avventure di un Pythonista in Schemeland/11
di

Dopo la teoria discussa nelle puntate precedenti, finalmente è il momento di un pò di pratica. Dedicherò questa puntata alla discussione di alcune applicazioni concrete delle macro. In particolare implementerò un mini-framework di unit test ed un semplicissimo sistema ad oggetti. Entrambe le cose si possono trovare come librerie (per i test si vedano gli SRFI 64 e 78, di sistemi ad oggetti ce ne sono a bizzeffe) ma secondo me è estremamente utile avere un'idea degli ingranaggi che stanno dietro ad una libreria di unit test o ad un sistema ad oggetti. D'altra parte, è anche utile conoscere i problemi che possono far inceppare gli ingranaggi della macrologia e quindi per prima cosa discuterò una sottigliezza delle macro che teoricamente è facile da capire, ma che in pratica può trarre in inganno anche programmatori esperti.
-
Programmazione 8 Mag 2008
Le avventure di un Pythonista in Schemeland/10
di

In questo puntata chiudo il discorso sulle macro del secondo ordine iniziato nella puntata scorsa, spiego i segreti dell'operatore di ellipsis e mostro le soluzioni alle sfide da me lanciate. Inoltre, spiego come definire una macro
define-syntax+che fornisce delle funzionalità di introspezione e debugging alle macro che definisce. Prima di cominciare a leggere, vi consiglio di prepararvi una grossa scorta di caffè. Come si dice nel mondo Python, questa è una puntata che rischia di farvi scoppiare la testa, quindi leggetela con cautela e a vostro rischio e pericolo. Siete avvisati! -
Programmazione 28 Apr 2008
Le avventure di un Pythonista in Schemeland /9
di
Non c'è limite al livello di sofisticazione che si può raggiungere con le macro; in particolare è possibile definire delle macro di ordine superiore, ovverossia delle macro che definiscono macro. Questa tecnica permette uno stile di programmazione molto elegante, che però può facilmente condurre a codice incomprensibile e indebuggabile. Per evitare ciò, sarò costretto ad introdurre dei tool di supporto. Sfortunamente tali tool non saranno standard, in quanto la tradizione di Scheme è quella di fornire degli strumenti di base estremamente potenti con cui è possibile definire delle utilità che rendono la programmazione in Scheme relativamente semplice e debuggabile, ma di non inserire tali utilità direttamente nello standard. Questo significa che ogni programmatore è obbligato a invertarsi dei tool di sviluppo personali diversi da quelli di tutti gli altri.
Il sistema di macro non fa eccezione a questa filosofia e per esempio non esistono nello standard strumenti di debugging per le macro tipo il
macroexpanddel Common Lisp anche se sono facilissimi da costruire. La cosa fastidiosa è che non sarebbe stato difficile rendere gli strumenti di base più usabili. Ci possono essere varie spiegazioni per questa omissione. Volendo essere cattivi, si potrebbe pensare che sia stato fatto per obbigare gli studenti a svolgere i compiti, o addirittura che sia stato fatto per rendere Scheme un linguaggio per pochi eletti. -
Programmazione 10 Apr 2008
Le avventure di un Pythonista in Schemeland/8
di
Come promesso, in questa puntata parlerò di macro. Le macro di Scheme sono particolarmente avanzate, di gran lunga più sofisticate di quelle del Lisp e di qualunque altro linguaggio ed hanno una reputazione di formidabile complessità. Per essere più precisi, Scheme ha due sistemi di macro inclusi nello standard (più molti altri sistemi più o meno diffusi): le macro basate su
syntax-rules, che sono di potere limitato ma relativamente semplici, e le macro basate susyntax-case, che sono potentissime ma decisamente più complesse da utilizzare. In questo puntata darò soltanto degli esempi di macro basate susyntax-rules, assieme ad una minima discussione sui pro e contra delle macro. Prendete un bel respiro e allacciatevi le cinture che si parte!

