Newsgroup: it.comp.os.linux.development
Titolo: Suite piu semplice possibile x sviluppare in c++

Salve a tutti
sono un non esperto di programmazione ma dovrei sviluppare alcuni
moduli-programmi  fem (progettazione strutturale) . Me la cavo appena
con il C++ , ho sempre usato il visual c++ e poi .net ma dopo aver
scoperto linux (fedoraCore5) e averne veramente apprezzato la solidità
e affidabilità della vers a 64 Bit che per i miei lavori dove ho a che
fare con algebra lineare con grandi matrici numeriche (ordine di 10^5
x 10^5) è determinante...ho cercato di trasferire tutto il mio
approccio su Linux...aihmè senza mai riuscirvi...ho sempre trovato
troppo complicato e soprattutto dispendiosa la parte di creazione
interfaccia e legame codice con essa....e ho sempre desistito per
mancanza di tempo. 
Il mio cruccio è di avere davanti un bel sistema che ho da poco
scoperto e sto veramente apprezzando e non poterlo sfruttare come
vorrei....capisco che la causa è la mia impreparazione, gia su Windows
ad esere sinceri quando dovevo linkare codice e interfaccia soffrivo
ma alla fine grazie anche alla presenza di manuali decenti(sintetici,
con esempi,  che non ti facevano perdere una vita x arrivare al
dunque)  riuscivo...qui su Linux mi sono trovato invece in
difficoltà...certo ho trovato tanto materiale ....ma mi è sempre parso
molto dispersivo e adatto si a un addetto ma poco a chi deve iniziare.
Vi chiedo, non ho grandi pretese a livello di interfaccia, esiste un
framework che mi prepari tutto o quasi in automatico consentendomi di
pensare principalmente al programma che devo fare ? E
soprattutto,esiste un manuale sintetico per quello che mi
consiglierete. Vi prego  mettetevi nei panni di chi non puo dedicare
40%del tempo a interfaccia e 60% a programma ma 10% a interfaccia e
90% a programma.
Se chiedo troppo abbiate pazienza ...e scusatemi per la domanda un
poco circolare e lunghina....
Ciao 
cristian

 pensare principalmente al programma che devo fare ?
Il modo piu' semplice di sviluppare un'interfaccia utente grafica 
consiste nell'usare qualche altro linguaggio, di livello piu' alto 
rispetto al C++. In ambiente Linux, tra i piu' gettonati ci sono TCL/TK 
e Python. Quest'ultimo linguaggio ha almeno un paio di framework GUI, TK 
e WX.
Sviluppa il codice applicativo in C++ come libreria con interfaccia per 
il linguaggio C, e richiama tale libreria dal programma grafico.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

 pensare principalmente al programma che devo fare ?
Credo di no, ma dipende da cosa intendi.
Come ti e' gia' stato fatto notare, il C++ non e' proprio il
linguaggio migliore per sviluppare GUI.
Inoltre, non so che tipo di interfaccia grafica devi realizzare, ma il
fatto che spendi buona parte del tempo su quest'ultima puo' indicare
il fatto che non separi bene lo strato di presentazione dalla logica
del tuo programma.
Comunque, se vuoi rimanere sul C++, i tre maggiori framework per lo
sviluppo di GUI (e non solo) sono:
- GTK
- QT
- wxWindows
Considera che con tutti e tre puoi scrivere applicazioni
multipiattaforma (win, linux e mac).
Io, di solito, consiglio le QT perche' trovo che siano fatte molto
bene e hanno un'ottima documentazione. Inoltre se utilizzi KDevelop e
QTDesigner, ti ritrovi un ambiente abbastanza simile (all'apperenza
almeno) a MS Visual Studio.
La documentazione delle QT la trovi qui:
http://doc.trolltech.com/4.3/index.html
In particolare qui ci sono dei tutorial per le QT:
http://doc.trolltech.com/4.3/examples.html#qt-tutorial
Qui trovi dei tutorial su come utilizzare Kdevelop:
http://www.kdevelop.org/index.html?filename=3.0/tutorials.html
Per il resto, ripeto, il tempo che spendi sull'interfaccia grafica
dipende molto da come organizzi il programma.
Saluti,
The Librarian

il linguaggio C, e richiama tale libreria dal programma grafico.
ok grazie davvero ci proverò

bene e hanno un'ottima documentazione.
[cut]
scusami...quale è la  differenza tra le due soluzioni:
-- KDevelop+QT  
--Python+framework GUI (TK o WX , sviluppando il codice applicativo in
C++ come libreria con interfaccia per il linguaggio C, e richiamando
tale libreria dal programma grafico come consigliatomi su questo NG da
CarloMilanesi).
 Quale dei due approcci mi renderebbe piu semplice la fase creazione
della  GUI  a tuo avviso ?
Grazie grazie
Cristian

 della  GUI  a tuo avviso ?
Come ti ho gia' detto non ti consiglierei il c++ per la GUI. Io ti ho
proposto Kdevelop+QT perche' e' la soluzione che ti richiede l'effort
minimo. Se hai tempo e voglia, ti conviene imparare ad utilizzare
python, che tra l'altro ti puo' essere molto utile non solo per la
GUI.
Saluti,
The Librarian

 vicina a Visual Studio+MFC e quindi alla tua attuale esperienza.
in realtà la soluzione più vicina a Visual Studio+MFC è wxWidgets
inoltre IMHO le trovo di gran lunga superiori a Qt (proprietarie) e GTK
(un po' vecchie)
HTH

 [...]
Saluti  Manlio Perillo


e le wxWidgets come si collocano in quanto a verbosità ?
ciao e grazie
cristian

 (un po' vecchie)
Sara' questione di gusti (quindi inutile discutere), ma io proprio non
riesco a capire come si faccia a preferie wxWidgets alle QT.
Comunque le QT non sono proprietarie, sono GPL:
http://trolltech.com/products/qt/licenses/licensing/opensource
Saluti,
The Librarian

 (un po' vecchie)
wxWindows e` un layer SOPRA le Gtk (su Linux), quindi ne eredita lo 
stile e i widget, aggiungendo uno strato che rallenta e combina alcuni 
widget per farne altri.
Se le Gtk sono vecchie, lo sono anche le Wx, giusto?
Aggiungo inoltre che le Gtk sono le uniche ad avere supporto per il C 
oltre che per il C++, e che non generano codice, ma si usano 
direttamente leggendo la definizione di interfaccia creata da Glade o 
Gazpacho, quindi sono le meno verbose di tutte.
Ad occhio e croce sono anche quelle con prestazioni maggiori tra le 
tre, e hanno binding per praticamente tutti i linguaggi (compresi PHP e 
D)
Non c'e` bisogno di cercare quale licenza usare quando si programma (le 
Qt sono GPL solo se il programma che le usa e` GPL. Per qualsiasi altra 
licenza diventano proprietarie) o di preoccuparsi se un bug che si e` 
trovato appartiene a loro o a un altro strato (con le Wx non sai mai se 
e` un bug delle Wx o delle Gtk).
Per come la vedo io, usare le Qt ha senso quando programmi per KDE o se 
nel multipiattaforma vuoi includere anche Mac (su cui le Gtk sono 
ancora un po' macchinose), usare le Wx non ne ha praticamente mai.
Bye.

 pensare principalmente al programma che devo fare ? E
]zac[
P.S. Premesso che sono le mie opinioni, prego nessuna risposta questo fa
schifo, è meglio quello, a che serve, i veri programmatori, ecc. .
La risposta è non esiste niente di quello a cui sei abituato, con appena un
tantino di si.
Sotto linux con kde, la cosa che più si avvicina è kdevelop che può usare
designer (qt designer) per il disegno delle interfacce grafiche.
Ma il risultato è comunque che le interfacce grafiche disegnate non sono 
integrate con il resto del codice e bisogna inventarsi dei 'giochetti' in
base ai vari casi.
Alla fine è probabilmente una buona idea usare designer per imparare e farsi
scrivere il codice base, per poi copiarlo/modificarlo nel progetto.
Tieni conto che sotto kde/qt le interfaccie grafiche non vanno quasi mai
disegnate in base al posizionamento assoluto, ma in base a sequenze,
raggruppamenti, ecc., con relativi autoridimensionamenti e auto
riposizionamenti, e questo, dopo un bel salto di mentalità e adattamento
toglie la necessità assoluta di un IDE per il disegno di interfacce
grafiche.
In ogni distribuzione c'è la documentazione sia delle qt che di kde, e
prendere esempio da una applicazione già funzionante è una buona strada.
Poi il fatto che il codice sotto linux può essere compilato sotto molte
piattaforme e sistemi diversi comporta l'uso degli 'strumenti del
demon...' (marchio registrato da terzi) ehm degli autotools (automake,
autoconf, ecc.), e in questo caso prendere spunto da una piccola
applicazione che già funziona è tassativo, come anche leggersi la
documentazione per sviluppatori sul sito di kde.
In sintesi, la partenza è piuttosto ripida e dura.
Esistono altri 'sistemi di sviluppo', real basic, gambas, ecc., che sono
forse la cosa che più si avvicina a quello che cerchi ma che si allontano
dal modo 'classico' (e puro?) di sviluppare sotto linux.


wrote:

Bene...avevo finito per l'appunto, di dare una occhiata a wxWidgets
..le quali mi cominciavano a piacere...almeno nelle prime fasi, nei
primi tutorial...tra l'altro dotate di, IMHO un ottimo manuale .. la
cui filosofia ti obbliga tra l'altro a capire a fondo il c++ ...così
mi pareva...ma ora da questo NG ...sprofondo nuovamente in una
sensazione di...confusione....Pensavo che tra programmatori ci fossero
se non unità di vedute totalizzanti almeno qualche convergenza invece
c'è netta contrapposizione...come è possibile? ...inizio a pensare che
nel mondo Linux, allora, deve ancora essere fatto uno sforzo per
creare strumenti veramente universalmente apprezzati....ma forse è
proprio nella diversificazione la bellezza prodotta dall'open
source...boh...sta di fatto che mi avete nuovamente
confuso....ovviamente però vi ringrazio per gli interventi ...
c'è qualcuno che mi riabilita le wxWidgets (come strumento di sviluppo
rapido e semplice della GUI nell'ambito di un progetto di programma
scientifico in C++ che richiede una GUI veramente ridotta all'osso
e...soprattutto poco tempo a disposizione per creare la GUI ma
necessità di mantenere alta la velocità del programma ? )..
Ciao e grazie a tutti...
cristian

dal modo 'classico' (e puro?) di sviluppare sotto linux.
...bene stroncato....ansimante e privo di forze me ne sto per tornare
a windows e a riprendere il vecchio matlab ...per evitare ..PER SEMPRE
..ogni velleità di development...
Ciao a tutti
cristian

 necessità di mantenere alta la velocità del programma ? )..
Chi meglio di te può valutarlo?
Alessandro.

 a windows e a riprendere il vecchio matlab ...
Esiste anche Octave, se vuoi provalo.
Alessandro.

 cristian
Per me le wxwidgets sono le migliori.
1) per quanto stupido sia, scarichi il pacchetto , leggi il readme e 
compili immediatamente tutti gli esempi sotto linux e sotto windows.
Con le gtk sotto windows dopo essermi rotto la testa mezza giornata e 
dover scoprire ad ogni readme che ti serve il cygwin e questo e 
quell'altro non avevo combinato una cippa (almeno io).
2) le trovo superiori come design alle Qt.
A discredito delle Qt va il moc preprocessor (il meccanismo per legare 
signal e slot necessita di codice c++ generato on-the-fly da 
lcompilatore moc) la cui sola esistenza mi fa accapponare la pelle.
Le wxwidgets collegano signal e slots con puntatori a funzione.
3) le wxwidgets hanno una gestione delle funzioni di disegno nel canvas, 
con delle primitive per la gestione delle trasparenze che ti permettono 
di fare interfacce veramente belle.
4) e' dalla cura dei particolari che si capisce la qualità:
prendi una listview ,fai un ciclo for e riempila con mille mila oggetti, 
misura quanto ci hai messo in millisec (che diventano sec con le Qt...):
La lista delle Qt soffre dello stesso problema delle listview di 
windows: il tempo di carica aumenta esponenzialmente col numero degli 
oggetti presenti, alla faccia dei metodi BeginUpdate & EndUpdate o similari.
Con le  wxWidgets, no

 Con le  wxWidgets, no
Purtorppo non ho tempo per fare una rapida verifica (tra qualche ora
parto per le vacanze), comunque, se non ricordo male, in del codice
che avevo scritto, un inserimento di circa 5000 elementi in una
listview impegava meno di un secondo. Ho usato le QT4, non so se nelle
versioni precedenti la listview fosse piu' lenta negli inserimenti.
Saluti,
The Librarian

 ..ogni velleità di development...
E' sempre tua la scelta di rimanere ancorato a delle abitudini/conoscenze.
A mia sensazione puoi/devi puntare a gambas, realbasic, che sono piuttosto
vicine alla tue abitudini/conoscenze.
P.S.Mi stupisce che nel pensare di passare a una piattaforma completamente
diversa non sia stato messo in preventivo un discreto periodo di 'sana
produzione di sudore'.
PP.SS. In ogni caso, auguri.

 vicine alla tue abitudini/conoscenze.
Secondo me, visto che sai già programmare puoi benissimo utilizzare
python + wxPython (ci sarebbe anche pyqt, ma non esiste un manuale :-
( ), in poco tempo sarai produttivo...Lasciamo il VB a Windows, che su
LInux abbiamo di meglio!

 necessità di mantenere alta la velocità del programma ? )..
Per me quello che chiedi e' possibile con qualunque dei toolkit maggiori 
che ti sono stati consigliati in questo lungo thread (QT, GTK, wx).
Forse il piu' integrato con l'ambiente di sviluppo e' QT, KDevelop ti 
mette a disposizione dei wizard che ti creano un'applicazione vuota gia' 
funzionante analogamente a quello che succede con MFC e visualstudio.
Anche GTK ha un'ottimo editor grafico gratuito, Glade, pero' non e' 
integrato in un ambiente di sviluppo, o meglio, e' integrato 
parzialmente in anjuta, ma non bene quanto QTDesigner in KDevelop.
Conoscendo un minimo wx, QT o GTK pero', con poche decine di righe di 
codice e' possibile scrivere un'interfaccia che costerebbe molto piu' 
tempo in click su menu' a tendina o bottoni vari, SPECIE se 
l'interfaccia che ti serve e' minimale.
Non ti consiglio sinceramente di fare come qualcuno ti ha detto di 
incapsulare in una libreria il core in c++ e usare un linguaggio 
interpetato tipo python per la GUI, anche se obbiettivamente python e' + 
semplice del c++ x fare un'interfaccia grafica la complessita' della 
struttura a so/dll (e gli aggiunti problemi di portabilita').
Io personalmente mi trovo benissimo con GTK, principalmente perche` sono
anni che scrivo (grosse) applicazioni che usano questo toolkit e ormai 
posso scrivere una semplice interfaccia in pochi minuti a mano o con 
glade, dedicando quindi ben oltre il 90% del tempo allo sviluppo 
dell'applicazione stessa (apparte quando la richiesta del cliente e' di 
tipo estetico, ma in quei casi picchiarsi con il toolkit grafico e' 
naturale!).
Se hai usato MFC penso che wx sia la piu' adatta per te, ma calcola che 
e' l'unica che non ha un valido editor grafico opensource disponibile, 
c'e' wxGlade, ma non vale un granche'...
--
Bye,
  Gabry

c'e' wxGlade, ma non vale un granche'...
ti chiedo scusa, visto che da una visione di tutto ciò che mi è stato
consigliato qui (e devo veramente ringraziare tutti ...) , è emersa
una mia naturale propensione verso le wxWidgets ....cosa ci perdo
veramente x questa mancanza dell'editor ? (certo lo capisco
teoricamente o almeno credo, ma mi piacerebbe sentirlo argomentare da
persona che sperimenta e ha sperimentato magari a lungo sul campo...)
Ciao e grazie davvero tanto
cristian

LInux abbiamo di meglio!
ho paura che con tale soluzione potrei avere rallentamenti
eccessivi....mi serve alta velocità soprattutto quando devo andare a
disegnare (trattasi di superfici bidimensionali   semplici plot di
f(x,y) ) .....o sbaglio
grazie
ciao
cristian

c'e' wxGlade, ma non vale un granche'...
se uno volesse realizzare una applicazione tipo Autocad con le  sole
wxWidgets lo potrebbe fare ?...nel senso non teorico ...ma di reale
fattibilità anche se magari rinunciando a produttività spinta.....LO
so starai ridendo ma sono dubbi di chi non opera sul campo e le
risposte mi servono a orientarmi come un disperso su un'isola usa una
bussola...quindi ti prego fammi capire 
ciao e grazie davvero tanto
cristian

 c'e' wxGlade, ma non vale un granche'...
Non e' certo ai livelli di qtdesigner, ma fai sicuramente prima ad essere
operativo. Tutte le volte che vorrei fare qualcosa con le qt, faccio un
passo indietro e torno al mio vecchio python + wxGlade :)
Ovviamente parliamo di piccole applicazioni per roba grossa sono daccordo
che wxGlade non sia all'altezza.
Nicola.
-- 
chi va pian va san e va lontan