La programmazione in Python è più veloce rispetto a C, C ++ o Java? [chiuso]

27

C'è una credenza diffusa tra le che le più dinamiche e vagamente tipizzate la lingua, più produttivo sarà il programmatore. Guido van Rossum ha scritto sulla programmazione della produttività usando python nel 1998 e cercando in tutto il web Vedo ancora persone che fanno riferimento a questa affermazione esatta:

Syntactically, Python code looks like executable pseudo code. Program development using Python is 5-10 times faster than using C/C++, and 3-5 times faster than using Java. In many cases, a prototype of an application can be written in Python without writing any C/C++/Java code. Often, the prototype is sufficiently functional and performs well enough to be delivered as the final product, saving considerable development time. Other times, the prototype can be translated in part or in whole to C++ or Java -- Python's object-oriented nature makes the translation a straightforward process.

Questo problema è stato valutato scientificamente? Se non fosse per allora forse per linguaggi di scripting fratello come , o ?

Non sto cercando razionalizzazioni, analogie o spiegazioni sul perché potrebbe essere difficile rispondere, a meno che non sia l'opinione di ricercatori o esperti che ha avuto il tempo di esaminare il problema.

Inizialmente ho posto questa domanda all'indirizzo skeptics.SE , e qualcuno mi ha suggerito di chiedere anch'io .

    
posta Kit Sunde 17.04.2011 - 10:42
fonte

5 risposte

15

L'articolo di Ousterhout 1 sui linguaggi di scripting suggerisce che più alto è il livello di programmazione, più produttivo è il programmatore. Se prendiamo ciò, come dice Boehm 2 , il numero di righe che un programmatore può scrivere in un dato tempo è costante e non dipende dalla lingua o dal suo tipo (basso livello, programmazione di sistema, scripting), si può facilmente credere al reclamo. Le istruzioni risultanti per riga del codice sorgente possono essere un ordine di grandezza (o diversi) migliori con i linguaggi di scripting rispetto ai linguaggi di programmazione del sistema.

Poiché i linguaggi di scripting fanno affidamento su utility già pronte per compiti comuni (es. strutture dati, manipolazione di stringhe), il loro uso principale è solitamente quello di migliorare la produttività con il costo di una minore velocità di esecuzione fornendo una sintassi facile da imparare ed efficiente per mantenere i programmi con. Uno non fa ricorso a un linguaggio di scripting quando è necessaria la massima velocità di esecuzione.

[1]: J. K. Ousterhout, Script: Programmazione di livello superiore per il 21 ° secolo , Computer (IEEE), 1998
[2]: B. Boehm, Economia dell'ingegneria del software , Prentice Hall, 1981

    
risposta data 17.04.2011 - 14:26
fonte
7

Se si misura la produttività come "tempo per scrivere un programma semplice specifico" allora dipende molto più dall'esperienza del programmatore e dalla mente veloce del linguaggio che si sta valutando realmente il programmatore, non dalla lingua .

Credo che i concorsi a codice temporizzato indichino che la lingua non è veramente importante per questo tipo di attività. Non esiste una lingua che vince tali sfide più facilmente di altre (almeno non se si consente la relativa popolarità delle lingue).

Se misuri le prestazioni come "l'efficacia del miglior programma" scritto in una determinata lingua, è ancora meno dipendente dalla lingua. Vedi ad esempio i risultati del concorso Galcon AI . Il vincitore è scritto in Lisp. La prossima voce Lisp, tuttavia, è classificata al # 280. Cosa ci dice questo sull'idoneità della lingua per scrivere in modo efficiente l'intelligenza artificiale grande? A mio parere, niente. Ci dice solo che "bocsimacko" ha escogitato e implementato gli algoritmi più efficaci. Per la cronaca, il tempo non è stato un fattore importante in questo concorso - le persone avevano più di due mesi per sviluppare il loro codice.

Infine, se si misura il rendimento come "costo a lungo termine del mantenimento di un progetto" , allora penso che tu abbia qualcosa. Soprattutto se assumi solo le persone migliori per il lavoro, e conta il costo in ore uomo anziché in dollari. Ho una strong opinione su quali sono le lingue migliori per questo, ma non avendo prove concrete per collegarti a questo lascerò questa opinione. Forse qualcun altro ha link per questo tipo di performance.

    
risposta data 17.04.2011 - 15:19
fonte
6

Il link è uno dei pochi studi di cui sono a conoscenza che abbia fatto un confronto diretto effettivo tra produttività in varie lingue. È vecchio, ma vale la pena leggerlo se trovi l'argomento interessante. Il confronto ha una serie di gravi carenze che l'articolo è molto onesto.

Il risultato complessivo è che i linguaggi di basso livello (ad esempio C, C ++) richiedono più tempo per scrivere, possono impiegare molta meno memoria e possono essere eseguiti molto più velocemente. Ma con altissima variabilità. Linguaggi di scripting di alto livello tendono a impiegare la metà del tempo per scrivere e hanno meno variabilità nell'approccio. Ad un livello inizialmente sorprendente, tende ad essere un modo ovvio per fare qualcosa in un linguaggio di scripting.

Si noti che tutti i numeri di prestazioni per Java dovrebbero essere presi con un granello di sale: la carta è stata prodotta negli anni '90 prima che le persone avessero molta esperienza con Java e prima che la JVM fosse ben ottimizzata. Entrambi i fattori dovrebbero avere un impatto significativo.

    
risposta data 17.04.2011 - 17:30
fonte
1

Per dirla in generale, scrivere un programma in Python sarà più veloce di scrivere lo stesso programma in C, C ++, Java.

È anche probabile che funzioni più lentamente.

Esistono, naturalmente, applicazioni particolari per le quali altre lingue potrebbero essere più veloci perché alcuni dei compiti coinvolti sono "più nativamente" supportati.

Anche se non sono a conoscenza di studi per confermare questo aumento di velocità / produttività (come citato da un commentatore, questo può essere difficile da misurare con precisione), c'è stata una ricerca diretta sull'espressività del linguaggio.

Penso che ci sia qualche merito a una correlazione tra espressività della lingua e velocità di programmazione. Immagina semplicemente un semplice schema di iterazione e come un Pythonic for-loop o list comprehension può essere più sintetico. Non solo può essere digitato immediatamente più velocemente, ma elimina anche i problemi relativi a errori off-by-one, indici fuori limite e altri problemi simili che possono rallentare in modo significativo il processo di codifica.

Questo mostra una tabella una stima per i rapporti di espressività delle lingue. Mentre dovrebbe essere preso con un granello di sale, le note che cita sono molto utili.

link

    
risposta data 17.04.2011 - 16:28
fonte
-5

L'ultima volta che ho usato Java (un po 'di tempo fa, ammettiamolo) ci è voluto uno schermo pieno di codice per aprire e scrivere su un file. Confronta questo con un paio di linee in Python o Perl, e puoi indovinare quale è più veloce.

Ovviamente le lingue hanno tutti i loro punti di forza e di debolezza, ma per la maggior parte delle attività Python sarà più veloce da scrivere.

    
risposta data 31.12.2012 - 14:48
fonte