Regole

Programmare è scrivere un testo secondo certe regole, che sono prima di tutto quelle della grammatica del linguaggio che si usa, e poi anche altre più complesse, che dipendono dal contesto.
Ma è chiaro che non si programma come si scrive: esistono dei vincoli molto più forti nei linguaggi di programmazione rispetto a quelli delle lingue naturali. Se non rispettao quelle regole, il codice non viene compilato e viene segnalato un errore.
D'altra parte, i linguaggi di programmazione permettono di estendere le regole. Si possono creare parole nuove (anzi lo si fa tutto il tempo: variabili, costanti, procedure, funzioni) e entro certi limiti anche regole nuove, fino a modificare la grammatica stessa.
Da questo punto di vista, i linguaggi di programmazione sono più liberi delle stesse lingue naturali.
Ma quando si pensa ad un poeta, a musicista o a un pittore, si immagina che la sua creatività si esprima proprio nell'assenza di regole. Il poeta inventa, il musicista improvvisa, il pittore rappresenta quello che vede con il suo occhio interiore...
Tutta un'altra cosa rispetto a quello che fa il programmatore, chino sulla sua tastiera, ripetende cento e cento volte le stesse frasi e attento a non sbagliare inserendo uno spazio o una virgola di troppo.
Eppure... eppure l'arte ha a che fare con le regole, e con la violazione consapevole delle regole, almeno quanto la programmazione.
Malgrado quello che si impara a scuola, o si crede di aver imparato (ah, l'ispirazione dei poeti romantici...) l'arte non è solo espressione libera e non ha a che fare solo con solo l'ispirazione. In generale, la creatività - analogica o digitale - non è solo ispirazione e fantasia.
Fin dall'inizio, gli artisti hanno esplorato i limiti delle arti scegliendo regole sempre più stringenti. Grammatica, rime e ritmo sono solo un piccolo sottoinsieme dei vincoli che gli autori si sono dati.
Questo è vero tanto per la musica quanto per la scrittura (la cosiddetta poetica dei vincoli).
Più stretti sono i limiti, più piccolo il margine di libertà, più sfidante è il lavoro di costruzione dell'opera.
E' esattamente questa sfida che rende così attraente il lavoro del programmatore: sa che deve essere creativo, ma all'interno di un linguaggio formale, con una grammatica rigida, e con vincoli di tempo e risorse.
E' questa stessa forza che spinge gli sviluppatori a gareggiare nelle competizione di codice offuscato, come lo IOCCC.

	 Ha collaborato a questo pannello Douma Zakaria

Prossimo pannello:Queneau

© Codexpo.org - Content released under Creative Commons 4.0 BY/SA/NC

  1. Regole
  2. Queneau
  3. Oulipo
  4. Musica
  5. Improvvisazione
  6. Live Coding