View Full Version : Java vs Python
roquentin3
29-07-2014, 14:25
Ciao a tutti,
devo realizzare un software con interfaccia grafica.
Questo software si deve occupare principalmente di estrarre dati da file .txt e produrre in uscita i risultati sempre su .txt o pdf.
L'interfaccia deve comprendere una mappa geografica (es. Europa) e selezionando una città da un menù a tendina, deve segnare sulla mappa con un segno (tipo google maps) la città selezionata ( o anche zoomare sulla mappa ).
In base alla città selezionata deve prendere in ingresso dei file .txt e leggere i dati nonchè eseguire dei calcoli matematci su di essi e scriverli su un file di uscita .txt o pdf. e magari anche graficarli con istogrammi sulla stessa interfaccia.
Vengo al dunque: devo scegliere un linguaggio di programmazione che mi permetta di fare ciò e la mia scelta cade su java o python.
Cosa mi consiglita?
Grazie
Daniels118
29-07-2014, 15:16
Io dei due conosco solo java, ma penso che entrambi siano abbastanza dotati di librerie per fare ciò che vuoi, il consiglio è ovviamente di utilizzare quello che conosci meglio.
Nell'ottica di ridistribuire il programma sceglierei java perché a mio avviso la jvm è più familiare all'utente medio di quanto non lo sia l'interprete python (ma è solo una mia sensazione).
AnonimoVeneziano
29-07-2014, 15:25
Ciao a tutti,
devo realizzare un software con interfaccia grafica.
Questo software si deve occupare principalmente di estrarre dati da file .txt e produrre in uscita i risultati sempre su .txt o pdf.
L'interfaccia deve comprendere una mappa geografica (es. Europa) e selezionando una città da un menù a tendina, deve segnare sulla mappa con un segno (tipo google maps) la città selezionata ( o anche zoomare sulla mappa ).
In base alla città selezionata deve prendere in ingresso dei file .txt e leggere i dati nonchè eseguire dei calcoli matematci su di essi e scriverli su un file di uscita .txt o pdf. e magari anche graficarli con istogrammi sulla stessa interfaccia.
Vengo al dunque: devo scegliere un linguaggio di programmazione che mi permetta di fare ciò e la mia scelta cade su java o python.
Cosa mi consiglita?
Grazie
Considerando l'applicazione che devi fare (gestire mappe e interfacce grafiche) credo che più che al linguaggio ti convenga pensare al framework che vuoi adottare per lo sviluppo e poi il linguaggio viene di conseguenza.
Alla fine,infatti, il punto che sembra essere più critico dell'applicazione e' proprio la gestione e visualizzazione delle mappe.
Per che piattaforma vuoi/devi farla?
Integrare le mappe in una applicazione desktop potrebbe non essere banale ... (anche perché non credo ci siano servizi desktop per la mappe di qualità da sfruttare).
Se vuoi usare google maps per esempio (che e' il servizio di mappe migliore che si trova al momento) allora o fai una applicazione Web o integri un browser web nella tua applicazione o usi le API mobile (se l'applicazione mobile).
Se vuoi usare un servizio di qualità inferiore , ma comunque buono come OpenStreetMap allora hai a disposizione una serie di librerie e framework tra cui scegliere che, a seconda di quale sceglierai, determinerà il linguaggio con cui scriverai l'applicazione. Puoi trovare un elenco qua:
http://wiki.openstreetmap.org/wiki/Rendering
Ciao
roquentin3
29-07-2014, 15:54
Io dei due conosco solo java, ma penso che entrambi siano abbastanza dotati di librerie per fare ciò che vuoi, il consiglio è ovviamente di utilizzare quello che conosci meglio.
Nell'ottica di ridistribuire il programma sceglierei java perché a mio avviso la jvm è più familiare all'utente medio di quanto non lo sia l'interprete python (ma è solo una mia sensazione).
Purtroppo non conosce nè uno nè l'altro. Si tratterebbe di prendermene uno e studiarlo ovviamente considerando il tempo che ho a disposizione che non è molto.
roquentin3
29-07-2014, 15:58
Considerando l'applicazione che devi fare (gestire mappe e interfacce grafiche) credo che più che al linguaggio ti convenga pensare al framework che vuoi adottare per lo sviluppo e poi il linguaggio viene di conseguenza.
Alla fine,infatti, il punto che sembra essere più critico dell'applicazione e' proprio la gestione e visualizzazione delle mappe.
Per che piattaforma vuoi/devi farla?
Integrare le mappe in una applicazione desktop potrebbe non essere banale ... (anche perché non credo ci siano servizi desktop per la mappe di qualità da sfruttare).
Se vuoi usare google maps per esempio (che e' il servizio di mappe migliore che si trova al momento) allora o fai una applicazione Web o integri un browser web nella tua applicazione o usi le API mobile (se l'applicazione mobile).
Se vuoi usare un servizio di qualità inferiore , ma comunque buono come OpenStreetMap allora hai a disposizione una serie di librerie e framework tra cui scegliere che, a seconda di quale sceglierai, determinerà il linguaggio con cui scriverai l'applicazione. Puoi trovare un elenco qua:
http://wiki.openstreetmap.org/wiki/Rendering
Ciao
Beh..diciamo che sarebbe sufficiente che selezionassi una città da un menù a tendina e che aoutmaitcamente venisse segnata in qualche modo sulla mappa.
Non devo fare una applicazione web ma un software installabile con un esegubile sul sistema. La piattaforma, considererei in primiis windows ma ben enga l'utilizzo sulle altre se fosse possibile
AnonimoVeneziano
29-07-2014, 16:12
Beh..diciamo che sarebbe sufficiente che selezionassi una città da un menù a tendina e che aoutmaitcamente venisse segnata in qualche modo sulla mappa.
Non devo fare una applicazione web ma un software installabile con un esegubile sul sistema. La piattaforma, considererei in primiis windows ma ben enga l'utilizzo sulle altre se fosse possibile
In tal caso una buona idea potrebbe essere fare il tutto in C#/.NET e usare una libreria tipo http://brutile.codeplex.com per OpenStreetMaps.
Secondo me e' la scelta più adatta per quello che devi fare se e' un qualcosa che devi fare per lavoro.
Se la compatibilita' multipiattaforma e' importante allora Java potrebbe essere una opzione , ma come costruzione di interfacce grafiche su Windows credo che .NET al momento sia inarrivabile. Sia per qualità dei tool a disposizione che per le risorse che puoi trovare sul Web.
Python lo scarterei, perche' visto che non conosci neanche il linguaggio , costruire una interfaccia grafica decente richiederebbe sicuramente più lavoro. Pero' non sono esperto di costruzione di interfacce grafiche su Python, visto che l'ho sempre usato più come linguaggio di scripting che per applicazioni. Di esperti a riguardo ce ne sono parecchi su questo forum e sicuramente se mi sbaglio da questo punto di vista (ad esempio perché c'e' un tool di RAD per le interfacce grafiche definitivo per Python che non conosco) si faranno sentire :D
Ciao
Java offre nativamente supporto alle GUI tramite Swing
https://it.wikipedia.org/wiki/Swing_%28Java%29
Né l'interprete ufficiale, né i moduli inclusi in esso, offrono nulla di simile in Python, né Python 2.x né 3.x
Ovviamente per entrambi trovi estensioni, librerie e tutto il solito fritto misto e insalatona che offrono tutti i linguaggi .
Io andrei di Java senza pensarci 2 volte.
roquentin3
29-07-2014, 18:38
Ovviamente oltre al menù a tendina per le città, ci devo essere anche delle opzioni spuntabili in base ai dati che voglio in uscita sul file .txt o .pdf
Io sinceramente non conoscendo nè java nè Python opterei per Java solo perchè sicuramente troverei più aiuto nei forum mentre opterei per Python solo perchè mi hanno detto che è più immediato da apprendere.
Quindi son ben accetti altri pareri a riguardo
Grazie ancora
Ovviamente oltre al menù a tendina per le città, ci devo essere anche delle opzioni spuntabili in base ai dati che voglio in uscita sul file .txt o .pdf
Io sinceramente non conoscendo nè java nè Python opterei per Java solo perchè sicuramente troverei più aiuto nei forum mentre opterei per Python solo perchè mi hanno detto che è più immediato da apprendere.
Quindi son ben accetti altri pareri a riguardo
Grazie ancora
Secondo me stai sopravvalutando quello che una GUI è, come si presenta all'utente programmatore e come si usa, non troverai nulla di fatto e pre-confezionato, dovrai curare tu tutta la logica e gli stati del programma.
Se la scelta si estende ad altro GTK+ offre tanti widget per te, compreso il supporto alle mappe con libchamplain (https://wiki.gnome.org/Projects/libchamplain) e probabilmente altri widget e librerie, ma è forse ancora più complesso di Java.
Se non te la senti di sperimentare usa Java perché troverai tanta documentazione.
roquentin3
29-07-2014, 19:36
Vi spiego: questo è il mio lavoro di tesi, ho tutta l'intenzione di imparare un linguaggio nuovo ma non voglio metterci un secolo.
Entro i primi di agosto devo decidere assolutamente che linguaggio utilizzare per il lavoro che devo fare, quindi i vostri pareri mi sono di enorme aiuto
devi decidere entro Agosto e quanto tempo hai dopo per fare le robe che devi fare ?
è difficile consigliarti qualcosa se non hai neanche una preferenza per un linguaggio.
Ci sono i cosidetti "RAD tools" che non sono altro che IDE usati per progettare GUI, una GUI per fare una GUI, e tipicamente crei nuovi widget, editi quelli esistenti, crei un nuovo layout et voilà la tua GUI è pronta; solitamente la salvi come un XML o formato equivalente e a parte programmi la logica del tuo software e carichi il tuo XML da li e sempre dal codice sorgente colleghi i widget alla logica del tuo programma.
Tipicamente ogni framework per GUI ha 1 suo RAD di riferimento, per Qt è Qt Designer ( già parte dell'IDE ufficiale del progetto, Qt Creator quindi non è un programma separato ), per le GTK+ è Glade e per Swing e gli altri troverai sicuramente altro, specialmente per Eclipse ( un altro IDE generico per tutti i linguaggi, molto popolare nella community Java ).
Adesso il punto è, Con Swing usi Java, con Qt usi C++, con le GTK usi C ( potresti anche integrare altri linguaggi ma senza sapere il C non fai un passo con le GTK ) e con altri framework userai altro .
il C è il padre di tutti i linguaggi, Java ha un mare di documentazione e un passato da linguaggio popolare e molto usato, probabilmente uno dei più facile da gestire all'inizio, C++ richiede una espansione delle tue conoscenze del C ed è tipicamente più complesso, in pochi mesi non so quanto tu possa diventare mediamente skillato su C e C++, con tutto l'aiuto che i RAD e le GUI ti possono dare ma alla fine la logica del programma la scrivi tu, i pezzi li devi mettere insieme tu.
Io direi di considerare solo 2 opzioni e quelle che hanno più documentazione e risorse disponibili online, vale a dire Java e Qt, datti 3-4 giorni e dedica metà del tempo a Java e metà a Qt e vedi che riesci a tirare fuori come primo esempio e quanto è difficile per te.
PS
a questo punto non conta molto, ma a scanso di equivoci dovresti specificare la tua piattaforma e la piattaforma per la quale intendi sviluppare, sia Java che Qt sono multipiattaforma comunque.
"potrebbe" essere la cosa più semplice se mastichi un pò di javascript e html
https://github.com/rogerwang/node-webkit
roquentin3
29-07-2014, 20:34
Ok, in C, la parte relativa al funzionamento del software che dovrei fare credo di saperla fare...ho avuto a che fare con lettura e scrittura su file, ricerca e cose cosi. Il problema è la creazione dell'interfaccia grafica in C , che a quanto mi hanno detto è un bel pò complicata
cdimauro
30-07-2014, 06:47
Ho sviluppato interfacce grafiche con Python usando IronPython e WPF, ma:
- è limitato a Windows (usando .NET);
- devi perderci un po' di tempo all'inizio per capire come gestire GUI da IronPython (VisualStudio supporta direttamente soltanto alcuni linguaggi, e non Python purtroppo).
Viste le tue esigenze, ti consiglio di provare l'accoppiata Python + PySide.
Python ti consentirà di scrivere molto velocemente codice senza perderti in dettagli di più basso livello; ed è molto semplice da imparare. Gestire file di testo è una banalità, e per i PDF esistono diverse librerie a cui potresti appoggiarti.
PySide è un wrapper del framework Qt, che mette a disposizione QtDesigner per disegnare interfacce grafiche, generando appositi file per molti linguaggi di programmazione (incluso Python). Qt è interessante perché integra WebKit, che è un engine web, per cui puoi appoggiarti a Google Maps o Bing Maps per gestire le mappe.
roquentin3
30-07-2014, 09:39
Vi ringrazio tutti.
A questo punto mi viene da chiedervi: cosa hanno in comune Python e Java ?
cosa hanno in comune Python e Java ?
niente :asd:
roquentin3
30-07-2014, 10:47
E nella sintassi, secondo voi, quale dei due è più vicino al C ?
E nella sintassi, secondo voi, quale dei due è più vicino al C ?
considerando cio' che devi fare cercherei un linguaggio quanto piu' distante dal c...
wizard1993
30-07-2014, 10:57
E nella sintassi, secondo voi, quale dei due è più vicino al C ?
Java.
Ma bisogna fare dei distinguo: python, in una maniera o nell'altra, non ti costringe forzatamente a usare gli oggetti (anche se ritengo difficile usare un qualsiasi framework moderno senza avere proprio la benchè minima idea di cosa un oggetto sia), java si.
Tanto per capirsi, in python puoi anche scrivere un programma con approccio strutturato in maniera abbastanza naturale, in java è (molto) meno immediato.
Per come la vedo io, vadi di python. E te lo dico da javista
Daniels118
30-07-2014, 10:59
Sicuramente java.
Comunque java è un linguaggio completamente ad oggetti, mentre il c è solo strutturato, per cui nel primo troverai delle keyword e degli operatori che non hanno un corrispondente nel secondo. Il c++ invece estende il c, aggiungendo alla programmazione strutturata quella ad oggetti (la prima non è assente come in java), tuttavia java e c++ hanno preso due strade molto diverse, pur essendo entrambi ad oggetti.
Quanto segue è una mera approssimazione, da non prendere alla lettera.
In termini di somiglianza di keyword e operatori potremmo dire che il c è un sottoinsieme di java, ma non il contrario, e tra java e c++ esiste solo un'intersezione. In java inoltre è completamente assente il concetto di puntatore.
[Kendall]
30-07-2014, 11:47
Secondo me, visto il fatto che programmerai principalmente per Windows, potresti andare sul C# e le WPF (il framework grafico) come ti era già stato consigliato (tra i vari consigli) da AnonimoVeneziano.
Troveresti C# un linguaggio un pò più moderno del Java e con una quantità di documentazione e tutorial illimitata (Java non è messo male da questo punto di vista, ma almeno io personalmente mi sono trovato ben più bene quando programmavo in C#).
Io uso principalmente Java (per la programmazione android), però devo dire che ho preferito nettamente il C# come linguaggio generico, oltre al fatto che per la realizzazione di applicativi con interfaccia grafica lo trovo diverse spanne sopra (sia per le feature del linguaggio, che per gli strumenti a disposizione - vedi Visual Studio ed il framework WPF).
Secondo me saresti decisamente più produttivo e rapido con questa accoppiata, anche se perderesti la portabilità su altri sistemi (sempre che ti interessi veramente).
Oltre al link che ti aveva indicato Anonimo, ho trovato anche un componente sviluppato direttamente da Microsoft che si appoggia alle mappe di Bings (che sono ottime): Bing Maps WPF Control (http://msdn.microsoft.com/en-us/library/hh750210.aspx).
Riguardo al python purtroppo non posso dare opinioni, non usandolo (se non a livello stra-basilare).
roquentin3
30-07-2014, 12:08
Ok a questo punto vi mostro quello che più o meno dovrei fare : http://re.jrc.ec.europa.eu/pvgis/apps4/pvest.php?lang=it&map=europe
...una cosa di questo tipo con menù a tendina con città da selezionare, opzioni selezionabili, file .txt in ingresso, elaborazioni matematiche sui dati contenuti nel file e uscita con risultati su file .txt o .pdf e dall'altra parte dell'interfaccia: selezione mappa Europa e mappa Africa.
Ovviamente il tutto deve essere eseguito offline, con file di installazione, ecc..
Cioè solo 2 mappe: selezionare la mappa e una volta selezionata la città dal menù a tendina, deve segnare il punto sulla mappa ( se possibile zoomare sulla città), caricare il file .txt che ho già a mia disposizione, in base alle opzioni sulla interfaccia deve selezionare i dati dal file .txt, eseguire dei calcoli e produrre in uscita un file .txt o .pdf con i risultati.
Magari arricchire l'interfaccia con un grafico , un istogramma, dei risultati ottenuti.
Che ne dite?
Quanto segue è una mera approssimazione, da non prendere alla lettera.
In termini di somiglianza di keyword e operatori potremmo dire che il c è un sottoinsieme di java, ma non il contrario, e tra java e c++ esiste solo un'intersezione.
Sono tutti insiemi prettamente distinti, Java e C hanno più o meno lo stesso numero di keywords e di queste ne avranno in comune solo una metà ad esempio. Più interessante sarebbe un'analisi statistica/"realistica" del loro uso ma ovviamente è roba che non interessa a pochi (tra cui me e strettamente per lavoro tra l'altro).
Vi spiego: questo è il mio lavoro di tesi
Curiosità: corso di studi in?
roquentin3
30-07-2014, 14:54
Curiosità: corso di studi in?
Ingegneria
[Kendall]
30-07-2014, 15:25
Ovviamente il tutto deve essere eseguito offline, con file di installazione, ecc..
Questo potrebbe essere un problema... Non ho mai fatto prove a riguardo ma ho la forte sensazione che tutte le varie api per l'interfacciamento alle mappe (google maps, bing maps o altro) richiedano la connessione a internet per il caricamento dal web dei dati relativi.
Non so se sia possibile sfruttare queste api con copie locali delle mappe.
(Potrei sbagliermi però, magari qualche altro utente ne sa di più)
pleiadi666
21-08-2014, 06:41
Ti consiglio Javafx :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.