2014-12-29 10:36 GMT+01:00 Marco Ippolito <ippolito.ma...@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 <robe...@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@lists.python.it >> http://lists.python.it/mailman/listinfo/python > _______________________________________________ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python