jump to navigation

La legge di Wirth Maggio 26, 2008

Posted by Stefano Pedone in Articolo.
Tags:
trackback

Chiunque abbia seguito un corso di Calcolatori Elettronici, o che si sia anche solo interessato all’argomento, avrà certamente familiare la Legge di Moore, la quale afferma che il numero di transistor a parità di costo in un circuito integrato cresce esponenzialmente, raddoppiando approssimativamente ogni due anni.

Legge a parte, basta aver avuto un minimo di esperienza nel mondo dei computer per poter accettare questa legge come veritiera e abbastanza conforme con la realtà.

Questo assunto è diventato però col tempo l’onda da cavalcare per gli sviluppatori che, dietro questa prospettata continua capacità di crescita dell’hardware, hanno visto la soluzione di tutti i problemi di performance.

Leggendo qua e là tra i diversi blog un po’ sull’argomento scalabilità, mi sono imbattuto in un’altra tesi forse meno conosciuta, non di certo dimostrabile, ma allo stesso tempo non confutabile.

Si tratta di quella che viene conosciuta come la Legge di Wirth.

Nicklaus Wirth è uno scienziato svizzero famoso tra l’altro per aver lavorato alla progettazione di diversi linguaggi di programmazione, tra i quali Pascal.

L’articolo di riferimento è A Plea for Lean Software” . In esso lui cita due affermazioni, la prima conosciuta come la Legge di Parkinson e la seconda che lui attribuisce a tale Reiser, ma che nel tempo è stata di fatto riconosciuta a lui stesso:

“Software expands to fill the available memory” (Parkinson)

ma soprattutto

“Software is getting slower more rapidly than hardware becomes faster.”

La sentenza di Parkinson è mutuata da quella originale (“work expands so as to fill the time available for its completion.”) e ancor prima probabilmente dal concetto filosofico di Spinoza del “La natura ha orrore del vuoto”, ed è abbastanza realistica nella quotidiana esperienza (ndr. la applicherei anche allo spazio nel frigorifero :-D ).

La Legge di Wirth, invece, non è forse così immediata, ma dopo un minimo di riflessione si può giungere alla conclusione che forse non ha tutti i torti.

Nell’articolo Wirth prova a delineare le cause di quello che lui chiama il “fat software”. Le affermazioni sono interessanti sebbene vadano contestualizzate al periodo di riferimento (1995), ma è divertente vedere come dopo 13 anni certi tipi di dinamiche siano rimaste sostanzialmente le stesse e che forse la sua legge non ha poi tutti i torti.

Consiglio quindi una lettura al testo di riferimento e intanto ne cito alcune delle più significative affermazioni.

“When a system’s power is measured by the number of its features, quantity becomes more important than quality. Every new release must offer additional features, even if some don’t add functionality.”

“Another important reason for software complexity lies in monolithic design, wherein all conceivable features are part of the system’s design. Each customer pays for all features but actually uses very few.”

“complexity promotes customer dependence on the vendor. [...] Major software houses have heavily invested in customer service, employing hundred of consultant to answer customer calls around the clock. [...] Of course, a customer who pays – in advance – for service contracts is more stable income source than a customer who has fully mastered a product’s use.”

“The fact that vendor whose product is first in the market is generally more successful that the competitor who arrives second, although with a better design, is another detrimental contribution to the computer industry. The tendency to adopt the “first” as the facto standard is a deplorable phenomenon, based on the same time pressure.”

Commenti»

No comments yet — be the first.