3. Una guida sugli Script-Fu

In questo corso guidato verranno introdotti i concetti base del linguaggio Scheme, necessari per usare e creare dei comodi script Script-Fu da aggiungere ai propri. Lo script preso in esame richiede del testo all'utente, e crea una nuova immagine perfettamente dimensionata ad esso. Si migliorerà lo script in modo da creare dello spazio attorno al testo. In conclusione una serie di suggerimenti per aumentare le proprie conoscenze sugli Script-fu.

[Nota] Nota

Questa sezione è stata adattata da un tutorial scritto per la versione 1 di GIMP del manuale utente di Mike Terry.

3.1. Introduzione a Scheme

3.1.1. Iniziamo a Scheme'izzare

Scheme è un dialetto della famiglia dei linguaggi di programmazione Lisp. GIMP usa TinyScheme, che è un interprete leggero di un sottoinsieme del cosidetto standard R5RS.

La prima regola da ricordare è che:

Ogni comando in Scheme è racchiuso tra parentesi tonde ().

La seconda nozione da sapere è che:

Il nome di una funzione/operatore è sempre il primo elemento all'interno delle parentesi mentre gli elementi successivi costituiscono i parametri della funzione.

Comunque, non tutto ciò che è racchiuso tra parentesi è una funzione; ci possono anche essere elementi di una lista, ma ciò sarà affrontato più avanti. Questa notazione è anche nota come notazione prefissa, poiché il nome della funzione viene prima di tutto. Se si conosce già la notazione prefissa o si possiede una calcolatrice che utilizza la Notazione Polacca Inversa (come ad esempio la maggior parte delle calcolatrici HP) non si dovrebbero avere problemi nel formulare espressioni in Scheme.

La terza cosa da comprendere è che:

Anche gli operatori matematici sono considerati funzioni e quindi, quando si scrivono espressioni matematiche, vengono per primi.

Questo deriva logicamente dalla notazione prefissa summenzionata.

3.1.2. Esempi di notazione prefissa, infissa e postfissa

Ecco alcuni esempi che illustrano la differenza tra le notazioni prefissa, infissa, e postfissa. Supponiamo di addizionare tra di loro 1 e 23:

  • Notazione prefissa: + 1 23 (la maniera richiesta da Scheme)

  • Notazione infissa: 1 + 23 (come siamo abituati a scrivere)

  • Notazione postfissa: 1 3 + (alla maniera di molte calcolatrici HP)

3.1.3. Fare pratica con Scheme

Ora mettiamo in pratica quanto detto sopra. Avviare GIMP, se non è già pronto, e scegliere FiltriScript-FuConsole. Verrà mostrata la finestra della console Script-Fu che consente di lavorare interattivamente in Scheme:

3.1.4. La finestra del terminale Script-Fu

Nella parte inferiore della finestra c'è un'area di testo denominata Comando corrente. In quest'area si possono provare interattivamente semplici comandi Scheme. Per iniziare gradualmente sommiamo alcuni numeri:

(+ 3 5)

Dopo aver digitato quanto sopra e aver premuto Invio si otterrà la risposta attesa di 8 al centro della finestra.

Figura 13.1. Uso della console Script-fu.

Uso della console Script-fu.

Ora, cosa fare se si vogliono sommare più numeri? La funzione «+» può prendere due o più argomenti quindi non dovrebbero esserci problemi:

(+ 3 5 6)

Si ottiene la risposta attesa di 14.

Finora tutto ok, se si digita una istruzione Scheme questa viene immediatamente eseguita nella finestra della console Script-Fu. Ora alcuni avvertimenti....

3.1.5. Attenzione alle parentesi superflue

Spesso si è abituati ad utilizzare parentesi aggiuntive ogni volta che se ne ha bisogno, come quando si scrivono complesse espressioni matematiche e si vogliono separare le parti per renderle più chiare. In Scheme, bisogna prestare attenzione a non introdurre queste parentesi extra in maniera errata. Per esempio si supponga di voler sommare 3 al risultato dell'addizione di 5 e 6:

3 + (5 + 6) + 7 = ?

Sapendo che l'operatore + può prendere una lista di numeri da sommare si potrebbe essere tentati di trasformare quanto sopra in:

(+ 3 (5 6) 7)

Tuttavia questo non è il modo corretto, si ricordi che ogni istruzione in Scheme inizia e termina con una parentesi quindi l'interprete Scheme penserà che si sta cercando di chiamare una funzione denominata «5» nel secondo gruppo di parentesi piuttosto che sommare quei numeri prima di aggiungerli a 3.

Il modo corretto di scrivere l'istruzione di cui sopra è:

(+ 3 (+ 5 6) 7)

3.1.6. Prestare attenzione alla corretta spaziatura

Se si conoscono altri linguaggi di programmazione come C/C++, Perl o Java, si dovrebbe sapere che non sono necessari spazi tra gli operatori matematici per avere delle espressioni matematiche ben formate:

        3+5, 3 +5, 3+ 5
      

Queste sono tutte accettate dai compilatori C/C++, Perl e Java. Lo stesso non vale per Scheme. È obbligatorio avere uno spazio dopo un operatore matematico (o dopo ogni nome di funzione o operatore) per far sì che sia interpretato correttamente dall'interprete Scheme.

Si consiglia di fare pratica con semplici equazioni matematiche nella console di Script-Fu per acquisire dimestichezza con questi concetti iniziali.