TuttoScienzeTecnologia La Stampa 14/06/2006, pag.1 Angelo Raffaele Meo, 14 giugno 2006
Software resterà sempre bambino. TuttoScienzeTecnologia La Stampa 14 giugno 2006. Nei 50 anni di storia dell’informatica commerciale che abbiamo alle spalle il progresso della tecnologia dell’hardware è stato continuo e rapidissimo
Software resterà sempre bambino. TuttoScienzeTecnologia La Stampa 14 giugno 2006. Nei 50 anni di storia dell’informatica commerciale che abbiamo alle spalle il progresso della tecnologia dell’hardware è stato continuo e rapidissimo. Il numero di transistori per microcircuito è cresciuto da un’unità a un miliardo di unità. La velocità di lavoro dello stesso transistore è cresciuta da poche migliaia di cicli al secondo ad alcune centinaia di milioni. Il tutto a prezzi costanti o decrescenti. Invece nello stesso periodo il progresso delle tecnologie del software è stato modestissimo. Il dato più significativo è la produttività dei programmatori, che è rimasta costante in tutta la storia dell’informatica, inchiodata al valore limite di 10 istruzioni al giorno. Per dire tutta la verità, le 10 istruzioni al giorno, che oggi un programmatore riesce a produrre in una giornata lavorativa, corrispondono a un contenuto di «cose» fatte dal calcolatore più alto delle 10 istruzioni dei primi Anni ’50, quando si programmava in linguaggi di basso livello. Tuttavia i progressi della capacità espressiva dei linguaggi stessi sono stati molto inferiori ai progressi dell’hardware. La ragione scientifica più remota, ma probabilmente più significativa, di questa complessità del software è espressa dai teoremi di Gödel e Turing, secondo cui non può esistere un programma in grado di analizzare un secondo programma e verificare se questo, con certi dati di ingresso, si fermi dopo un periodo di tempo finito oppure continui indefinitamente la propria attività di elaborazione. Neanche i «bachi» più banali, come familiarmente gli informatici chiamano gli errori di programmazione, quelli che determinano l’ingresso del programma in cicli chiusi di calcolo, possono essere scoperti automaticamente. A maggior ragione non si possono scoprire altri tipi di errore e, meno che mai, si può sperare di identificare automaticamente gli errori semantici, ossia verificare se un programma faccia proprio ciò che si sperava facesse. La conseguenza più importante di questo teorema è che la produzione del software non è automatizzabile e che la stessa definizione di «industria del software» nasconde un errore concettuale o, quanto meno, non corrisponde all’idea ormai consolidata di produzione industriale. Un aspetto importante della natura non industriale della produzione del software è la diseconomia di scala del prodotto. Il costo di un programma da 10 mila istruzioni è più del doppio del costo di un programma da 5 mila istruzioni. Infatti, al crescere delle dimensioni di un programma, cresce il numero dei sottoprogrammi da collegare, cresce clamorosamente il numero delle interconnessioni di questi moduli, cresce il numero delle cose che devo tenere a mente correttamente, cresce il caos nella testa del programmatore e ancor più nel team di progetto che sta sviluppando il prodotto. Sfortunatamente, nel comparto del software e dei prodotti «soffici» in genere, a una natura non industriale dei processi produttivi corrispondono peculiarità dei processi distributivi fin troppo «industriali». Infatti, poiché il floppy disk o il CD-Rom, che ospitano un programma, hanno un valore intrinseco praticamente nullo, il costo sul mercato dello stesso programma è una funzione rapidamente decrescente del numero delle copie vendute: se lo sviluppo è costato un miliardo, il costo dell’unità di prodotto è pari a un miliardo, se vendo una copia sola, ma scende a un milione se riesco a vendere mille copie. L’associazione perversa della diseconomia del costo di sviluppo nella scala della dimensione del prodotto e dell’accentuata economia di scala rispetto alla dimensione del mercato produce, poi, la peculiarità più importante del mercato del software. Per raddoppiare un programma che abbia già riscosso un certo successo si deve investire quattro volte più di quanto si era investito nella prima versione, ma per continuare a venderlo allo stesso prezzo si deve poter contare su un mercato quattro volte più grande. Ricordo solo due delle conseguenze di questo meccanismo perverso. La prima è la legge degli investimenti crescenti. Per restare sul mercato del software e dell’informatica in generale si deve investire sempre di più, molto di più. La seconda è la «sindrome di Luciano»: se Pavarotti guadagna un milione a sera, il tenore numero 2 in Italia porterà a casa la decima parte di Pavarotti e il tenore numero 20 canterà gratis nel teatrino della parrocchia. Bill Gates è diventato l’uomo più ricco della Terra in 20 anni, mentre migliaia di «software house» nel mondo, e in particolare in Italia, rinunciavano a produrre software. Gli Usa hanno portato a casa miliardi di dollari con la vendita di software caratterizzati da un tasso di valore aggiunto pari al 100%, mentre Paesi come il nostro, che pure rivendicano un posto tra i Paesi più industrializzati, non riescono a esportare praticamente nulla in questo settore. Politecnico di Torino Angelo Raffaele Meo