[ubuntu-it] Domanda su Java e linguaggi di programmazione in genere.

Marco Groppo marco.grp a tiscali.it
Lun 29 Ott 2007 20:00:15 GMT


On 10/29/07, Maurizio <info a immobiliarebonanno.net> wrote:

> Python gira su Linux,Win,Mac occorre scaricarsi l'interprete virtuale
> esattamente come Java,la differenza è che in Java il bytecode è
> compilato e quindi interpretato in Python il codice è interpretato in
> tempo reale dalla macchina virtuale

In realtà entrambi generano bytecode (file .pyc nel caso di Python), ma
ci sono delle differenze:

* Python nella sua versione tradizionale (CPython)  è solo un
interprete [*], quindi il bytecode viene interpretato e basta, il che
comporta una perdita rilevante nelle prestazioni; al contrario
esistono diverse implementazioni di Java, ma oggi tutte usano o sono
in grado di usare la compilazione JIT;

* CPython genera il bytecode "al volo" al momento della prima
esecuzione del programma, mentre in Java il bytecode viene generato
da un compilatore "esterno" (javac);

* Il bytecode di Java è più "generico" e soprattutto è portabile: è
quasi sempre possibile usare un .class compilato per Java 1.3
su Java 6, mentre lo stesso non si può dire per Python.

Un difetto secondo me grave di Python (o meglio di CPython) sono le
sue limitazioni nella gestione dei thread. Altro vantaggio di Java è
che le API sono più stabili rispetto a quelle di Python.
Infine una differenza secondo me importante è l'approccio dei due
linguaggi al codice nativo: mentre in Java il runtime è molto ricco e
c'è una grande disponibilità di librerie "pure Java" in Python ci si
interfaccia molto più spesso a librerie native, il che a seconda dei
punti di vista può essere un vantaggio oppure no.

> io ho provato tutti e due ma se non
> hai mai programmato credimi che Python ha una curva di apprendimento
> moooolto più rapida

Questo probabilmente è vero, e c'è anche da dire che Python ha il
vantaggio di non imporre un unico paradigma di programmazione (quello
OO) quindi effettivamente potrebbe essere migliore per iniziare a
programmare!

+++
[*] esisterebbe un compilatore JIT per Python (psyco) ma non è incluso
in CPython

-- 
Ciao,
Marco



Maggiori informazioni sulla lista ubuntu-it