Una misura della velocità di sviluppo


10

Ho visto molti test per misurare la velocità di esecuzione dei linguaggi di programmazione, ma non ho mai trovato test per misurare la velocità di sviluppo.

Ho sentito che la velocità di sviluppo aumenta quando si lavora con linguaggi dinamici, ma ne esistono prove? Non sto cercando di dire che i linguaggi dinamici non siano efficienti, ma mi piacerebbe vedere i risultati di uno studio scientifico, se esiste una cosa del genere.

Ancora meglio sarebbero le informazioni sulla struttura di manutenzione. Alcune lingue sono più facili da eseguire il debug di altre?

EDIT: Sono principalmente interessato alle differenze tra due lingue che sono vicine nella sintassi. Ad esempio, immagino che la programmazione in C sarà di solito più lenta della programmazione in Java; ma la programmazione in Java è più veloce della programmazione in C #?


Vedi programmers.stackexchange.com/questions/10032 (ma nota che non pretendo che si tratti di un duplicato).
Frank Shearar,

Questo è davvero interessante, grazie! Alcuni dei collegamenti sono in realtà esattamente quello che stavo cercando.
DistantEcho,

Dai un'occhiata a questa discussione: stackoverflow.com/questions/1894453/…
ChristopheD

Risposte:


6

Assolutamente il linguaggio di programmazione fa la differenza. Tuttavia, penso che la differenza sia molto più importante di quanto il programmatore abbia familiarità con ciascuna lingua rispetto a qualsiasi aspetto particolare della lingua, soprattutto dato il tuo vincolo di lingue con sintassi simile.


2

Per me questo è un po 'analogo a quale tipo di pennello ti consente di dipingere più velocemente.

Se consideri ciò che dipingi una merce, allora più grande è il pennello, più velocemente dipingerai.

Se vedi un buon codice come una forma d'arte, allora ha meno dimensioni del pennello e più cosa fai esattamente con i tuoi pennelli.

Siamo spiacenti, si tratta di una non risposta alla domanda reale.


In realtà, sono più interessato alla differenza tra due grandi pennelli. Ad esempio, come facciamo a sapere se Python avrà una velocità di sviluppo migliore di Lua o viceversa?
DistantEcho,

1
@Niphra, non lo sai. Ci sono troppi imponderabili in un simile confronto per avere una metrica valida per questo.
Adam Crossland,

buona risposta, ma solo se si ignora l'abilità del pittore
Steven A. Lowe,

1

Non sono sicuro che questo sia pertinente, ma è interessante

In The Mythical Man Month, Fred Brooks menziona studi sul confronto tra lingue assembleari e di livello superiore. Hanno scoperto che i programmatori producevano la stessa quantità di istruzioni all'anno in entrambi, ma le istruzioni per un linguaggio di alto livello erano uguali a più istruzioni di linguaggio assembly. Quindi, passando al linguaggio di alto livello, i programmatori hanno ottenuto un aumento qualunque sia il multiplo medio delle istruzioni di assemblaggio in istruzioni di lingua in termini di produttività.

Lo stesso dovrebbe valere per C vs Java / C #, non conosco la vera differenza tra C # e Java. Ma ogni volta che aumenti il ​​livello di astrazione, aumenterai la produttività. Tuttavia, penso anche che ridurrà il controllo su ciò che la macchina sta effettivamente facendo. Devi fidarti che la lingua sta facendo quello che vuoi. Ad esempio nei software ad alte prestazioni, la garbage collection è inaccettabile, tranne se si ha il controllo completo su quando viene eseguito e per quanto tempo dura.


Sarebbe interessante se oggi ci fossero studi che lo farebbero di nuovo confrontando linguaggi di alto livello come node.js e python.
SomeGuyOnAComputer

1

Cos'è la produttività? Che cos'è anche il prodotto ? Nessuno lo sa, matematicamente parlando.

KLOC?

Complessità ciclomatica?

Punti funzione?

Credo che dovresti esaminare il livello aziendale ed eseguire confronti percentili con altri programmatori che svolgono un lavoro simile, quindi misurare le funzionalità fornite per programmatore. Questi sono punti molto sofisticati e sottili per essere in grado di misurare statisticamente e conservare il significato.


0

Immagina come questo sarebbe testato: devi avere qualche progetto del mondo reale sviluppato indipendentemente sia ripetutamente con la stessa lingua (per eliminare la variabilità dell'esperienza e della conoscenza del programmatore) sia con lingue diverse (per ottenere alcuni dati per confrontare le lingue). Mi sembra che l'esperimento cresca rapidamente a dimensioni ingestibili.

Mi piacerebbe conoscere i modi per "ridurre" l'esperimento o i tentativi di eseguire effettivamente l'esperimento come indicato.


L'esperienza è davvero un problema, quindi vorrei lavorare con un principiante, o ancora meglio, qualcuno che conosca un linguaggio di programmazione completamente diverso. Per quanto riguarda le dimensioni del progetto, immagino che un progetto molto piccolo sarebbe sufficiente per ottenere risultati, anche se non sono perfetti.
DistantEcho,

A volte però, la storia continua, la "vittoria" di un linguaggio avviene solo dopo una certa dimensione / complessità. Per problemi più piccoli / semplici di così, l'incredulità di quel linguaggio non è evidente. Quindi si dice.
Frank Shearar,

Mi aspetterei che una certa "vittoria" abbia superato solo una certa complessità e il livello di esperienza del programmatore. Misurare con solo i principianti per lo più manca il punto. Usare veramente una lingua richiede un'esperienza specifica della lingua.
Kasterma,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.