[Python] Python vs Java

Marco Ippolito ippolito.marco a gmail.com
Lun 29 Dic 2014 12:42:20 CET


Ciao Alessandro,
devo proprio ringraziarti tantissimo per la tua risposta e per le tua
considerazioni che hai molto ben dettagliatamente descritto.

Devo dire che non conosco assolutamente Java. Diversi mesi fa, proprio
perchè dovevo interfacciarmi con questi applicativi, mi sono scaricato
un manualone, ed ho letto alcuni capitoli. tutto qui...
Questi applicativi sono stati scritti da ricercatori della Stanford
University, e di altre università americane. Non saranno dei premi
nobel della programmazione in java, ma penso che non siano nemmeno dei
novizi nel campo.
Un amico, decisamente un ottimo programmatore, cui ho chiesto come mai
secondo lui tutti i programmi con cui mi interfaccio scritti in java
sono così lenti e farraginosi, mi ha spiegato che tutti i programmi
scritti in Java non vengono "eseguiti direttamente" ma viene eseguito
sempre un solo processo, la JVM, che "converte" il codice in
linguaggio macchina e lo esegue, diventando quindi un collo di
bottiglia.

Ho anche per 2 mesi provato ad usare il db neo4j: http://neo4j.com/
che ha ottime idee di base ma che, ho dovuto abbandonare, perchè
piuttosto lento, ed anche lui, farraginoso.

Ho ritrovato il link ad un blog che mi aveva inviato riguardo al tema:
http://tech.jonathangardner.net/wiki/Why_Java_Sucks

Marco

Il 29 dicembre 2014 12:12, Alessandro Re <ale a ale-re.net> ha scritto:
> 2014-12-29 10:36 GMT+01:00 Marco Ippolito <ippolito.marco a gmail.com>:
>> Ciao a tutti,
>> riguardo al "confronto" Java-Python, pur essendo vero che non è mai
>> bello fare confronti tra linguaggi di programmazione perchè fanno cose
>> diverse, io volevo chiedervi quali sono le cose che Java ti consente
>> di fare e che Python invece non può fare.
>
> In linea teorica, nulla: entrambi i linguaggi sono equivalenti. E, in
> generale, tutti i linguaggi "Turing completi" sono uguali in termini
> di "cosa è possibile fare". Fondamentalmente sono tutti i linguaggi di
> programmazione di cui si sente parlare, quindi non porti questo
> problema.
>
> Il problema principale, alla fine, si riduce ad essere questo: quanto
> è facile risolvere efficientemente un problema con un certo
> linguaggio?
>
> E qui si apre un mondo :)
>
> Le questioni sono tante:
>
> 1. quanto materiale ho a disposizione già scritto da altri (quanto
> codice posso evitare di riscrivere e di debuggare)? Java e Python sono
> entrambi estremamente ricchi da questo punto di vista.
>
> 2. quanto la sintassi del linguaggio è adatta al problema? Java e
> Python, seppure piuttosto diversi in termini di aspetto estetico,
> ricadono nella stessa famiglia di linguaggi multi-paradigma
> "imperativi/oggetti/funzionali", quindi anche da questo punto di vista
> sono fondamentalmente equivalenti... Chi sostiene il contrario, di
> solito, è perché confonde questo punto con il punto successivo:
>
> 3. quanto un utente si trova bene con un linguaggio? Question molto
> personale. C'é chi (come nel link postato dall'OP) si trova a vedere
> il mondo in modo java e chi lo fa in modo python. Questo ha un grande
> impatto sulla velocità con cui scrivi codice, anche se gli strumenti
> che si hanno a disposizione sono spesso simili tra linguaggi.
>
> 4. quanto è efficiente l'implementazione del linguaggio? Alcuni
> linguaggi, Fortran o C, ad esempio, sono molto efficienti, perché
> lasciano "poco" da fare al compilatore, e tanti paletti li deve tenere
> in testa il programmatore (che ha vita difficile). Java, a MIO
> personalissimo avviso, è più efficiente in esecuzione di CPython 3
> (che uso), e il confronto dipende molto da cosa si fa... Se usi bene
> Numpy, se usi PyPy, etc, tutto può variare molto.
>
> 5. dove dovrà essere eseguito il programma? Se devi farlo andare sul
> tuo computer, e solo quello, allora di solito scegli la tecnologia che
> vuoi, ma altrimenti scegli la migliore tra quelle che la piattaforma
> obiettivo ti consente di usare... A volte, python o java non sono
> scelte, e spesso (tipo me, fino ad un paio di mesi fa) eri costretto
> ad usare PHP... (Povero me!)
>
> E ci sono molte altre questioni, ma personalmente tengo presente, di
> solito, queste.
>
>> Ve lo chiedo perchè per quello che sto facendo, in alcuni casi mi devo
>> interfacciare con alcuni applicativi scritti in Java ed in tutti i
>> casi mi sembrano piuttosto lenti e farraginosi.
>> Per cui mi domandavo in quali casi uno dovrebbe scegliere Java anzichè Python.
>
> Purtroppo, in questo caso, c'é anche il problema di COME è stato
> scritto un sistema con cui bisogna interfacciarsi :) Purtroppo gli
> incapaci (e io sono presidente del loro club) usano tutti i linguaggi
> possibili, python, java, c++ e lisp... E il linguaggio non c'entra
> nulla.
>
> Io la vedo così: se non conosci i linguaggi, imparali entrambi, perché
> sono importanti. Se sai già programmare, allora non dovresti essere
> troppo preoccupato da questo.
>
> Se li conosci, allora dovresti sapere quali strumenti e quali
> paradigmi usa uno piuttosto che l'altro. Questo ti permette di
> valutare il problema che devi risolvere, e quindi capire quale
> linguaggio usare.
>
> Ti faccio qualche esempio molto pratico (che ho dovuto affrontare)
> così capisci cosa intendo.
>
> Ti danno un CSV pieno di dati di un supermercato e ti dicono di
> studiartelo. Python o Java? Python: puoi usare una shell interattiva
> (ipython) e librerie pronte e comode (pantas, numpy, scikit-learn) per
> fare analisi di dati. Non serve scrivere, compilare, distribuire... È
> un task che devi far tu, in modo molto dinamico, quindi un linguaggio
> dinamico va bene.
>
> Ti trovi a dover esplorare un database per capire com'é fatto. Python:
> anche questo è un task dinamico.
>
> Devi tenere una lezione sul machine learning ad una classe di
> scioperati. Ok, python o java per loro è uguale, la questione
> principale sarà fare il deploy. Java è la scelta migliore, perché è
> probabile che abbiano già JRE sul computer, mentre python sarebbe più
> macchinoso. La JVM contiene un sacco di belle cose, tipo Swing, quindi
> posso fare una GUI senza preoccuparmi di tutte le dipendenze e le
> installazioni.
>
> Devi buttare giù un algoritmo sui grafi che ti è venuto in mente, usi
> Python, perché è più veloce da scrivere (meno parole) e stai facendo
> qualcosa di molto specifico, quindi non ti preoccupi troppo di non
> avere controllo sui tipi. Oppure
>
> Devi tenere una lezione sul linguaggio Java. Usi Java, ma consigli
> agli studenti di usare Python (quando sono in bagno da soli :D)
>
> Mi è anche capitato di usare python in un progetto e passare i mesi
> successivi a maledirmi perché mi serviva un controllo sui tipi, e
> python non mi aiutava poi molto... Ma ammetto di aver scelto python
> perché volevo usare python, senza sentire alternative.
>
> Insomma, devi conoscere e valutare :) Darti una risposta è difficile,
> e a volte una risposta, semplicemente, non c'é.
>
>> Marco
>
> ~Ale
>
>>
>> Il 28 dicembre 2014 17:29, Roberto De Ioris <roberto a unbit.it> ha scritto:
>>>
>>>>> Oh, questo mi interessa... ma *davvero* uno che non ha mai programmato
>>>>> in
>>>>> 10 giorni tira su roba sensata in Django?
>>>>> Perche' capisco il sito della fattoria di nonna papera, ma io penso al
>>>>> numero di cose elementari che vanno conosciute anche per un sito
>>>>> semplice e
>>>>> non mi sembra sia roba che si fa in 10 giorni a prescindere dal
>>>>> linguaggio
>>>>> di programmazione. A me sembra che se su tutto questo inserisci imparare
>>>>> un
>>>>> linguaggio, imparare a programmare e imparare un framework (con i vari
>>>>> annessi, tipo due o tre cose sceme su db e oop) altro che 10 giorni.
>>>>> Direi
>>>>> che forse si comincia a ragionare con 6 mesi se il tipo e' sveglio.
>>>>>
>>>>>
>>>> Cavolo...
>>>> mi ero illuso di riuscire ad usare Django qui sotto le ferie...
>>>>
>>>>
>>>
>>> Se gia' programmi e hai un minimo di nozioni base sul web e'
>>> possibilissimo. Ma sperare che uno che non ha mai programmato ci riesca e'
>>> davvero fantascienza (poi vabbe' se uno e' un genio o e' talentuoso e' un
>>> discorso a parte).
>>>
>>> Forse ci si dimentica che programmare non e' solo "usare uno strumento",
>>> ma e' anche una "forma mentis", un approccio alla risoluzione dei problemi
>>> che potrebbe non far parte dei processi mentali di una persona (che per
>>> carita' puo' acquisire, ma ci vuole tempo, come per qualsiasi nuovo
>>> processo mentale artistico o scientifico)
>>>
>>> Secondo me anche il sito di nonna papera sarebbe chiedere troppo.
>>>
>>> --
>>> Roberto De Ioris
>>> http://unbit.com
>>> _______________________________________________
>>> Python mailing list
>>> Python a lists.python.it
>>> http://lists.python.it/mailman/listinfo/python
>> _______________________________________________
>> Python mailing list
>> Python a lists.python.it
>> http://lists.python.it/mailman/listinfo/python
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python


Maggiori informazioni sulla lista Python