SlideShare a Scribd company logo
1 of 25
Download to read offline
Programmi, linguaggi e
narrazione
Copyright Stefano Penge 2010 CC BY-NC-SA
Cos'è un programma?
Proviamo a partire dall'analisi del termine
“programma”: un discorso, uno schema
(“gramma”) con un obiettivo (“pro”).
In tutti i suoi diversi usi, sembra avere in sé la
nozione di tempo (come in “programma
televisivo”) e quello di volontà (come in
“programma elettorale”) resa pubblica in forma di
impegno.
Tempi e soggetti
In questa definizione ci sono cioè due tempi: il
tempo del discorso (in cui viene scritto/enunciato)
e quello dell'esecuzione.
E ci sono tre soggetti: colui che enuncia, colui che
riceve/controlla e colui che esegue.
L'agenda è un caso di programma in cui i tre
soggetti coincidono.
Programma informatico
Possiamo provare ad adottare questa definizione
anche per i programmi di cui parliamo in
connessione con i computer.
Un programma informatico potrebbe essere
quindi “un discorso scritto in un linguaggio
(digitale) che impegna un soggetto (digitale) a
fare qualcosa di verificabile da qualcuno”.
Discorsi e linguaggi

Una definizione di questo tipo, anche se
approssimata e puramente discorsiva, presenta
aspetti interessanti.
Un programma è un discorso, scritto in qualche
linguaggio da qualcuno per qualcuno.
Impegno e comunità

L'impegno implica una direzione, non
necessariamente quella della risoluzione di un
problema.
L'impegno richiede l'esistenza di alcuni soggetti, o
meglio di una comunità di soggetti in grado di
comprendere il discorso ed, eventualmente,
verificarne l'attuazione (o modificarlo).
Leggibilità

Il programma deve quindi, almeno in linea di
principio, essere leggibile oltre che eseguibile.
Un programma scritto in un linguaggio
monoutente, che cioè solo l'autore stesso fosse in
grado di scrivere e leggere, non avrebbe senso.
Soggetti

La differenza che questa definizione sembra
istituire tra autore del discorso e soggetto
esecutore, almeno come figure, non implica che il
il soggetto autore sia umano e il soggetto
esecutore sia una macchina.
Una definizione classica
Nell'apertura di molti testi introduttivi sulla
programmazione e sui LLPP (linguaggi di
programmazione) si trovano invece definizioni di
questo genere:
Algoritmo = procedura rigorosa (formalizzabile,
calcolabile) per la risoluzione di un problema
Programma = rappresentazione in un linguaggio
formale di un algoritmo
Una definizione classica 2
È una definizione semplice ma non priva di
problemi:
● atomica (programmi complessi visti come
composizioni di programmi semplici),
● statica (si concentra sull'oggetto finale, sul
prodotto, e non sul processo),
● platonica (si fonda sulla divisione
materia/forma)
Non coglie gli aspetti dinamici, creativi, individuali
Programmi e problemi
Introduce il concetto di “problema” e con questo
sottolinea l'aspetto funzionale della
programmazione e del programma (“quello che
conta è lo scopo”; anzi l'obiettivo concreto, che è
rappresentato più come il superamento di uno
stato negativo che come la produzione di uno
stato positivo) lasciando intendere che non può
esistere un programma senza un problema, la cui
finalità sia per così dire intrinseca (e quindi,
estetica).
Non-programmi
Poiché naturalmente si può benissimo (ed è stato
fatto) scrivere un programma che non risolva
alcun problema, bisogna vedere se si può parlare
di programma in questo caso.
Resta anche aperta la questione dei programmi
incompleti, quella dei programmi errati, dei
programmi che intendono risolvere un problema
ma non ci riescono, etc.
Programmi e poesie
Equivale a definizioni del tipo “la poesia è
l'espressione linguistica di un sentimento”, che
postula due piani, quello dell'intuizione e quello
dell'espressione.
Nasconde il rapporto con le diverse
rappresentazioni possibili (LE lingue diverse) e
quindi i problemi sia teorici che pratici che il
concetto di traduzione porta con sé.
Traduttologia
La definizione di un programma come procedura
realizzata porta con sé delle questioni.
E' possibile la traduzione di un programma?
Lo stesso algoritmo può essere realizzato in
linguaggi diversi?
Si possono costruire più rappresentazioni
equivalenti all'interno dello stesso linguaggio?
Estetica?
Alla radice della difficoltà a concepire un'estetica
(e prima ancora, una semiotica, una linguistica,
dei LLPP) c'è probabilmente l'idea che l'estetica è
esclusa per principio in ogni contesto meccanico,
ripetitivo, formale. Estetica implica scelta,
differenza, stupore (oltre che volontà, corpo etc).
Non si dà estetica delle macchine? Futurismo,
Dada, OuLiPo, ...sembrano dire il contrario
Programma come macchina 1
Programma inteso come “macchina” dunque: ma
quale macchina?
Quella antica, pratica (la macchina da guerra)?
Quella rinascimentale, teorica (Leonardo)?
Quella barocca (le fontane, il teatro) ?
Quella settecentesca, filosofica (l'automa)?
Quella ottocentesca, economica (la macchina a
vapore)?
Quella novecentesca (il computer)?
Programma come macchina 2
ll programma come “macchina che converte
informazioni in altre informazioni”...
Questa definizione ha caratteristiche strane anche
rispetto alla macchina della meccanica classica,
che compie un lavoro ma consuma delle risorse e
converte parte dell'energia in calore (II° principio
TD) mentre la “macchina programma” è pensata
come macchina senza attrito, senza perdite
Macchine e programmi
Qui c'è un paradosso, o almeno un circolo,
interessante.
Se usiamo il computer come macchina di
riferimento per pensare il concetto di programma,
abbiamo però bisogno del concetto di programma
per immaginare un computer.
Un computer è un dispositivo in grado di eseguire
programmi; un computer è una macchina
composta da moduli funzionali dedicati
all'Input/Elaborazione/Output di informazioni).
Programmi e circoli
D'altra parte la circolarità è intrinseca al contesto
informatico.
Le operazioni possono essere dati per operazioni
di ordine superiore (meta-operazioni); un
programma può ricevere in input un altro
programma (o anche se stesso...) e produrne un
terzo come output (= compilatore, debugger, ...).
Macchine circolari
In un senso generale, programmare una
macchina, che sia fisica o virtuale, per fare
qualcosa, significa creare una nuova macchina
specifica a partire da una macchina generica
esistente (= interprete).
La nuova macchina definisce, limita, istanzia,
attualizza alcune delle possibilità virtualmente
presenti (Aristotele).
Anche da questo punto di vista, non c'è
programma(zione) senza lettura.
Programmi e storie

Un programma come discorso tra soggetti
assomiglia ad una narrazione, ad una storia.
Non si tratta qui di evidenziare alcuni tipi di
programmi (che producono storie) o di scrivere
particolari tipi di programmi utilizzando modelli
“poetici”.
Programma come narrazione
Ogni programma, in quanto discorso scritto con
intenzione verso un destinatario, è una storia.
Di questa narrazione possiamo andare a ricercare
le strutture globali e gli indicatori locali.
Come attività narrativa, anche se sui generis, la
scrittura di codice può essere studiata
diacronicamente e sincronicamente.
Sociolinguistica
E' noto che i linguaggi di programmazione hanno
una data di nascita, una filiazione (B /C /C++/C#..)
Ma anche i loro usi hanno una storia e una
geografia.
Gli autori di programmi seguono e creano mode,
scuole, leaders.
E sono persone diverse.
Un autore di programmi è...
Donna / Uomo
● Di madre lingua inglese / italiana /araba /...
● Conoscitore (anche) del linguaggio x/y/z/...
● Novizio / Esperto / Guru
● Proustiano / Hemingueyano
● Musicista / pittore /scultore / grafico
● Solitario / leader / gregario
● ...
●
Differenze

Tutte queste differenze trovano espressione nella
maniera di scrivere programmi?
E' quello che occorre verificare.

More Related Content

Similar to Programmi, linguaggi e narrazione

Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a pythonEnrico La Sala
 
Processing -guida_introduttiva_alla_pro
Processing  -guida_introduttiva_alla_proProcessing  -guida_introduttiva_alla_pro
Processing -guida_introduttiva_alla_proAlberto Cecchi
 
3. Progettare per l’utente
3. Progettare per l’utente3. Progettare per l’utente
3. Progettare per l’utenteRoberto Polillo
 
Coding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleCoding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleAlessandri Giuseppe
 
I linguaggi di programmazione 3BS
I linguaggi di programmazione 3BSI linguaggi di programmazione 3BS
I linguaggi di programmazione 3BSantani tapioco
 
Information Design: Visualizzazione di Informazioni Quantitative
Information Design: Visualizzazione di Informazioni QuantitativeInformation Design: Visualizzazione di Informazioni Quantitative
Information Design: Visualizzazione di Informazioni QuantitativeDuccio Schiavon
 
Duccio Schiavon - Information Design: Visualizzazione di Informazioni Quantit...
Duccio Schiavon - Information Design: Visualizzazione di Informazioni Quantit...Duccio Schiavon - Information Design: Visualizzazione di Informazioni Quantit...
Duccio Schiavon - Information Design: Visualizzazione di Informazioni Quantit...Social Media Lab
 
Pillole di programmazione in C
Pillole di programmazione in CPillole di programmazione in C
Pillole di programmazione in CNicola Corti
 
2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#Marco Parenzan
 
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Daniele Falamesca
 
AlgoMOOC 03.01. Rappresentazioni di algoritmi
AlgoMOOC 03.01. Rappresentazioni di algoritmiAlgoMOOC 03.01. Rappresentazioni di algoritmi
AlgoMOOC 03.01. Rappresentazioni di algoritmiAlessandro Bogliolo
 
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...guestfe59a4
 
Software development industriale
Software development industrialeSoftware development industriale
Software development industrialeguestfe59a4
 
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...guestfe59a4
 
Presentazione corretta algoritmi
Presentazione corretta algoritmiPresentazione corretta algoritmi
Presentazione corretta algoritmimattuzzi
 
AICA Workshop 26 feb 2008 @ SIAM
AICA Workshop 26 feb 2008 @ SIAMAICA Workshop 26 feb 2008 @ SIAM
AICA Workshop 26 feb 2008 @ SIAMFederico Gobbo
 
M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno?
M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno? M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno?
M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno? Istituto nazionale di statistica
 

Similar to Programmi, linguaggi e narrazione (20)

Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a python
 
Processing -guida_introduttiva_alla_pro
Processing  -guida_introduttiva_alla_proProcessing  -guida_introduttiva_alla_pro
Processing -guida_introduttiva_alla_pro
 
3. Progettare per l’utente
3. Progettare per l’utente3. Progettare per l’utente
3. Progettare per l’utente
 
1 Programmazione
1   Programmazione1   Programmazione
1 Programmazione
 
Presentazione,
Presentazione,Presentazione,
Presentazione,
 
Presentazione
PresentazionePresentazione
Presentazione
 
Coding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleCoding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionale
 
I linguaggi di programmazione 3BS
I linguaggi di programmazione 3BSI linguaggi di programmazione 3BS
I linguaggi di programmazione 3BS
 
Information Design: Visualizzazione di Informazioni Quantitative
Information Design: Visualizzazione di Informazioni QuantitativeInformation Design: Visualizzazione di Informazioni Quantitative
Information Design: Visualizzazione di Informazioni Quantitative
 
Duccio Schiavon - Information Design: Visualizzazione di Informazioni Quantit...
Duccio Schiavon - Information Design: Visualizzazione di Informazioni Quantit...Duccio Schiavon - Information Design: Visualizzazione di Informazioni Quantit...
Duccio Schiavon - Information Design: Visualizzazione di Informazioni Quantit...
 
Pillole di programmazione in C
Pillole di programmazione in CPillole di programmazione in C
Pillole di programmazione in C
 
2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#
 
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
 
AlgoMOOC 03.01. Rappresentazioni di algoritmi
AlgoMOOC 03.01. Rappresentazioni di algoritmiAlgoMOOC 03.01. Rappresentazioni di algoritmi
AlgoMOOC 03.01. Rappresentazioni di algoritmi
 
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
 
Software development industriale
Software development industrialeSoftware development industriale
Software development industriale
 
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
 
Presentazione corretta algoritmi
Presentazione corretta algoritmiPresentazione corretta algoritmi
Presentazione corretta algoritmi
 
AICA Workshop 26 feb 2008 @ SIAM
AICA Workshop 26 feb 2008 @ SIAMAICA Workshop 26 feb 2008 @ SIAM
AICA Workshop 26 feb 2008 @ SIAM
 
M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno?
M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno? M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno?
M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno?
 

More from Stefano Penge

Valutare (nel, con il) digitale
Valutare  (nel, con il) digitaleValutare  (nel, con il) digitale
Valutare (nel, con il) digitaleStefano Penge
 
Verso un uso consapevole dei dati digitali nell'educazione
Verso un uso  consapevole dei dati digitali nell'educazioneVerso un uso  consapevole dei dati digitali nell'educazione
Verso un uso consapevole dei dati digitali nell'educazioneStefano Penge
 
Programma o sarai programmato
Programma o sarai programmatoProgramma o sarai programmato
Programma o sarai programmatoStefano Penge
 
Creiamo una app Android con gli Opendata di Ipocad
Creiamo  una app Android con gli Opendata di IpocadCreiamo  una app Android con gli Opendata di Ipocad
Creiamo una app Android con gli Opendata di IpocadStefano Penge
 
Un automa linguistico
Un automa linguisticoUn automa linguistico
Un automa linguisticoStefano Penge
 
SCE2014_ACADEMY_Lynx
SCE2014_ACADEMY_LynxSCE2014_ACADEMY_Lynx
SCE2014_ACADEMY_LynxStefano Penge
 
Preparare il futuro: finanziamenti pubblici per idee innovative basata sull'o...
Preparare il futuro: finanziamenti pubblici per idee innovative basata sull'o...Preparare il futuro: finanziamenti pubblici per idee innovative basata sull'o...
Preparare il futuro: finanziamenti pubblici per idee innovative basata sull'o...Stefano Penge
 
Filckr apprendimento informale
Filckr apprendimento informaleFilckr apprendimento informale
Filckr apprendimento informaleStefano Penge
 
Dalla fruizione alla produzione: un modello di e-learning
Dalla fruizione alla produzione: un modello di e-learningDalla fruizione alla produzione: un modello di e-learning
Dalla fruizione alla produzione: un modello di e-learningStefano Penge
 
Social tagging in un ambiente di apprendimento digitale
Social tagging in un ambiente di apprendimento digitaleSocial tagging in un ambiente di apprendimento digitale
Social tagging in un ambiente di apprendimento digitaleStefano Penge
 
Attori, ambienti e oggetti: un modello integrato
Attori, ambienti e oggetti: un modello integratoAttori, ambienti e oggetti: un modello integrato
Attori, ambienti e oggetti: un modello integratoStefano Penge
 
Collaborare con gli sviluppatori per organizzare e sviluppare servizi di orie...
Collaborare con gli sviluppatori per organizzare e sviluppare servizi di orie...Collaborare con gli sviluppatori per organizzare e sviluppare servizi di orie...
Collaborare con gli sviluppatori per organizzare e sviluppare servizi di orie...Stefano Penge
 
Strumenti di analisi per la valutazione di un gruppo di apprendimento online
Strumenti di analisi per la valutazione di un gruppo di apprendimento onlineStrumenti di analisi per la valutazione di un gruppo di apprendimento online
Strumenti di analisi per la valutazione di un gruppo di apprendimento onlineStefano Penge
 
Strategie collaborative di costruzione di un corso online: una metodologia a ...
Strategie collaborative di costruzione di un corso online: una metodologia a ...Strategie collaborative di costruzione di un corso online: una metodologia a ...
Strategie collaborative di costruzione di un corso online: una metodologia a ...Stefano Penge
 
Strumenti portabili per l'analisi di un forum in un ambiente di apprendimento...
Strumenti portabili per l'analisi di un forum in un ambiente di apprendimento...Strumenti portabili per l'analisi di un forum in un ambiente di apprendimento...
Strumenti portabili per l'analisi di un forum in un ambiente di apprendimento...Stefano Penge
 
Opendata e opensource
Opendata e opensourceOpendata e opensource
Opendata e opensourceStefano Penge
 
Presentazione wikibolario online
Presentazione wikibolario onlinePresentazione wikibolario online
Presentazione wikibolario onlineStefano Penge
 

More from Stefano Penge (19)

Valutare (nel, con il) digitale
Valutare  (nel, con il) digitaleValutare  (nel, con il) digitale
Valutare (nel, con il) digitale
 
Verso un uso consapevole dei dati digitali nell'educazione
Verso un uso  consapevole dei dati digitali nell'educazioneVerso un uso  consapevole dei dati digitali nell'educazione
Verso un uso consapevole dei dati digitali nell'educazione
 
Rodari digitale
Rodari digitaleRodari digitale
Rodari digitale
 
Programma o sarai programmato
Programma o sarai programmatoProgramma o sarai programmato
Programma o sarai programmato
 
Creiamo una app Android con gli Opendata di Ipocad
Creiamo  una app Android con gli Opendata di IpocadCreiamo  una app Android con gli Opendata di Ipocad
Creiamo una app Android con gli Opendata di Ipocad
 
Mako
MakoMako
Mako
 
Un automa linguistico
Un automa linguisticoUn automa linguistico
Un automa linguistico
 
SCE2014_ACADEMY_Lynx
SCE2014_ACADEMY_LynxSCE2014_ACADEMY_Lynx
SCE2014_ACADEMY_Lynx
 
Preparare il futuro: finanziamenti pubblici per idee innovative basata sull'o...
Preparare il futuro: finanziamenti pubblici per idee innovative basata sull'o...Preparare il futuro: finanziamenti pubblici per idee innovative basata sull'o...
Preparare il futuro: finanziamenti pubblici per idee innovative basata sull'o...
 
Filckr apprendimento informale
Filckr apprendimento informaleFilckr apprendimento informale
Filckr apprendimento informale
 
Dalla fruizione alla produzione: un modello di e-learning
Dalla fruizione alla produzione: un modello di e-learningDalla fruizione alla produzione: un modello di e-learning
Dalla fruizione alla produzione: un modello di e-learning
 
Social tagging in un ambiente di apprendimento digitale
Social tagging in un ambiente di apprendimento digitaleSocial tagging in un ambiente di apprendimento digitale
Social tagging in un ambiente di apprendimento digitale
 
Attori, ambienti e oggetti: un modello integrato
Attori, ambienti e oggetti: un modello integratoAttori, ambienti e oggetti: un modello integrato
Attori, ambienti e oggetti: un modello integrato
 
Collaborare con gli sviluppatori per organizzare e sviluppare servizi di orie...
Collaborare con gli sviluppatori per organizzare e sviluppare servizi di orie...Collaborare con gli sviluppatori per organizzare e sviluppare servizi di orie...
Collaborare con gli sviluppatori per organizzare e sviluppare servizi di orie...
 
Strumenti di analisi per la valutazione di un gruppo di apprendimento online
Strumenti di analisi per la valutazione di un gruppo di apprendimento onlineStrumenti di analisi per la valutazione di un gruppo di apprendimento online
Strumenti di analisi per la valutazione di un gruppo di apprendimento online
 
Strategie collaborative di costruzione di un corso online: una metodologia a ...
Strategie collaborative di costruzione di un corso online: una metodologia a ...Strategie collaborative di costruzione di un corso online: una metodologia a ...
Strategie collaborative di costruzione di un corso online: una metodologia a ...
 
Strumenti portabili per l'analisi di un forum in un ambiente di apprendimento...
Strumenti portabili per l'analisi di un forum in un ambiente di apprendimento...Strumenti portabili per l'analisi di un forum in un ambiente di apprendimento...
Strumenti portabili per l'analisi di un forum in un ambiente di apprendimento...
 
Opendata e opensource
Opendata e opensourceOpendata e opensource
Opendata e opensource
 
Presentazione wikibolario online
Presentazione wikibolario onlinePresentazione wikibolario online
Presentazione wikibolario online
 

Programmi, linguaggi e narrazione

  • 1. Programmi, linguaggi e narrazione Copyright Stefano Penge 2010 CC BY-NC-SA
  • 2. Cos'è un programma? Proviamo a partire dall'analisi del termine “programma”: un discorso, uno schema (“gramma”) con un obiettivo (“pro”). In tutti i suoi diversi usi, sembra avere in sé la nozione di tempo (come in “programma televisivo”) e quello di volontà (come in “programma elettorale”) resa pubblica in forma di impegno.
  • 3. Tempi e soggetti In questa definizione ci sono cioè due tempi: il tempo del discorso (in cui viene scritto/enunciato) e quello dell'esecuzione. E ci sono tre soggetti: colui che enuncia, colui che riceve/controlla e colui che esegue. L'agenda è un caso di programma in cui i tre soggetti coincidono.
  • 4. Programma informatico Possiamo provare ad adottare questa definizione anche per i programmi di cui parliamo in connessione con i computer. Un programma informatico potrebbe essere quindi “un discorso scritto in un linguaggio (digitale) che impegna un soggetto (digitale) a fare qualcosa di verificabile da qualcuno”.
  • 5. Discorsi e linguaggi Una definizione di questo tipo, anche se approssimata e puramente discorsiva, presenta aspetti interessanti. Un programma è un discorso, scritto in qualche linguaggio da qualcuno per qualcuno.
  • 6. Impegno e comunità L'impegno implica una direzione, non necessariamente quella della risoluzione di un problema. L'impegno richiede l'esistenza di alcuni soggetti, o meglio di una comunità di soggetti in grado di comprendere il discorso ed, eventualmente, verificarne l'attuazione (o modificarlo).
  • 7. Leggibilità Il programma deve quindi, almeno in linea di principio, essere leggibile oltre che eseguibile. Un programma scritto in un linguaggio monoutente, che cioè solo l'autore stesso fosse in grado di scrivere e leggere, non avrebbe senso.
  • 8. Soggetti La differenza che questa definizione sembra istituire tra autore del discorso e soggetto esecutore, almeno come figure, non implica che il il soggetto autore sia umano e il soggetto esecutore sia una macchina.
  • 9. Una definizione classica Nell'apertura di molti testi introduttivi sulla programmazione e sui LLPP (linguaggi di programmazione) si trovano invece definizioni di questo genere: Algoritmo = procedura rigorosa (formalizzabile, calcolabile) per la risoluzione di un problema Programma = rappresentazione in un linguaggio formale di un algoritmo
  • 10. Una definizione classica 2 È una definizione semplice ma non priva di problemi: ● atomica (programmi complessi visti come composizioni di programmi semplici), ● statica (si concentra sull'oggetto finale, sul prodotto, e non sul processo), ● platonica (si fonda sulla divisione materia/forma) Non coglie gli aspetti dinamici, creativi, individuali
  • 11. Programmi e problemi Introduce il concetto di “problema” e con questo sottolinea l'aspetto funzionale della programmazione e del programma (“quello che conta è lo scopo”; anzi l'obiettivo concreto, che è rappresentato più come il superamento di uno stato negativo che come la produzione di uno stato positivo) lasciando intendere che non può esistere un programma senza un problema, la cui finalità sia per così dire intrinseca (e quindi, estetica).
  • 12. Non-programmi Poiché naturalmente si può benissimo (ed è stato fatto) scrivere un programma che non risolva alcun problema, bisogna vedere se si può parlare di programma in questo caso. Resta anche aperta la questione dei programmi incompleti, quella dei programmi errati, dei programmi che intendono risolvere un problema ma non ci riescono, etc.
  • 13. Programmi e poesie Equivale a definizioni del tipo “la poesia è l'espressione linguistica di un sentimento”, che postula due piani, quello dell'intuizione e quello dell'espressione. Nasconde il rapporto con le diverse rappresentazioni possibili (LE lingue diverse) e quindi i problemi sia teorici che pratici che il concetto di traduzione porta con sé.
  • 14. Traduttologia La definizione di un programma come procedura realizzata porta con sé delle questioni. E' possibile la traduzione di un programma? Lo stesso algoritmo può essere realizzato in linguaggi diversi? Si possono costruire più rappresentazioni equivalenti all'interno dello stesso linguaggio?
  • 15. Estetica? Alla radice della difficoltà a concepire un'estetica (e prima ancora, una semiotica, una linguistica, dei LLPP) c'è probabilmente l'idea che l'estetica è esclusa per principio in ogni contesto meccanico, ripetitivo, formale. Estetica implica scelta, differenza, stupore (oltre che volontà, corpo etc). Non si dà estetica delle macchine? Futurismo, Dada, OuLiPo, ...sembrano dire il contrario
  • 16. Programma come macchina 1 Programma inteso come “macchina” dunque: ma quale macchina? Quella antica, pratica (la macchina da guerra)? Quella rinascimentale, teorica (Leonardo)? Quella barocca (le fontane, il teatro) ? Quella settecentesca, filosofica (l'automa)? Quella ottocentesca, economica (la macchina a vapore)? Quella novecentesca (il computer)?
  • 17. Programma come macchina 2 ll programma come “macchina che converte informazioni in altre informazioni”... Questa definizione ha caratteristiche strane anche rispetto alla macchina della meccanica classica, che compie un lavoro ma consuma delle risorse e converte parte dell'energia in calore (II° principio TD) mentre la “macchina programma” è pensata come macchina senza attrito, senza perdite
  • 18. Macchine e programmi Qui c'è un paradosso, o almeno un circolo, interessante. Se usiamo il computer come macchina di riferimento per pensare il concetto di programma, abbiamo però bisogno del concetto di programma per immaginare un computer. Un computer è un dispositivo in grado di eseguire programmi; un computer è una macchina composta da moduli funzionali dedicati all'Input/Elaborazione/Output di informazioni).
  • 19. Programmi e circoli D'altra parte la circolarità è intrinseca al contesto informatico. Le operazioni possono essere dati per operazioni di ordine superiore (meta-operazioni); un programma può ricevere in input un altro programma (o anche se stesso...) e produrne un terzo come output (= compilatore, debugger, ...).
  • 20. Macchine circolari In un senso generale, programmare una macchina, che sia fisica o virtuale, per fare qualcosa, significa creare una nuova macchina specifica a partire da una macchina generica esistente (= interprete). La nuova macchina definisce, limita, istanzia, attualizza alcune delle possibilità virtualmente presenti (Aristotele). Anche da questo punto di vista, non c'è programma(zione) senza lettura.
  • 21. Programmi e storie Un programma come discorso tra soggetti assomiglia ad una narrazione, ad una storia. Non si tratta qui di evidenziare alcuni tipi di programmi (che producono storie) o di scrivere particolari tipi di programmi utilizzando modelli “poetici”.
  • 22. Programma come narrazione Ogni programma, in quanto discorso scritto con intenzione verso un destinatario, è una storia. Di questa narrazione possiamo andare a ricercare le strutture globali e gli indicatori locali. Come attività narrativa, anche se sui generis, la scrittura di codice può essere studiata diacronicamente e sincronicamente.
  • 23. Sociolinguistica E' noto che i linguaggi di programmazione hanno una data di nascita, una filiazione (B /C /C++/C#..) Ma anche i loro usi hanno una storia e una geografia. Gli autori di programmi seguono e creano mode, scuole, leaders. E sono persone diverse.
  • 24. Un autore di programmi è... Donna / Uomo ● Di madre lingua inglese / italiana /araba /... ● Conoscitore (anche) del linguaggio x/y/z/... ● Novizio / Esperto / Guru ● Proustiano / Hemingueyano ● Musicista / pittore /scultore / grafico ● Solitario / leader / gregario ● ... ●
  • 25. Differenze Tutte queste differenze trovano espressione nella maniera di scrivere programmi? E' quello che occorre verificare.