PDA

Visualizza la versione completa : [C++ & Gtk+] Portabilità del codice Win/Linux


web@web
18-08-2004, 22:09
Mi chiedevo se utilizzando il linguaggio c++ e le librerie GTK+ è possibile realizzare del codice che vada un po' più in la di un "Hello World" e che sia portabile da Windows a Linux.
In poche parole che basti compilarlo sotto Windows o sotto Linux senza cambiare una riga di codice.

/dev/null
18-08-2004, 23:21
Non ho mai utilizzato le GTK sotto winz, ma *credo* che le funzioni delle gtk siano le stesse...
Il problema c'e' pero' sicuramente su funzioni di piu' basso livello... Se vuoi usare i thread, creare piu' processi, utilizzare le socket, richiamare altri programmi, manipolare a basso livello files e directori, ..., ..., ... dovrai per forza ritoccare il codice in quanto tali funzioni sono diverse per i due sistemi... Inoltre sotto Linux (e gli unix-like in generale) ogni file e directory ha i permessi di lettura, scrittura ed esecuzione, cosa che non e' presente sui sistemi m$, sotto gli unix gli utenti sono gestiti in maniera diversa, molto piu' stretta ed esistono i gruppi e cosi' via...

Credo quindi che se vuoi fare qualcosa piu' di un programma che apra una finestrella con qualche scritta e bottone dovrai sbatterti un po' per portarlo sui due sistemi...



PS: Ma le GTK sui sistemi m$ sono preinstallate o e' necessario scaricarle per eseguire un programma che le usa?

web@web
18-08-2004, 23:29
Originariamente inviato da /dev/null


PS: Ma le GTK sui sistemi m$ sono preinstallate o e' necessario scaricarle per eseguire un programma che le usa?

Bisogna installarle, ma non è un problema sono gratuite e... belle. Inoltre sono abbastanza facili da usare.

Comunque, effettivamente sarebbe un lavoraccio portare lo stesso software su entrambi i sistemi.

Un'alternativa sarebbe java ma non mi è mai andato troppo a geneio... Un'altra alternativa sarà rappresentata da mono (l'implementazione di .net per Windows e Linux) ma è ancora presto.

anx721
18-08-2004, 23:41
Considera anche la libreria wxWidgets (www.wxWidgets.org), io la preferisco perchè dà alle interfacce grafiche lo stile del sistema operativo su cui gira il programma, mentre con le gkt anche su windows viene mantenuto lo stile di linux; inoltre wxWidgets mette a disposizione anche delle classi aggiuntive come quelle sui socket e quelle sui thread, cosi utilizzando le sue classi il programma non perde la portabilita,


:ciauz:

web@web
18-08-2004, 23:57
Originariamente inviato da anx721
Considera anche la libreria wxWidgets (www.wxWidgets.org), io la preferisco perchè dà alle interfacce grafiche lo stile del sistema operativo su cui gira il programma, mentre con le gkt anche su windows viene mantenuto lo stile di linux; inoltre wxWidgets mette a disposizione anche delle classi aggiuntive come quelle sui socket e quelle sui thread, cosi utilizzando le sue classi il programma non perde la portabilita,


:ciauz:


Le prenderò in considerazione...
Grazie

web@web
19-08-2004, 00:25
Anche GTK+ mette a disposizione molte classi aggiuntive per esempio ache per socket.

Credo inoltre che sia alla fine sia meglio che un'applicazione mantenga la stessa interfaccia grafica sia in SO che in un'altro in maniera tale da non creare un impatto negativo su un'eventuale utente che decida di cambiare so. Un esempio sono Mozilla e Gimp.

Credo proprio che mi farò un m... così e che ci proverò con le GTK+.


Grazie per lo scambio di opinioni

anx721
19-08-2004, 00:27
Originariamente inviato da web@web
Le prenderò in considerazione...
Grazie

Se sei interessato e hai banda per scaricare, puoi scaricarti MinGWDevelopperStudio, un editor freeware per c/c++, che nella versione completa (di 62 MB) include le librerie wxWidgets già integrate (quindi non c'è bisogno di scaricare sorgenti e compilarli integrandoli nel compilatore); il sito è: http://www.parinya.ca/

:ciauz:

anx721
19-08-2004, 00:37
Originariamente inviato da web@web
Credo inoltre che sia alla fine sia meglio che un'applicazione mantenga la stessa interfaccia grafica sia in SO che in un'altro in maniera tale da non creare un impatto negativo su un'eventuale utente che decida di cambiare so

Il fatto di riprodurre lo stile del sistema ospite è considerato come un pregio non come un difetto di una libreria grafica, non a caso viene ben messo in evidenza questa caratteristica, e non sono tante le librerie che la mettono a disposizione. Questa caratteristica è tuttaltro che negativa dal punto di vista dell'usabilità dell'interfaccia; quello che fa wxWidgets non è di cambiare l'interfaccia da un sistema all'altro, ma di cambiare lo 'stile' dei componenti grafici secondo lo stile nativo del sistema operativo su cui gira: questo sinifica che tutti i componenti grafici avranno l'aspetto e il comportamento 'solito' e 'usuale' con cui sono abituati gli utenti che usano quel sitema operativo; se compili il programma per windows lo compili per farlo usare agli utenti di windows; se lo compili per linux lo compili per farlo usare agli utenti di linux; per questo questa caratteristica semmai aumenta l'usabilità delle interfacce costruite,

:ciauz:

/dev/null
19-08-2004, 00:39
Scrivere il programma in Java non credo sia una buona idea: sulle macchine che lo eseguono dev'essere installata la JVM, inoltre l'applicazione risultera' piu' pesa e potrai effettuare meno operazioni di basso livello...
Credo anch'io che sia meglio mantenere lo stesso "tema" grafico per un programma e non adeguarlo al SO...
Per usare mono i tempi sono ancora prematuri :bhò:

Io quindi rimarrei sulle GTK, soprattutto se offrono funzioni per lavorare con i sockets ed altre robe simili...
Codice aggiuntivo penso che ci sara' sempre... Ma potresti sbrigartela molto alla svelta utilizzando delle macro... Ad esempio guarda questo thread: http://forum.html.it/forum/showthread.php?s=&threadid=654223&highlight=socket

:ciauz:

/dev/null
19-08-2004, 00:42
Originariamente inviato da anx721
Il fatto di riprodurre lo stile del sistema ospite è considerato come un pregio non come un difetto di una libreria grafica, non a caso viene ben messo in evidenza questa caratteristica, e non sono tante le librerie che la mettono a disposizione. Questa caratteristica è tuttaltro che negativa dal punto di vista dell'usabilità dell'interfaccia; quello che fa wxWidgets non è di cambiare l'interfaccia da un sistema all'altro, ma di cambiare lo 'stile' dei componenti grafici secondo lo stile nativo del sistema operativo su cui gira: questo sinifica che tutti i componenti grafici avranno l'aspetto e il comportamento 'solito' e 'usuale' con cui sono abituati gli utenti che usano quel sitema operativo; per questo questa caratteristica semmai aumenta l'usabilità delle interfacce costruite,

:ciauz: Per qualcuno potrebbe venir considerato un pregio...
Pero' secondo me se un utonto tonto impara ad utilizzare un programma con la grafica di win, e poi se lo trova davanti completamente diverso nell'aspetto per quanto riguarda icone, colori etc, perde un po' di tempo per rischiarirsi le idee...
Per mio padre ad esempio e' cosi': una volta cambiai il set di icone e non riusciva piu' a trovare Mozilla :biifu:

Loading