Python VS Java
by Michele

Leggendo questo articolo Python & Java: a Side-by-Side Comparison mi riveniva in mente il perché amo così tanto Python. In questo articolo l’autore esordisce con l’affermazione: “A programmer can be significantly more productive in Python than in Java” e poi cerca di capire come mai questa frase sembra essere vera. La realtà è che Python è un linguaggio stringato che mette a disposizione una serie di costrutti e strumenti che permettono di manipolare qualsiasi cosa in maniera semplice.
Se confrontato con Java, Python riesce ad avere prestazioni di tutto riguardo anche se la tipizzazione dinamica lo rende necessariamente più lento. Il fatto che il codice Python non deve essere pre compilato lo rende più veloce da testare ma non meno lento da eseguire. Infatti il codice sorgente viene compilato in una sorta di bytecode in file con estenzione .pyc.
Alcune librerie in Python sono più veloci perché cablate nell’interprete. In Java praticamente tutte le librerie sono scritte in codice Java e la loro esecuzione avviene all’interno della virtual machine. Questo comportamento rende più lente parecchie librerie, che al contrario in Python risultano molto ma molto veloci. Un esempio eclatante sono le espressioni regolari che in Python sono di gran lunga più veloci.
Per quanto riguarda l’OOP non c’è storia! Python supporta praticamente tutti i fondamenti dell’OOP moderno con un approccio molto più pulito rispetto a Java:
- Ereditarietà (anche multipla)
- Incapsulamento
- Polimorfismo
- …
Python permette inoltre di effettuare l’overloading degli operatori. In Java, ad esempio, tanti si chiedono perché le stringe si confrontano utilizzando il metodo equals() invece di usare il classico operatore di confronto ==. In Java non è possibile effettuare l’overloading degli operatori per cui è impossibile ridefinire, per le stringhe, il comportamento dell’operatore ==. Credo che questo sia un grosso limite di Java. Comprendo l’abbandono dell’ereditarietà multipla ma non sopporto questo tipo di limitazioni in un linguaggio moderno.
Commenti
Secondo me è una questione di gusti. Io ad esempio preferisco java come sintassi, preferisco la tipizzazione statica, e trovo molto più chiara la sua documentazione. Per alcune cose java lo trovo più comodo. Ad esempio stavo provando a fare un porting in python di un server scritto in java e non amo molto la gestione dei socket del pitone.
Di contro python è ad oggetti tout court, e per lo scripting puro è molto comodo e potente.
Insomma al solito dipende dal fine.
Infatti, non può esistere un linguaggio adatto a tutto ma devo dire che quando scrivi in Python il codice scivola via che è un piacere
[...] Continua a leggere su: http://www.blackbirdblog.it/blog/archivio/2006/04/18/python-vs-java/ Posted by Administrator on May 29th, 2006 Filed in siti web, links, java [...]
E’ possibile quantificare quanto Python sia più lento di Java?? Cioè parliamo dello 0.000…% o del XX% ??
Penso che stiamo sopra dell’1%, non di moltissimo e poi dipende anche dall’ambito (io, memoria, allocazioni oggetti ecc…). Non ho sotto mano benchmark recenti basati sulle ultime versioni, ma credo che Java sia comunque più veloce di Python. Non credo che dipenda dalle migliori prestazioni del codice della VM, piuttosto il motivo va cercato nella struttura del linguaggio. Comunque puoi dormire tranquillo perché si sta parlando di percentuali ridicole e comunque, in casi di estrema ottimizzazione si tende ad utilizzare moduli scritti in C e compilati nativamente sia in Java che in Python.
Riprendendo il discorso e applicandolo allo sviluppo di un gestionale multipiattaforma specifico e basato su un database voluminoso (almeno 900.000 articoli), allo stato attuale pensi che python sia meglio di java? Oppure non van bene nessuno dei due e conviene scrivere in C e compilare per le diverse architetture?
In C credo proprio di no se ci tieni alla salute
La quantità di dati da gestire dipende dal database e non dal linguaggio quindi scegli il linguaggio con cui ti trovi meglio. Se fosse un gestionale con interfaccia web io proverei django se vuoi usare Python o Struts 2 e Hibernate se scegli Java. In alternativa potresti cambiare completamente linguaggio andando a scegliere RubyOnRails con cui mi trovo benissimo oramai da 2 anni con il sito http://www.casaparrina.it. Gestionale con GUI invece richiede Java perché solo Java ha librerie GUI accettabili e completamente portabili. Io però non utilizzerei Swing ma SWT perchè molto più performanti.