C'è un capitolo in "Software: cosa funziona davvero e perché lo crediamo" Di Andy Oram e Greg Wilson sui difetti del software e su quali metriche possono essere utilizzate per prevederle.
Per riassumere (da quello che posso ricordare), hanno spiegato che hanno usato una base di codice C che era open source e aveva una cronologia di rilevamento dei difetti pubblicata. Hanno usato una serie di metriche ben note per vedere cosa era meglio per prevedere la presenza di difetti. La prima metrica con cui iniziarono era linee di codice (meno commenti), che mostravano una correlazione con i difetti (ad es. Come aumento di LOC, quindi i difetti). Hanno fatto lo stesso per una varietà di altre metriche (non ricordo cosa fosse fuori di testa) e alla fine ho concluso che le metriche più complesse non erano significativamente migliori nel predire i difetti rispetto al semplice conteggio delle LOC.
Sarebbe facile dedurre da ciò che la scelta di un linguaggio meno dettagliato (un linguaggio dinamico?) comporterà meno linee di codice e quindi meno difetti. Ma la ricerca in "Making Software" non ha discusso l'effetto della scelta della lingua sui difetti o sulla classe dei difetti. Ad esempio, forse un programma java può essere riscritto in clojure (o scala, o groovy, o ...) risultando in più di 10x di risparmio LOC. E potresti dedurre 10 volte meno difetti a causa di ciò.
Ma è possibile che il linguaggio conciso, mentre meno dettagliato, sia più incline agli errori del programmatore (rispetto al linguaggio più dettagliato)? Oppure, i difetti scritti nel linguaggio meno dettagliato sono 10 volte più difficili da trovare e risolvere? La ricerca in "Making Software" è stata un buon inizio, ma mi ha lasciato il volere di più. C'è qualcosa pubblicato su questo argomento?