Produttività Python VS Produttività Java

22

Over SO SO ho trovato una domanda su quale piattaforma, Java o Python è la migliore per lo sviluppo su Google AppEngine. Molte persone si vantano della maggiore produttività ottenuta dall'uso di Python su Java. Una cosa che vorrei dire sull'argomento della produttività Python vs Java, è che Java ha degli IDE eccellenti per accelerare lo sviluppo, dove Python manca davvero in questa area a causa della sua natura dinamica.

Quindi, anche se preferisco usare Python come linguaggio, non credo che dia abbastanza impulso alla produttività rispetto a Java, specialmente quando si usa un nuovo framework. Ovviamente se fosse Java vs Python e l'unico editor che potevi usare fosse VIM, allora Python ti darebbe un enorme incremento di produttività, ma quando gli IDE vengono portati nell'equazione non è così chiaro.

Penso che i meriti di Java siano spesso valutati esclusivamente a livello linguistico e spesso su ipotesi obsolete, ma Java ha molti vantaggi esterni alla lingua stessa, ad esempio la JVM (spesso criticata ma offre enormi potenzialità), IDE e strumenti eccellenti, enormi numero di librerie di terze parti, piattaforme ecc.

Domanda, Python / i linguaggi dinamici correlati offrono davvero gli enormi aumenti di produttività di cui si parla spesso? (tenendo in considerazione l'utilizzo di nuovi framework e il lavoro con applicazioni medio-grandi).

    
posta toc777 04.03.2011 - 14:08
fonte

7 risposte

17

Uno dei principali vantaggi di Python è la sua filosofia "batterie incluse": una libreria standard ampia e semplice da usare. In Java, la semplice lettura di un file di testo richiede più righe di codice, lettori annidati e così via. In Python è f.read() . Questo sarà sicuramente un enorme incremento di produttività, specialmente nella prototipazione rapida. Python anche il linguaggio è generalmente meno verboso, il che non è una cosa negativa (anche se penso che l'importanza della verbosità e della concisione sia spesso sottovalutata).

Tuttavia, se stai già lavorando su qualche framework, come GAE, allora mi aspetterei che le differenze siano molto più piccole, e principalmente fino alla fluidità personale della lingua. Per lo più dovrai solo collegare il framework con la sintassi di tua scelta, e la grande libreria standard di Python aiuta poco.

    
risposta data 04.03.2011 - 15:14
fonte
16

Ecco i miei 2 centesimi. Nella mia esperienza, Python è adatto a piccole e medie dimensioni progetti mentre per i progetti più grandi sono più produttivo con Java.

In generale, posso usare un linguaggio tipizzato dinamicamente come Python (o PHP) per progetti più piccoli: non è troppo complesso, vuoi farlo velocemente e non c'è molto che possa andare storto. In questo caso, trovo che Python può essere più pratico da usare.

Tuttavia, quando devo sviluppare un software più ampio, preferisco a linguaggio tipizzato staticamente come Java perché preferisco che il compilatore esegua quanti più controlli possibili per me. La mia esperienza è che nei progetti più grandi Devo passare più tempo a correggere bug con Python che con Java, quindi non lo faccio preoccuparsi se ci vuole un po 'di più per scrivere il codice in Java, perché così sarà risparmia tempo più tardi.

    
risposta data 26.12.2011 - 13:50
fonte
10

Sono molto più produttivo in linguaggi più potenti come Python o Ruby. Non importa se parte del codice Java può essere generata da un IDE. C'è più codice da leggere e mantenere. Ci vuole più tempo per guadare il codice ripetitivo e trovare le parti importanti e più tempo per cambiarlo. Va bene che Eclipse può convertire

private Date dateOfBirth;

a:

private Date dateOfBirth;
public Date getDateOfBirth() { return dateOfDeath; }
public setDateOfBirth(Date d) { dateOfBirth = d; }

ma ogni volta che apro la lezione vedrò quella spazzatura e devo sfiorarla per trovare le parti interessanti. Inoltre, durante la manutenzione, gli errori possono essere introdotti nel codice generato.

Preferirei molto vedere:

attr :date_of_birth

Per me, la necessità di un IDE per lavorare efficacemente con Java è una buona ragione per scegliere un'altra lingua.

Forse più potente, confronta questo codice Ruby:

avg = people.filter { |p| p.height > 200 }.collect(:weight).average

contro codice Java simile:

List<Double> weights = new ArrayList<Double>();
for (Person p: people) {
  if (p.getHeight() > 200) {
    weights.add(p.getWeight());
  }
}
return Stats.average(weights);

Il codice Ruby è una traduzione diretta della specifica: il peso medio delle persone più alto di 200 (cm). Un commento sarebbe completamente ridondante.

Il codice Java richiede un notevole lavoro sia per scrivere che per leggere.

Paul Graham è un argomento convincente per brevità nei linguaggi di programmazione in questo saggio . Avendo fatto un po 'di matematica a livello universitario, trovo il suo argomento avvincente e gli argomenti contro la brevità deboli. Certamente una singola riga in un linguaggio di alto livello può essere più difficile da capire di una singola riga in un linguaggio di basso livello, proprio come un'equazione differenziale parziale è più difficile da comprendere di una semplice aggiunta. Ma una singola riga in un linguaggio potente è più facile da comprendere rispetto alle cinque o dieci righe che sostituisce. Immagina di leggere un testo matematico che è stato scritto usando parole anziché simboli.

    
risposta data 04.03.2011 - 21:33
fonte
7

Sono passato da Java a Python alcuni anni fa e personalmente sento di essere più produttivo. Come sottolinea @Joonas, gran parte della produttività proviene dalla libreria pacchettizzata. Ma parte di esso viene dal linguaggio stesso. Non riesco a immaginare di non avere dizionari, liste di comprensione, funzioni di ordine superiore e amp; una shell.

Ricorda che se hai già conosciuto Java ci vorrà un po 'per diventare fluente in Python.

    
risposta data 04.03.2011 - 16:53
fonte
7

Questa è una vecchia domanda, ma vorrei aggiungere il mio $ .03. Penso che dipenda molto anche dal tuo modo di pensare. Io per primo non sopporto davvero le lingue dinamiche e interpretate. Sono, d'altra parte, un grande fan delle lingue tipizzate staticamente. Certo, l'utilizzo di Java può essere più prolisso ma trovo più facile leggere e mantenere una volta che tutto è stato detto e fatto. Trovo che Python, Ruby e Perl siano estremamente difficili da leggere (per me). Non riesco a capirlo, anche se ci ho provato. Detto questo, posso scrivere codice in Scala bene e non è un grosso problema. Penso che dipenda da cosa ti senti a tuo agio. Alla fine della giornata, Java sarà molto più potente; più di Ruby, Python o Perl. La JVM è un pezzo di tecnologia avvincente e imparare a sfruttarne il potere potrebbe rivelarsi molto vantaggioso per te.

    
risposta data 20.05.2011 - 15:29
fonte
5

Trovo che Python, Ruby, Javascript e SQL siano molto più produttivi dei linguaggi compilati come Java, perché queste lingue hanno un ciclo di feedback molto rapido. È possibile eseguire alcune righe di codice su una riga di comando e sapere immediatamente se il codice è corretto o meno. Se lancia eccezioni, lo sai immediatamente. Con Java è necessario compilare, impacchettare e implementare, il che può richiedere spesso minuti per sistemi di grandi dimensioni, e questo si traduce in un ciclo di feedback molto lento.

Il ciclo di feedback rapido consente di eseguire rapidamente un'iterazione per una buona soluzione, e questo è ciò che rende i linguaggi dinamici più produttivi.

    
risposta data 08.12.2012 - 04:23
fonte
3

Recentemente ho fatto molto di più in Python e sono stato un programmatore Java per molto tempo, e per lo sviluppo nuovo di zecca, penso di essere un po 'più produttivo in Python. un sacco di cose abbastanza semplici in java può essere un po 'noioso, come l'elaborazione di file / stream, leggere roba da un URL, serializzare XML, ecc. con "noioso", voglio dire, quello che ti porta a 5 linee di codice in Java spesso sembra Prendi solo uno in python. tuttavia, utilizzare gli strumenti giusti, come guava o un'altra API per le raccolte, può davvero aiutare in questo.

Credo che sto dicendo che uno dei vantaggi di Python è che viene fornito con molte funzionalità di cui hai bisogno per usare una libreria di terze parti in java.

tutto ciò che ho detto, per certe cose sarei molto più produttivo in java di quanto potrei essere in Python, in particolare quando si tratta di refactoring e di lavorare con grandi codebase, ecc.

    
risposta data 04.03.2011 - 15:50
fonte

Leggi altre domande sui tag