View Full Version : Consigli su linguaggio/piattaforma
Ciao a tutti!
Allora, ho intenzione di scrivere una certa applicazione con certe caratteristiche che vado ad elencare sotto, e vorrei un'opinione su che linguaggio/librerie utilizzare a fronte di tali caratteristiche (sono in ordine di importanza).
L'applicazione dovrà:
1) partire da una chiavetta usb
2) poter essere cross-platform senza troppi problemi (ergo, prendere l'applicazione e ricompilarla su un altro sistema operativo mi va anche bene, purchè non ci debba impazzire dietro)
3) avere una gui figa (dovrò gestire anche qualche immagine, quindi mi piacerebbe una roba tipo Picasa...un pò di zoom, un pò di animazioni tra le azioni, bottoni personalizzabili, cose così...)
4) occupare poco spazio
5) interfacciarsi a librerie già esistenti (molto probabilmente sqllite o un qualche suo binding e forse altro...da decidere)
Quale linguaggio/GUI utilizzereste?
VBProgramming
26-11-2007, 16:38
VB
isAlreadyInUse
26-11-2007, 16:48
VB????? :eek: nonmi sembra proprio il piu adatto
wingman87
26-11-2007, 16:56
Ho fatto un seminario a scuola sul framework .NET e dicevano che le applicazioni che lo sfruttano sono multipiattaforma fintantochè sulle piattaforme sia installato il framework o una parte di esso, non mi ricordo quale però.
Non ho verificato e non ho cercato informazioni al riguardo ma se così fosse non avresti problemi
variabilepippo
26-11-2007, 17:13
VB????? nonmi sembra proprio il piu adatto
Infatti è il peggiore:
2) Il codice VB NON è assolutamente portabile su altri sistemi operativi (e non funziona decentemente neanche su quelli più recenti di mamma Microsoft) a meno di riscriverlo da zero in un altro linguaggio. :D
3) È più facile creare una GUI avanzata (=che non utilizzi i controlli standard) in C++ che in VB ed ho detto tutto! Si potrebbero usare ActiveX ma in tal caso verrebbe violato il requisito 1).
4) Devi portarti dietro tutto il runtime di VB, ovviamente funzionerebbe solo su Windows.
5) Non esistono wrapper gratuiti & decenti per VB
6) VB6 è morto (per fortuna)
wingman87
26-11-2007, 17:18
Lui ha detto VB, non VB6, magari intendeva il .NET
Cmq riguardo a quello che dicevo prima ho cercato un po' e ho trovato questo:
.NET multipiattaforma (http://www.mono-project.com/Main_Page)
variabilepippo
26-11-2007, 17:32
Lui ha detto VB, non VB6, magari intendeva il .NET
Cambierebbe poco o nulla, per quanto esistano porting del .NET Framework su altre piattaforme, attualmente non è possibile implementare in .NET un'applicazione portabile, dotata di GUI evoluta che non richieda la preventiva installazione di moduli di runtime.
wingman87
26-11-2007, 18:22
Non mi sembra poco, è molto di + che nulla... :fagiano:
Qt (http://en.wikipedia.org/wiki/Qt_%28toolkit%29)? Credo sia quello usato per opera, divx player, skype... tutte niente male come interfaccia :)
io voto per c++ in accoppiata con qt, gtk+, wxwidgets.
io punterei su java
ps. e nel caso avete qualcosa da ridire sulla grafica http://trolltech.com/products/qt/jambi/index :D
^TiGeRShArK^
26-11-2007, 21:02
io punterei su java
ps. e nel caso avete qualcosa da ridire sulla grafica http://trolltech.com/products/qt/jambi/index :D
quoto :mbe:
certo che ce ne vuole di coraggio a proporre VB e C++ per la portabilità :doh:
posso capire ancora ancora il .NET..
ma cazz..
se c'è java che è pensato apposta per quello perchè farsi tante seghe mentali? :D
variabilepippo
26-11-2007, 21:36
certo che ce ne vuole di coraggio a proporre VB e C++ per la portabilità
posso capire ancora ancora il .NET..
ma cazz..
Scusa, ma le applicazioni .NET ti sembrano portabili? :rolleyes:
In questo caso specifico probabilmente suggerirei Java, ma affermare che codice C++ basato su framework come QT (disponibile per Microsoft Windows Vista, Server 2003, XP, 2000, NT 4, Me/98, Mac OS X, 10.3 and 10.4, Linux, Solaris, HP-UX, IRIX, AIX e diversi UNIX flavors) o wxWidgets (disponibile per Windows, Linux e MacOS) non sia portabile è quanto meno azzardato.
Io mi chiederei piuttosto quanto tempo bisogna investire per studiare un linguaggio ed un framework, visto che shinya non ha specificato quale/quali conosce bene...
se c'è java che è pensato apposta per quello perchè farsi tante seghe mentali?
Forse perché non si sa se sul PC nel quale verrà inserita la chiavetta USB sarà presente (ed in quale versione) una JVM.
Scusa, ma le applicazioni .NET ti sembrano portabili? :rolleyes:
[CUT]
non posso che quotare, capisco l'avversione più che sensata per il VB ma per c++....
^TiGeRShArK^
26-11-2007, 22:57
Scusa, ma le applicazioni .NET ti sembrano portabili? :rolleyes:
se ti limiti al .NET framework e sei quindi pienamente compatibile con MONO allora SI.
sicuramente MOLTO di + di un'applicazione in C++.. :rolleyes:
^TiGeRShArK^
26-11-2007, 22:59
[CUT]
non posso che quotare, capisco l'avversione più che sensata per il VB ma per c++....
no spè..
perchè ora il C++ è diventato perfettametne portabile senza cambiare nemmeno una riga di codice e non me ne sono accorto? :mbe:
:doh:
no spè..
perchè ora il C++ è diventato perfettametne portabile senza cambiare nemmeno una riga di codice e non me ne sono accorto? :mbe:
:doh:
io parlavo di questa specifica situazione di shinya...
ogni tanto bisogna pensare al lato pratico delle cose no? una vm o un framework in questo caso non fanno che complicare la situazione.
^TiGeRShArK^
26-11-2007, 23:52
io parlavo di questa specifica situazione di shinya...
ogni tanto bisogna pensare al lato pratico delle cose no? una vm o un framework in questo caso non fanno che complicare la situazione.
5) interfacciarsi a librerie già esistenti (molto probabilmente sqllite o un qualche suo binding e forse altro...da decidere)
Non è proprio questa la situazione che da i maggiori grattacapi per la portabilità nel C++?
E cmq la VM non deve portarsela dietro..
Una versione di Java si trova praticamente su tutti i pc.
...e nel rarissimo caso che manchi la puo sempre mettere nella chiavetta per installarla.
franksisca
27-11-2007, 00:22
senza ombra di dubbio JAVA, il resto è fuffa (per quel che rioguarda la portabilità)
Io mi chiederei piuttosto quanto tempo bisogna investire per studiare un linguaggio ed un framework, visto che shinya non ha specificato quale/quali conosce bene....
Su questo non ti preoccupare, anche perchè è una cosa che farei nel tempo libero dopo il lavoro quindi non ho frettissima di essere super-produttivo subito. Cmq finchè stiamo su c++/java/python ci sto dentro bene.
Forse perché non si sa se sul PC nel quale verrà inserita la chiavetta USB sarà presente (ed in quale versione) una JVM.
Difatti questa era la remora che mi frenava ad usare java, perchè per quello che ho in mente io (inserisci la chiavetta e il programma funziona subito) dovrei inserire anche il jre nel pacchetto. (il che aumenta di molto la dimensione del tutto).
Cmq, prima che postassi la domanda qua, le mie alternative erano appunto vicine a quelle che avete proposto voi, e cioè:
- c++/qt
- python/qt ("comprimendo" tutto con py2exe)
- java/qualcos'altro
- c++/flex (che non conosco, ma sembra si possa usare flex per l'UI e un qualsiasi linguaggio per il resto, anche se non ho ancora capito come si integrino i due)
Addirittura avevo pensato ad un prototipo in python e di una riscrittura in c++. Boh, ogni alternativa ha dei pro e dei contro...il punto è appunto trovare un compromesso :stordita:
Cmq grazie a tutti per le indicazioni!!
no spè..
perchè ora il C++ è diventato perfettametne portabile senza cambiare nemmeno una riga di codice e non me ne sono accorto? :mbe:
:doh:
Dipende che intendi per portabilità...direi che quello che cerca lui è più una "trasportabilità". Sotto questo punto di vista è molto più trasportabile sia di .Net (cha ha bisogno del framework installato) che di Java (cha ha bisogno della VM, anche se si può mettere embedded nell'applicazione). Con C++ basta mettere tutte le dll nella directory dell'eseguibile e funziona tutto senza installare una virgola sul sistema ospite.
Sicuramente è una delle scelte migliori per rendere l'applicativo indipendente dal sistema ospite.
^TiGeRShArK^
27-11-2007, 11:44
Dipende che intendi per portabilità...direi che quello che cerca lui è più una "trasportabilità". Sotto questo punto di vista è molto più trasportabile sia di .Net (cha ha bisogno del framework installato) che di Java (cha ha bisogno della VM, anche se si può mettere embedded nell'applicazione). Con C++ basta mettere tutte le dll nella directory dell'eseguibile e funziona tutto senza installare una virgola sul sistema ospite.
Sicuramente è una delle scelte migliori per rendere l'applicativo indipendente dal sistema ospite.
Nel punto 2 aveva chiaramente specificato che doveva essere cross-platform...
Nel punto 2 aveva chiaramente specificato che doveva essere cross-platform...
Il problema è sempre lo stesso...a quel punto dovrebbe mettere sulla chiavetta anche la VM per gli altri SO.
IMHO sempre la soluzione migliore è C++ e wxWidgets o QT ed in seconda istanza Java con VM embedded.
java c'è su tutti i pc per cui non c'è bisogno di installare niente :O
java c'è su tutti i pc per cui non c'è bisogno di installare niente :O
Prima di tutto non è vero, su XP di default c'è una VM Microsoft che io sappia, compatibile e anche poco con Java 1.2, così come su Windows 98, 2000, Me...secondo potrebbe non essere compatibile con quella usata per generare l'applicativo (ad esempio come versione)
Ricordiamoci che qui si cerca di avere un applicativo subito funzionante che non dipenda da componenti del sistema operativo ospite, per un qualsiasi altro applicativo sarebbe più che sufficiente installare una VM, ma in questo caso non mi sembra un'alternativa valida.
java c'è su tutti i pc per cui non c'è bisogno di installare niente :O
Sul mio devo installarlo a parte.
AnonimoVeneziano
27-11-2007, 18:07
Guardate che stava chiaramente scherzando :p
(in genere kont3 è un difensore del C++ :p)
Comunque concordo con chi dice che C++ con QT è abbastanza facilmente Cross-compilabile (utilizzando le classi di QT per gestire elementi legati al SO come file , GUI e reti) .
Ciao
non è che dovete credere a tutto quello che dico :asd:
parlando seriamente dipende dall'applicazione specifica.. nel caso del C++ lo sforzo per la portabilità cade sul programmatore (che se va bene deve solo ricompilare il sorgente sulle N piattaforme, ma non sempre va bene), mentre nel caso di java cade sull'utente che deve installare la VM.
è una questione di scelte come sempre... e la scelta è quella di NON usare VB :D
non è che dovete credere a tutto quello che dico :asd:
Non c'e' pericolo :asd:
franksisca
27-11-2007, 19:02
... e la scelta è quella di NON usare VB :D
a questo però DOBBIAMO crederci :D
variabilepippo
27-11-2007, 20:13
se ti limiti al .NET framework e sei quindi pienamente compatibile con MONO allora SI.
Magari fosse così semplice... :rolleyes:
Mi fai vedere qualche applicazione dotata di un'interfaccia grafica non banale che gira sul framework di Microsoft e su Mono?
sicuramente MOLTO di + di un'applicazione in C++
Anche su questo ho seri dubbi, quando chiesero ad uno dei progettisti di ADAPTIVE
Communication
Environment (http://www.cs.wustl.edu/~schmidt/ACE.html) perché avessero scelto C++ e non Java per favorire la portabilità del progetto, rispose: "Perché ACE implementato in C++ supporta molte più piattaforme di quante abbiano una JVM". :rolleyes:
Se usi un framework C++ (QT/WxWidgets/...) puoi creare un'applicazione multipiattaforma senza dipendere da macchine virtuali, lo stesso discorso non si applica a Java.
State pero' ignorando quanto scrivere una tale applicazione in C++ sia piu' complesso e richieda piu' tempo rispetto allo scriverla in Java.
Siamo tutti sicuri che il vincolo "deve girare su piu' piattaforme possibile con il minimo intervento" sia piu' pressante del vincolo "deve avere almeno una minima probabilita' di finire l'applicazione"?
Perche' un'applicazione abbandonata in C++ non gira neppure su una piattaforma :)
variabilepippo
28-11-2007, 11:09
Perche' un'applicazione abbandonata in C++ non gira neppure su una piattaforma
Vero, infatti qualche post, per questo caso specifico, ho proposto Java, però non credo (ovviamente è un'opinione personale) che la curva di apprendimento di Java+Swing sia troppo diversa da quella di C++ + QT/wxWidgets. :)
State pero' ignorando quanto scrivere una tale applicazione in C++ sia piu' complesso e richieda piu' tempo rispetto allo scriverla in Java.
generalmente la penso come te, però nel caso di C++/QT (usato corretamente) non siamo molto lontani da Java.
pensa che non ci si deve nemmeno preoccupare di deallocare gli oggetti (se questi sono dei QObject)
generalmente la penso come te, però nel caso di C++/QT (usato corretamente) non siamo molto lontani da Java.
pensa che non ci si deve nemmeno preoccupare di deallocare gli oggetti (se questi sono dei QObject)
Il problema dello scrivere un'applicazione vagamente complessa in C++ non e' certo la libreria che si usa, ma il proprio codice.
Il problema dello scrivere un'applicazione vagamente complessa in C++ non e' certo la libreria che si usa, ma il proprio codice.
in parte si, ma secondo me un buon 70% del tempo speso sarà per la gui.
Il problema dello scrivere un'applicazione vagamente complessa in C++ non e' certo la libreria che si usa, ma il proprio codice.
in parte si, ma secondo me un buon 70% del tempo speso sarà per la gui.
forse non sapete cosa sono veramente le QT.. non si tratta solo della GUI, ma di un vero e proprio framework come può essere .NET o Java (non il linguaggio).
se si programma in puro "stile QT" la differenza di produttività tra C++ e Java è pressochè irrilevante. in tutti gli altri casi sono daccordo con fek.
ovviamente bisogna conoscerle le QT.. quindi non sto dicendo che è la scelta migliore, tanto che io ho consigliato java :fagiano:
se si programma in puro "stile QT" la differenza di produttività tra C++ e Java è pressochè irrilevante. in tutti gli altri casi sono daccordo con fek.
Fonte?
Fonte?
è sottointeso che è la mia opinione visto che il commento porta il mio nome :fagiano: e se non era sottointeso ora l'ho specificato.
semplicemente io ho usato sia java che C++/Qt
è sottointeso che è la mia opinione visto che il commento porta il mio nome :fagiano: e se non era sottointeso ora l'ho specificato.
semplicemente io ho usato sia java che C++/Qt
Per progetti di quale entita'?
Per progetti di quale entita'?
sicuramente in Java ho fatto cose ben più complesse, ma mi sono fatto un'idea di C++/Qt con un programmino di un migliaio di LOC
la cosa sorprendente è che spesso non mi accorgo che sto programmando in C++ e non in Java
ma nonostante tutto consiglio ancora Java (anche senza conoscere l'entità del progetto)
ma mi sono fatto un'idea di C++/Qt con un programmino di un migliaio di LOC
Allora permettimi di restare della mia opinione che di linee di C++ con o senza vari framework ne ho masticate diversi milioni :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.