Restituire diversità all'informatica

D.

Ha iniziato una cosa chiamata Progetto Feyerabend (pronunciato FAIR-ah-bend), che prende il nome dal filosofo anticonformista Paul Feyerabend, il quale sosteneva che affinchè la conoscenza faccia progressi, le persone devono violare alcuni dei propri principi metodologici. Lei scrive: "L'informatica è basata sull'utilità, la performance, l'efficenza e la bravura. Dove sono bellezza, compassione, umanità, moralità, lo spirito umano e la creatività?" Quindi cosa spera di ottenere con il progetto Feyerabend?

R.

Per me si torna sempre alla creatività. La creatività prospera nella diversità. Quindi, osservando la creatività in generale, notiamo che molti poeti, pittori, sceneggiatori, ecc. alimentano reciprocamente la propria creatività, ma selettivamente. è come in biologia: con tanta diversità quello che meglio funziona in un particolare ambiente viene selezionato per la sopravvivenza.

All'inizio degli anni '90, gran parte della diversità nei linguaggi di programmazione, nelle metodologie, i diversi paradigmi informatici, ecc. è scomparso. Perché? Probabilmente perché i linguaggi orientati agli oggetti, le metodologie, i design e le architetture hanno avuto un gran successo commerciale.

Negli anni '90 internet ha cambiato drasticamente le dimensioni della questione. Alla metà degli anni '90, Smalltalk aveva fatto molta strada nel settore commerciale e la tecnologia Java (anche se a Sun nessuno la pensava così) ha seguito il cammino di Smalltalk fino a rimpiazzarlo. Voglio dire, Smalltalk era una tecnologia lato-server (anche se alle aziende Smalltalk questo non piace) e Sun pensava a Java come una tecnologia lato-cliente. Adesso il software Java riscuote grandi successi sul lato-server e i clienti sono gli stessi. Il linguaggio Java ha anche seguito le orme di C++, non l'ha esattamente rimpiazzato, ma si è preso una bella fetta del patrimonio mentale di C++.

Adesso, dopo aver programmato oggetti per circa dieci anni con buoni risultati, non guardiamo più i linguaggi funzionali, i linguaggi logic-based o i linguaggi dichiarativi; non guardiamo più a molte cose a cui prestavamo attenzione prima. Ho lavorato al progetto Jini network technology in passato. Il mondo odierno è fatto di molti apparati, molto del software viene e va, molti apparati vengono e se ne vanno e le persone aggiornano i software. A volte poi fanno un downgrade: quando le nuove applicazioni non funzionano bene.

Il caos sarà più accentuato, più differenziato. Inizierà a somigliare più a un sistema biologico che a uno matematico. Ci saranno meno pezzi monolitici di software. Molto delle "applicazioni" risiederà su una singola macchina, strettamente connessa a essa, ma ci saranno parti [delle stesse applicazioni] piuttosto indipendenti. Sarà molto dinamico, con molti errori. I sette errori di Deutsch domineranno. Ci dobbiamo preparare a questo.

Se si guarda alla narrativa della ricerca informatica, essa è ancora focalizzata all'orientamento a oggetti. Il linguaggio Java ha cercato di fondere il meglio del modello a oggetti puro e i linguaggi statici, quindi è un po' come Smalltalk e un po' come Pascal e anche un po' come Lisp. Penso che abbiamo bisogno di fare di più; dobbiamo lasciare fiorire idee per nuovi linguaggi, cercare interazioni più ricche, non solo più semplici. Abbiamo bisogno di più scrittori che lavorino per indirizzare la follia che stiamo per affrontare.

D.

I software orientati a oggetti non dovevano rimuovere carico di lavoro dalla programmazione?

R.

Sì, questa era la promessa, ma non è andata proprio così. A meno che non sia stato progettato per il ri-uso, difficilmente un software ti sarà utile [in altri progetti]. Ricerche mostrano che affinchè un software sia progettato per il ri-uso, normalmente deve essere dispiegato in tre diversi contesti.

L'ereditabilità ha reso le cose ancora più confuse. Con l'ereditabilità puoi scrivere una classe e i suoi metodi, utlizzando terminologia tradizionale; poi se fai una sub-classe, questa eredita i tuoi metodi e forse ne aggiungi anche altri diversi. Ma catene di eredità lunghe possono causare confusione per via della quantità di eredità che devi seguire e comprendere. Quindi alla fine non dà molti benefici. Basicamente, siccome fare le cose ri-usabili richiede molto lavoro, di solito non si fa. Ma il linguaggio Java ha riscosso molto successo e la gente ci scrive molte applicazioni.

Con il progetto Feyerabend aspiriamo all'efficenza nello sviluppo, pensiamo a computer che ci aiutino ad accrescere il codice piuttosto di avere persone a batterlo o ri-usando altro codice. Dobbiamo aprire le nostre menti a quello che sta realmente accadendo, non quello che speriamo succeda.

Seleziona un tema


Opzioni lingua

Questo sito è in italiano, altre lingue presto

Scegli un'immagine