[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