[Linux-Biella] sviluppare applicativi su linux
Emanuele Aina
faina.mail a tiscali.it
Sab 17 Dic 2005 00:34:59 CET
Rick iniziò:
> La domanda è: cosa mi consigliate di usare / leggere per sviluppare
> in c++ su linux a parte i libri di Bjarne Stroustup?
Usa python. :)
> Premessa doverosa: Gli esperimenti che voglio fare non è necessario
> siano cross-platform. Basta che girino veloci. Ecco perchè c++.
Beh, la velocità serve solo nei punti critici. Negli altri casi lo
svantaggio di usare cose più lente (come python) non è così tragico.
Usa python. Davvero. È ottimo per esplorare idee e fare prototipi. Poi,
se ci son problemi di velocità riscrivi le parti critiche in C/C++ e le
usi da Python.
> Vorrei fare esperimenti su: a) Sviluppo di un demone.
Prendi un qualsiasi demone e dai un'occhiata i sorgenti. Meglio qualcosa
di piccolo (es. acpid).
> b) Connessioni di rete.
Socket. Come su windows...
> c) Comunicazione Interprocesso.
Pipe: "man pipe".
Named pipe (o FIFO): "man mknod".
Semafori: "man semget" (l'api POSIX è orrenda :)
Shared mem: "man shmget".
Socket: gli Unix domain socket funzionano solo a livello locale (usati
da X e syslogd).
> d) Gestione dell'Interfaccia grafica.
WxWidget: simile alla programmazione delle API win32.
Qt: scritte in C++, comprendono classi anche per cose non grafiche
(accesso ai file, rete, etc). Estendono il c++ in modo non standard.
Sono GPL, quindi no applicazioni propietarie o CPL, a meno che paghi
TrollTech.
Gtk: scritte in C, si basano su glib che contiene un sistema a oggetti
per il C e altre cose utili (liste, hash). Sono un ottimo esempio di
programmazione in C. Hanno binding per C++ (gtkmm) che a molti non
piacciono tanto. Quelli per python, invece, sono ottimi. Li consiglio
per avere un modo rapido di visualizzare finestre & co. Sono LGPL,
quindi ci metti su qualsiasi cosa con qualsiasi licenza. LGPL, BSD, CPL
da preferirsi... :)
Il resto è fuffa...
> e) Misurazione dei tempi di esecuzione del codice (ci sarà qualche
> funzione sicuramente, ma non so dove si trovi e ho solo una vaga idea
> di come si importino le librerie esterne con il gcc (non ho ancora
> googlato)).
Esiste gprof, sysprof e altre cosine. Per vedere il tempo di esecuzione
di un programma eseite time ("man time"). Cosiglio di usare delle care
vecchie printf e dei timer... :)
> Intendo chiedere il vostro parere su: a) quali set di librerie
> grafiche e non (gtk, wx, qt, gnome, kde, ecc...) secondo voi sono un
> buon compromesso tra comodità e velocità di esecuzione;
Bah, la velocità qui centra poco nulla. La maggior parte del tempo un
programma grafico è in wait per l'input. È sufficiente stare attenti a
non bloccare l'interfaccia...
Se tu decidessi di provare Qt, fammi un favore: cerca di *NON* usare
kdelibs, ma usa solo le Qt. È fastidioso che la maggior parte dei
programmi per Qt dipenda anche da kdelibs (il quale è sui 108Mb). Non
uso kde e non ho volgia di installare tutto quel ben di dio... :)
> b) quale strumento di sviluppo, possibilmente RAD (vi prego di
> evitare le risposte tipo emacs o vi, che apprezzo molto come editor
> ma che perderei più tempo a cercare di configurare e usare piuttosto
> che scrivere gli esperimenti che mi servono). Sarei più orientato
> verso KDevelop o Anjuta, ma sono aperto a qualsiasi proposta;
Boh, uso vi. Tieni presente che programmare in C/C++ in linux con
vi/emacs è molto più fattibile che sotto windows o con java.
> c) quali sono i problemi classici da softwarista a cui potrei andare
> in contro, quelli linux ovviamente, a parte il solito <<Perchè c***o
> non compila?>>(che c'è dappertutto).
Le API POISX sono un po' barocche. Almeno quanto le API win32, solo con
molti meno argomenti... :)
Se usi Qt o glib ti togli molti pensieri fastidiosi.
> Qualsiasi esempio, lettura, esperienza, opinione è ben accetta. Per
> adesso non ho le idee chiare. Mi rendo conto che chiedo molto, ma le
> domande serie si fanno a gente seria!
Se sei in dubbio scarica i sorgenti di un programma che fa quel che vuoi
e dacci uno sguardo (il free software spacca ;) e poi chiedi pure. Non
garantisco risposte, però! :)
--
Buongiorno.
Complimenti per l'ottima scelta.
Maggiori informazioni sulla lista
Linux