pubblicato in

Luisa Bortolotti e Paolo Rauzi (a cura di),
Atti del seminario "Informatica e scuola: il fenomeno Linux", Iprase-PAT, Trento 2000


LUISA BORTOLOTTI
&
PAOLO RAUZI

 

La filosofia della scienza come chiave di lettura del free software

 

Premessa - Il free software è un fenomeno che solo di recente ha ottenuto una certa attenzione da parte dell'opinione pubblica. Infatti prima della diffusione del sistema operativo Linux era pressochè impossibile trovare sulla stampa notizie su questo argomento e a tuttora si deve ritenere che la sua conoscenza nel mondo della scuola sia ancora abbastanza poco diffusa.

Gli interventi qui raccolti al Seminario-Convegno "Informatica e scuola: il fenomeno Linux" che si è tenuto nei giorni 22 e 23 febbraio 2000 presso l'Aula Magna del Museo Tridentino di Scienze Naturali a Trento servono a dare una chiave di lettura abbastanza completa del free software, poiché definiscono e analizzano in modo approfondito che cosa si deve intendere con questo termine.

Chi volesse invece una prima e provvisoria risposta alla domanda "che cos'è il free software" non può fare a meno di interessarsi di alcuni concetti che richiedono un minimo di approfondimento. Il primo concetto è quello di software.

Software sorgente e software binario - Che cos'è il software? Secondo la definzione di un agile testo dedicato al mondo della scuola il software "E' la parte "leggera" (linguaggi, programmi) di un computer, contrapposta all'hardware;"1 è "quell'insieme di informazioni (dati e istruzioni) che si immettono nella macchina-computer (input) attraverso strumenti meccanici, elettronici o magnetici (tastiera, mouse, floppy disk, dischi rigidi, scanner, microfoni connessi al computer attraverso schede sonore, ecc.)"2. Si tratta quindi di quello che in italiano si chiama comunemente "programma per un calcolatore elettronico"; ovvero di una serie di istruzioni che la macchina esegue su richiesta dell'utente.

Una importante distinzione è anche quella che si riscontra tra il codice sorgente del programma e il codice binario dello stesso3. Il codice sorgente è il programma scritto con un linguaggio di alto livello, il codice binario è lo stesso programma espresso in istruzioni direttamente eseguibili dalla macchina, ovvero nel linguaggio macchina. Quest'ultimo, composto solo da sequenze di zero e di uno, è praticamente illeggibile.

"L'esempio seguente mostra la stessa istruzione scritta in Pascal, in BASIC, in FORTRAN e in linguaggio macchina:

Pascal write('Ciao')

BASIC print('Ciao')

FORTRAN write(6, 'Ciao')

Linguaggio macchina 1011 01000011 01001001 01000001 01001111

 

La differenza tra i primi tre linguaggi e il quarto è notevole: le istruzioni in Pascal, in BASIC e in FORTRAN sono abbastanza comprensibili, mentre il linguaggio macchina è praticamente illeggibile. Questo fatto non deve stupire: il calcolatore lavora solo con sequenze di zero e uno, che non sono adatte all'uomo come le lettere e le parole. E' difficile, ad esempio, ricordare che per il calcolatore la lettera C è 01000011.

Per superare questa difficoltà è venuta in soccorso l'idea di scrivere i programmi in un linguaggio più adatto all'uomo, e di farli poi tradurre da un apposito programma traduttore. In questo modo, ogni programma è scritto in due linguaggi: il linguaggio adatto all'uomo, come il Pascal (che è detto linguaggio ad alto livello) e il linguaggio macchina. Oltre al Pascal, anche il FORTRAN, il BASIC e il PROLOG sono linguaggi ad alto livello; in realtà, almeno il 90% dei 2500 linguaggi esistenti sono ad alto livello"4.

La chiave per capire che cos'è il free software è quindi la distinzione tra i linguaggi ad alto livello, ovvero il programma sorgente, ed il linguaggio macchina, ovvero il programma oggetto (o programma compilato). Una caratteristica essenziale del free software è che l'utente ha la disponibilità del programma sorgente che ha il vantaggio di poter essere facilmente modificato. Va precisato che la disponibilità del sorgente è importante, ma non è l’unica caratteristica del free software, sulla cui definizione sono nate molte discussioni. Gli interventi dei relatori del Seminario-Convegno approfondiscono meglio tutte le altre caratteristiche e peculiarità del free software, ma ai fini di una primo approccio al problema può essere sufficiente tenere presente la distinzione tra sorgente e binario.

Soltanto chi possiede il codice sorgente può capire come funziona effettivamente il programma che sta utilizzando e sapere che cosa questo sta facendo sul computer che esegue le istruzioni contenute nel programma. Le case produttrici di software vendono sempre i programmi binari, mentre lavorano sui programmi sorgente per gli aggiornamenti. Chi possiede soltanto il codice binario si trova invece nella condizione di fare affidamento sulla persona che ha scritto il programma e lo ha distribuito. Se il programma è scritto bene, funzionerà effettivamente secondo quanto ci si attende. Se invece il programma contiene qualche errore potrà accadere che la sua esecuzione provochi il blocco del computer. Anche la problematica relativa ai cosiddetti virus informatici è legata alla impossibilità di capire che cosa sta effettivamente facendo un programma di cui si conosce solamente il codice binario.

A chi serve il sorgente? L’analogia con la scienza - Fatta questa premessa l'ovvia obiezione riguarda l'utilità pratica per l'utente della disponibilità del codice sorgente. Come si è detto, il linguaggio macchina, composto solo da sequenze di zero e di uno, è praticamente illeggibile per chiunque. Ma anche il sorgente di un programma è comunque una sequenza di algoritmi molto complessa e quindi sono pochi gli utenti in grado di ottenere qualche vantaggio in caso di malfunzionamento del programma. Quindi a prima vista il valore aggiunto di questa caratteristica del free software (la disponibilità del programma sorgente) sembra molto ridotto. A questa obiezione emersa nel dibattito tenutosi nel corso del Convegno ha risposto molto bene Roberto Di Cosmo con una interessante analogia tra il software e la teoria scientifica.

Anche molte teorie scientifiche sono di difficile verifica sperimentale, tanto è vero che solo pochi specialisti hanno i mezzi per ripetere le esperienze che ne rappresentano la base sperimentale. Nonostante ciò la comunità scientifica nel suo complesso rappresenta una garanzia sulla controllabilità delle asserzioni contenute nelle teorie scientifiche. Quindi se è vero che l'analisi del codice sorgente di un programma alla ricerca delle cause di un errore è una attività alla portata di pochi specialisti, ciò non deve indurre nell'errore di sottovalutare l'importanza della pubblica disponibilità del sorgente. Infatti anche se pochi sono gli specialisti che sanno effettivamente scrivere e controllare software, su scala mondiale si tratta di un gruppo che è consistente. Grazie alla presenza di un potente strumento di comunicazione come Internet5, lo scambio di informazioni si è talmente sviluppato da creare una comunità internazionale di programmatori che ha dinamiche non dissimili da quelle della comunità scientifica.

Questa analogia tra software e teoria scientifica naturalmente non va assolutizzata, poichè le differenze tra i due mondi sono molte: tanto per cominciare le scienze empiriche si confrontano con la realtà6, mentre il software è una "realtà virtuale" chiusa in se stessa. Ciò nonostante la chiave di lettura offerta da questa analogia è molto stimolante e per questo molto utilizzata, tanto è vero che spesso negli ambienti del free software si sente dire che proprio perchè gli algoritmi di programmazione sono da equiparare alle scoperte scientifiche è illegittima e dannosa qualsiasi forma di limitazione al loro libero utilizzo, proprio come se si volesse imporre il pagamento dei diritti d'autore sull'utilizzo degli algoritmi della matematica.

Trattandosi di una chiave di lettura stimolante conviene analizzarla meglio approfondendola tenendo conto della storia della filosofia della scienza7 e dell'epistemologia del '900, che ampiamente si sono dedicate a cercare le condizioni che rendono possibili lo sviluppo della scienza8.

Filosofia della scienza e falsificazionismo popperiano - Karl Popper ha offerto un modello di interpretazione del metodo scientifico che anche se è stato soggetto a molte critiche può essere un buon punto di partenza. Il modello di Popper propone il criterio di falsificabilità come criterio per distinguere la scienza empirica dalla non scienza: una teoria appartiene alla prima soltanto se può venire smentita o falsificata (fatta falsa) dai fatti. "[..] io ammetterò certamente come empirico, o scientifico, soltanto un sistema che possa essere controllato dall'esperienza. Queste considerazioni suggeriscono che, come criterio di demarcazione, non si deve prendere la verificabilità, ma la falsificabilità di un sistema. In altre parole: da un sistema scientifico non esigerò che sia capace di essere scelto, in senso positivo, una volta per tutte; ma esigerò che la sua forma logica sia tale che possa essere messo in evidenza, per mezzo di controlli empirici, in senso negativo: un sistema empirico deve poter essere confutato dall'esperienza"9. Il requisito della controllabilità empirica per una teoria scientifica è quindi soddisfatto se la teoria è falsificabile, cioè se è costruita in modo tale da permettere l'estrazione dal corpo teorico di asserti fattuali che possono essere sottoposti a falsificazione.

Secondo Popper non vi sono quindi mai teorie verificate, ma semplicemente teorie falsificabili, e solo queste ultime sono scientifiche: "ciò che caratterizza il metodo empirico è la maniera in cui esso espone alla falsificazione in ogni modo concepibile il sistema che deve essere controllato. Il suo scopo non è di salvare la vita a sistemi insostenibili, ma, al contrario, di selezionare quello che si rivela più adatto, dopo averli esposti tutti alla più feroce lotta per la sopravvivenza"10.

Sviluppo della scienza11 e sviluppo del free software - Ci sono analogie tra il modello popperiano e il modello del free software? Sia Di Cosmo che Colazzo nel corso del Convegno hanno mostrato come il maggior merito del modello di sviluppo del free software è quello di aver creato un metodo di lavoro per la produzione del software che rende più facile l'individuazione e la correzione degli errori (il debugging). Quindi qualche punto di contatto con la descrizione del metodo scientifico offerta da Popper può essere individuato. Nel modello di Popper ci sono punti chiave. Il primo è il tentativo di risposta alla domanda "come posso sapere se una teoria è scientifica?". La risposta di Popper è semplice: va verificato se dalla teoria in questione si possono estrarre asserti che possono essere falsificati, solo in questo caso si tratterà di una teoria scientifica. Il secondo punto deriva dal primo, ed è un tentativo di spiegazione della natura del progresso scientifico. Lo sviluppo della scienza nasce dalla falsificazione delle teorie scientifiche, man a mano che queste vengono falsificate se ne costruiscono di migliori.

Nel modello di sviluppo del free software non è difficile individuare uno schema analogo: la scoperta degli errori è resa possibile dalla disponibilità del codice sorgente, e dalla scoperta degli errori nascono i miglioramenti degli algoritmi, proprio come per Popper dalla falsificazione delle teorie nasce il progresso della scienza.

Il metodo di lavoro alla base del software non-free è invece basato sulla segretezza del codice sorgente (per lo stesso motivo per cui la "ricetta" della Coca Cola rimane segreta). Gli algoritmi del codice sorgente sono considerati una proprietà del produttore del software e non vengono svelati per evitare imitazioni da parte dei concorrenti. Per questa ragione la scoperta degli errori avviene esclusivamente all'interno dell'azienda produttrice, con modalità che al crescere delle dimensioni della struttura aziendale diventano sempre più burocratizzate e conseguentemente difficoltose. Al contrario il free software nasce in un ambiente totalmente diverso, che non a caso viene definito "comunità degli sviluppatori" con un chiaro riferimento alla comunità scientifica. Si tratta di persone che collaborano liberamente senza essere inquadrate in una organizzazione produttiva. Il vantaggio che "gli sviluppatori" traggono dalle loro scoperte è solo indirettamente economico. Ciò che conta è l'attribuzione del merito delle loro "scoperte" e, paradossalmente, ciò è possibile solo con una strategia che è l'esatto opposto del metodo del segreto industriale: nessuno può essere considerato lo scopritore di qualcosa se non lo rende pubblico, ed è proprio rendendo al più presto pubblico questo qualcosa che si assicura di non essere preceduto da altri.

Critiche al modello popperiano - Ma l'idea dello sviluppo della scienza come evoluzione lineare e costante è stata messa in discussione. Popper stesso si è spinto fino al punto di sostenere che un metodo scientifico che garantisca uno sviluppo della scienza non esiste12. "Il mio modo di vedere la cosa - per quello che vale - è che non esista nessun metodo logico per avere nuove idee, e nessuna ricostruzione logica di questo processo. Il mio punto di vista si può esprimere dicendo che ogni scoperta contiene un 'elemento irrazionale' o ' una intuizione creativa' nel senso di Bergson. In modo analogo, Einstein parla della "ricerca di quelle leggi altamente universali … dalle quali possiamo ottenere un'immagine del mondo grazie alla pura deduzione". Non esiste alcuna via logica, egli dice, "che conduca a queste … leggi. Esse possono essere raggiunte soltanto tramite l'intuizione, basata su un alcunché che possiamo chiamare immedesimazione cogli oggetti d'esperienza"13. W. Bartley, discepolo e assistente di Popper, estende il modello popperiano e fa presente che una teoria filosofica è razionale se è possibile sottoporla a critica e se può entrare in contrasto con una teoria scientifica ben consolidata14. Il problema (della demarcazione) non risiede nella demarcazione fra ciò che è razionale e ciò che non lo è, ma in quella fra ciò che è razionale e ciò che è irrazionale, fra ciò che è critico e ciò che non è critico. Scrive che "il fondamentale problema della crescita della razionalità - e della teoria della razionalità - è perciò dal mio punto di vista, un problema ecologico. In un metacontesto fallibilista il problema ecologico consiste nel creare l'ambiente più letale per le nostre posizioni, i nostri contesti e metacontesti"15.

Lo sviluppo della scienza secondo Kuhn - Per Thomas S. Kuhn invece non si dà una comunità scientifica senza un paradigma, "termine che ha una precisa relazione col termine "scienza normale". Con la scelta di questo termine ho voluto far presente il fatto che alcuni esempi di effettiva prassi scientifica riconosciuti come validi - esempi che comprendono globalmente leggi, teorie, applicazioni e strumenti - forniscono modelli che danno origine a particolari tradizioni di ricerca scientifica con una loro coerenza"16. Un paradigma è una conquista scientifica che per un certo periodo costituisce la base della ulteriore ricerca. "Paradigmi successivi ci dicono cose differenti sugli oggetti che popolano l'universo e sul comportamento di tali oggetti": il passaggio da un paradigma ad un altro è appunto la rivoluzione scientifica, una specie di "conversione", "un passaggio tra incommensurabili", vale a dire fra teorie ("modi di vedere il mondo") che parlano delle stesse cose in modo del tutto differente.

Ciò costituisce un progresso di tipo ateleologico: la scienza si sviluppa a partire da certi stadi, ma non è che tenda verso qualche scopo (la verità, la verisimiglianza o altro). Dunque, per lo storico della fisica americano, non è vero che la scienza si sviluppi in modo progressivo: le teorie sono surclassate da teorie parallele. La scienza progredisce perchè le teorie vengono falsificate e sostituite (migliorate?) da teorie nuove.

Anche in Kuhn, il passaggio da un paradigma ad un altro implica progresso della scienza? Il problema non trova facile soluzione, perchè "è soltanto durante i periodi di scienza "normale" che il progresso sembra evidente e sicuro". Invece "durante i periodi di rivoluzione, quando le dottrine fondamentali di un campo sono ancora una volta in discussione, vengono ripetutamente avanzati dubbi sulla possibilità di una continuazione del progresso, qualora venga adottato questo o quello dei paradigmi che si fronteggiano". Di modo che nell'evoluzione della scienza, così come in quella biologica, ci si trova innanzi ad un processo che si sviluppa in maniera costante a partire da stadi primitivi, ma che non tende verso nessun scopo17.

La competizione di programmi di ricerca secondo Lakatos - Diversamente che in Kuhn, per il quale la comunità scientifica è di periodo in periodo egemonizzata da un unico paradigma, la scienza secondo I. Lakatos è, è stata e dovrebbe essere una competizione fra programmi di ricerca rivali, in competizione. Un programma di ricerca va mantenuto finché è progressivo, ed è tale se almeno parte delle sue previsioni teoriche ricevono conferma, se cioè esso riesce a predire qualche fatto nuovo. Per il pensatore di origine ungherese "in un programma di ricerca progressivo, la teoria conduce alla scoperta di fatti nuovi finora sconosciuti. Nei programmi di ricerca regressivi, invece, le teorie vengono inventate solo al fine di accogliere i fatti noti... Ebbene, come avvengono le rivoluzioni scientifiche? Se abbiamo due programmi di ricerca rivali dei quali uno è progressivo mentre l'altro è regressivo, gli scienziati tendono ad aderire al programma progressivo. E' questa la base razionale delle rivoluzioni scientifiche. Ma mentre è una questione di onestà intellettuale rendere sempre pubblico il quadro della situazione, non è affatto disonesto aderire a un programma regressivo e cercare di trasformarlo in un programma progressivo"18.

Feyerabend e l’anarchismo metodologico - Invece Paul K. Feyerabend nel testo classico dell'anarchismo epistemologico scrive che progressi significativi nella scienza si sono avuti solo perchè "alcuni pensatori o decisero di non lasciarsi vincolare da certe norme metodologiche "ovvie" o perché involontariamente le violarono... Ci sono addirittura circostanze - le quali si verificano anzi piuttosto spesso - in cui il ragionamento perde il suo aspetto orientato verso il futuro diventando addirittura un impaccio di progresso"19. Il filosofo formatosi alla luce dei molteplici incontri con i fisici contemporanei contesta l'esistenza di un metodo che contenga "princìpi fermi, immutabili e assolutamente vincolanti come guida nell'attività scientifica": se si confrontano i risultati della ricerca storica si trova che non esiste una singola norma che, per quanto sia plausibile e radicata nell'epistemologia, in qualche circostanza non sia stata violata. Anzi, tali violazioni sono necessarie per il progresso scientifico e "ci sono sempre circostanze nelle quali è opportuno non solo ignorare la norma, ma adottare il suo opposto". Una tale libertà d'azione non è solo un fatto della storia della scienza; essa è sia ragionevole, sia assolutamente necessaria per la crescita del sapere. In ambito scientifico ciò che prevale sulla verità20 è quindi la pluralità, la variabilità dei metodi e il loro conflitto. Parlare di scienza al singolare significa parlare di una chimera: dedichiamo perciò tutti i nostri sforzi alle "scienze" e non alla scienza21, esorta Feyerabend. Anche nel contesto della questione della "giustificazione" della teoria attraverso gli esperimenti sottolinea la necessità di un approccio pluralista e riconosce perciò utile (ma non l'unico valido) il presupposto falsificazionista popperiano. Non ci sono perciò regole generali per la giustificazione di una teoria scientifica: ciò che è valido, utile ed esplicativo in un contesto può essere inutile ed inadeguato in un altro.

La comunità del free software alla luce delle epistemologie post-popperiane - Le teorie epistemologiche post popperiane22 offrono una interessante interpretazione del fenomeno del free software nel suo complesso. I filosofi della scienza che hanno criticato Popper si concentrano sulle condizioni che rendono possibile lo sviluppo della scienza evidenziando il rischio che la ricerca di un metodo scientifico troppo vincolante sia una chiave di lettura limitatava e fuorviante. Sul versante del free software tutti coloro che descrivono la "comunità degli sviluppatori free software" tendono a metterne in luce alcuni aspetti che con le parole di Paul K. Feyerabend si potrebbero definire come anarchici. Si tratta in sostanza di un ambiente segnato da un caos creativo, dove ogni giorno nascono progetti nuovi e altri in corso di sviluppo vengono abbandonati per mancanza di interesse da parte degli sviluppatori. Alcuni di questi progetti però, sfociano in risultati di grande interesse, che si concretizzano in prodotti software capaci di guadagnare importanti quote di mercato. Si veda a questo proposito la relazione di Maurizio Napolitano nel Convegno che ha accenna a questo tema con ampi riferimenti a La cattedrale e il bazar, un documento che rappresenta un vero classico nell'ambito della comunità del free software. In questo testo si mostra come l'aspetto più innovativo del modello di sviluppo del free software sia rappresentato dalla sua apparente mancanza di ordine, simboleggiata dalla metafora del bazar, contrapposto alla cattedrale che rappresenta il modello di sviluppo del software non free.

In conclusione, fatte le debite precisazioni, alcune teorie filosofiche del 900 offrono una stimolante chiave di lettura anche al di fuori dell’ambito loro proprio, e un fenomeno nuovo come quello del free software può essere meglio compreso utilizzando categorie prese a prestito dalla filosofia e dall’epistemologia.

 

NOTE

1 P. Magri, La comunicazione informatica nella scuola, (Unità Didattica III), Tecomproject, Editore Multimediale, Ferrara 1998, dal lessico p. XII

2P. Magri, La comunicazione multimediale nella scuola, (Unità Didattica IV), Tecomproject, Editore Multimediale, Ferrara 1998, dal lessico p. XIII

3L. Zou, L'informatica, Tascabili Economici Newton, Roma 1995

4C. Gori Giorgi / D. Valenti, Elementi di informatica, con applicazioni alla matematica e alla fisica, La Nuova Italia Editrice, Scandicci (Firenze) 1992

5 P. Y. Gloess, Capire l'intelligenza artificiale, Muzzio editore, Padova 1985

6Per un corretto approccio alla rete cfr. R. Guidi / F. Zanichelli, L'abc di Internet, Tascabili Economici Newton, Roma 1997

7P. Ciaravolo (a cura di), Informatica e metodologia filosofica, Centro per la filosofia italiana, Roma 1990

8P. Rossi, Storia della scienza, UTET

9K. Popper, Logica della scoperta scientifica. Il carattere autocorrettivo delle scienze, Einaudi Paperbacks, Torino 1970

10Ibidem

11 P. A. Rossi (a cura di), Cibernetica e teoria dell'informazione, Editrice La Scuola, Brescia 1978

12Sull'idea della scientificità come falsificabilità nel pensiero di Popper cfr.G. Vattimo, Tecnica ed esistena. Una ma ppa filosofica del Novecento, Paravia, Torino 1997

13K. Popper, Logica della scoperta scientifica, cit.

14L. Montecucco, Contesti filosofici della scienza, Editrice La Scuola, Brescia 1997

15W. Bartley, Ecologia della razionalità, trad. di A. Rainone, Armando

16Th. S. Kuhn, La struttura delle rivoluzioni scientifiche. Come mutano le idee della scienza, trad. di A. Carugo, Einaudi Torino 1969 (IV ed. 1978)

17Per un'analisi del modello di crescita nella scienza di Thomas Kuhn cfr. L. Geymonat, Scienza e filosofia nella cultura del Novecento, Pagus Edizioni, Paese (Treviso) 1993

18I. Lakatos, La metodologia dei programmi di ricerca scientifica, trad. di M. D'Agostino, Il Saggiatore, Milano 1985

19P. K. Feyerabend, Contro il metodo, trad. di L. Sosio, Feltrinelli

20B. Russell, Filosofia e scienza, Newton Compton Editori, Roma 1972

21A. Buzzati, R. Traverso, La sfida delle scienze, Ed. Scient. e Tecniche Mondadori, UNESCO

22A. Cotogni, Filosofia e scienza nel pensiero contemporaneo, G. D'Anna, Messina-Firenze 1979