Newsgroup: it.comp.lang.c++
Titolo: Quali sono le metodologie consolidate di sviluppo?

Dopo dieci anni che non programmavo piï¿œ in C++, sto entrando in un 
progetto sviluppato proprio in questo linguaggio, e quindi.. si torna a 
casa :-)
Per attualizzare le mie conoscenze vorrei chiedervi, oggi come oggi, 
qual'ï¿œ lo stato dell'arte dello sviluppo in c++ ?
A parte visualc++ lato microsoft, quali ambienti RAD open vanno per la 
maggiore?
Quali toolkit grafici (wxWidgets + wxDev-C++) ?
Unit testing ? UML modelling ?
Non chiedo che mi si dia la luna :-)  mi basta avere qualche riscontro 
da chi ï¿œ piï¿œ informato di me :-D
Grazie a tutti
-- 
Morde

 a avere qualche riscontro d
vi.
A

 casa :-)
Se puoi scegliere e vuoi un RAD, cambierei proprio linguaggio.
Se il progetto c'è già, mi meraviglio che puoi scegliere.

Hello, Morde!
Hai valutato QT?
Genera codice multipiattaforma da linux agli smartphone, passando per 
windows.
Ha un ambiente di sviluppo (QTCreator) ben fatto.
Non � un giocattolo. Lo si vede subito.
Per contro c'� da padroneggiarlo, bisogna spenderci qualche sera e qualche 
fine settimana.
Quello che parlava di vi mi ha fatto venire in mente un mio commilitone per 
il quale vi era l'editor migliore del mondo.
Gavettonato senza piet� dal primo all'ultimo giorno. Bei tempi.
With best regards, massimo riserbo.  E-mail: 
cli...@server.it

 Hai valutato QT?
Ecco questo non lo conoscevo, ed è proprio il feed che cercavo: gli dò 
un'occhiata ben volentieri.
grazie 1000
ciao :)
-- 
Morde

 Non è un giocattolo. Lo si vede subito.
Sto apprezzando la completezza del framework:
http://qt.nokia.com/products/library
e delle risorse nel sito web.
Sembra che sia robusto anche economicamente e che non si tratti di un 
framework destinato a sparire in qualche anno. Trovo molto interessante 
anche il discorso legato alla certificazione: in un futuro potrebbe 
rappresentare un plus per certi job.
Tu in quale campo hai lavorato con QT ?
Ciao
-- 
Morde

Hello, Morde!
 M> Tu in quale campo hai lavorato con QT ?
Ho appena iniziato. Diciamo pure che lo sto ancora valutando. Forse vale la 
pena spendere due parole. Andr� OT. Pazienza.
Ho programmato in C++ fino a qualche anno fa facendo pi� che altro dll di 
supporto ai prodotti della software house dove lavoro (software gestionali 
scritti per la maggior parte in Visualbasic). Poi, migliorate le performance 
dell'hardware, il C++ � stato progressivamente messo da parte.
Ho programmato anche (e tanto) in VB, ovviamente, e in VBA.
Poi, indipendentemente dalla software house mi sono messo a fare dei siti e 
quindi mi sono dedicato a php/html/css/javascript con l'idea, anche, di 
trovare nuovi sistemi per produrre software.
Esperienza senza dubbio interessante che mi ha insegnato alcune cose:
1 - programmare per il web � una faticaccia: a meno di non lavorare in 
staff, se devi fare tutto da solo ti tocca passare continuamente dal php 
all'html al javascript e non � un bel modo di lavorare. Per dire: devi 
continuamente cambiare linguaggio e ambiente di sviluppo a seconda se stai 
ragionando lato server o lato client e la colla in mezzo (l'http) � pi� 
scivolosa delle foglie bagnate.
2 - ci sono i framework, qualcuno � anche molto ben fatto, ma ti sembra di 
lavorare sempre sospeso sopra l'abisso. Commettere una leggerezza e trovarsi 
col sito che a tua insaputa manda in giro oscenit�. A me non � capitato ma 
so che succede.
Vedo delle tecnologie interessantissime nel mondo javascript (jquery-ui, 
json eccetera) ma  non si pu� scrivere un applicativo in javascript.
3 - scrivere un'applicazione gestionale basata sul web mi piacerebbe molto 
ma gli strumenti per farlo non mi sembrano ancora molto produttivi. 
Perlomeno per una piccola struttura. E francamente i risultati che vedo 
sfornare da software house (italiane) molto pi� grandi sembra che mi diano 
ragione.
Poi ci sono le simpatie personali:
A me Java non piace. Non lo riesco a leggere, ci ho provato diverse volte ma 
mi si annoda lo stomaco.
.NET, sembrerebbe un passaggio ovvio da chi arriva da VC/VB ma non � cos�. E 
poi, ancora una volta, significa restare legati a Windows. Una volta poteva 
essere una fisima ma ora lo � sempre meno. (mai provato a installare 
ubuntu?)
Con il C++ mi sento a casa. Lo capisco, lo leggo (voglio dire, leggo il 
codice e "vedo" quel che succede al software, credo che questo sia molto 
importante, avere dimestichezza col linguaggio, molto pi� utile del 
debugger).
In QT sono inciampato. Ma mi � sembrato avere ottime carte. Non ultimo il 
fatto che sia stato scelto da Nokia come piattaforma di sviluppo.
Poi, per dire, c'� la ricchezza delle librerie.
Un'ultima considerazione riguardo al linguaggio: pare che c++ sia tutt'altro 
che relegato ai sistemi operativi, un esempio � qt stesso, un altro � che 
(ho scoperto) per Google � il linguaggio di riferimento per tutti i 
progetti. Anche questo mi ha stupito non poco.
Mi scuso fin d'ora con quelli che ho annoiato.
Massimo


 
Ma veramente ha almeno 15 anni di sviluppo alle spalle, non credo
sparirï¿œ di qui al prossimo futuro.
ï¿œ un ottimo framework anche se ha due contro:
* utilizza un sistema di signal / slot non standard
* gli oggetti che ereditano da qobject necessitano di un moc, un
metacompilatore che ovviamente implementa signal slot, e alcune
informazioni di runtime ma introduce una certa complessitï¿œ nel costruire
le build incrementali (anche se per build non sofisticate il qmake va
piï¿œ che bene)
* tende (per ragioni storiche) a duplicare alcune funzioni della
libreria standard come stringhe o collection.
ma molti pro:
gestione crossplatfrom di:
* gui
* network
* canvas opengl
* thread
* accesso a vari db
* un architettura a plugin
* completamente basata su eventi, segnali e connessioni.
* ï¿œ uno dei gui toolkit consigliati da Bjarne Stroustrup.
altri vantaggi (non da poco)
un periodico online che contiene articoli approfondimenti
(
http://doc.trolltech.com/qq/
)
e numerosissimi libri. (ï¿œ uno dei framework c++ con piï¿œ libri in assoluto.)
micheg

 libreria standard come stringhe o collection.
Poco male, imho: dal momento in cui sceglierï¿œ di adottare questo 
framework, non vedo ragioni per non utilizzare le sue classi anche se 
duplicano classi standard.
Grazie per il prezioso feedback :)
ciao
-- 
Morde

 
no infatti non ï¿œ un problema, altri framework (tipo wxwidgets) alla fine
fanno lo stesso (pure coi tipi base... tipo wxint32 o per gli oggetti
esempio wxstring simile a std:string)
Inoltre grazie al native sdk un gruppo di volontari sta portando qt su
android.

* utilizza un sistema di signal / slot non standard
quel "non standard" mi ha dato ad intendere che quindi esisterebbe uno 
standard per far comunicare due oggetti tra loro, e mi chiedevo di 
quale standard si tratta. Io in windows faccio uso dei messaggi, per 
far comunicare una classe con l'altra.
Conosco le tecniche di IPC ma pensavo che tu ti riferrissi ad una 
comunicazione di piï¿œ basso livello, tra due classi all'interno di un 
framework, non tra processi/thread differenti su macchine differenti o 
su reti distribuiti.
Ciao
-- 
Morde


Non standard perchï¿œ ï¿œ necessario un metacompilatore (il famigerato moc)
per produrre codice C++ standard. ex:
comunicazione.h
====================================
#ifndef COM_H
#define COM_H
#include <QWidget>
#include <QApplication>
#include <QPushButton>
#include <QLabel>
class Comunicazione : public QWidget
{
  Q_OBJECT
  public:
    Comunicazione(QWidget *parent = 0);
// slot non standard
// verrï¿œ generato dal moc codice c++ standard
  private slots:
    void OnPlus();
    void OnMinus();
  private:
    QLabel *label;
};
#endif
comunicazione.cxx
====================================
// nota: non ï¿œ necessario deallocare gli oggetti vbox, plus, minux, label
// perchï¿œ quando un widget viene deallocato i figli vengono
automaticamente deallocati
// per semplicitï¿œ alloco la finestra principale sullo stack in modo da avere
// una gestione della memoria semi automatica
#include "comunicazione.h"
#include <QVBoxLayout>
Comunicazione::Comunicazione(QWidget *parent) : QWidget(parent)
{
  // tutti gli oggetti disposti verticalmente
  QVBoxLayout *vbox = new QVBoxLayout(this);
  vbox->setSpacing(1);
  QPushButton *plus = new QPushButton("+", this);
  QPushButton *minus = new QPushButton("-", this);
  label = new QLabel("0", this);
  vbox->addWidget(plus);
  vbox->addWidget(minus);
  vbox->addWidget(label);
  setLayout(vbox);
  // comunicazione tra oggetti con il metodo signal slot
  // aggancio il segnale click che verrï¿œ emesso ogni qualvolta
  // si fa click sul bottone
  // allo slot corrispondente
  connect(plus, SIGNAL(clicked()), this, SLOT(OnPlus()));
  connect(minus, SIGNAL(clicked()), this, SLOT(OnMinus()));
}
// due semlici slot
// gli slot sono funzioni membro void che eseguono un'azione
// vengono chiamati automaticamente
void Comunicazione::OnPlus()
{
  int val = label->text().toInt();
  val++;
  label->setText(QString::number(val));
}
void Comunicazione::OnMinus()
{
  int val = label->text().toInt();
  val--;
  label->setText(QString::number(val));
}
main.cxx
====================================
// un widget che rappresenta il contenuto dell'applicazione
// usato come windows principale
// allocato sullo stac e autogestito
#include "comunicazione.h"
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  Comunicazione finestra;
  finestra.setWindowTitle("Communicate");
  finestra.show();
  return app.exec();
}
Per compilazione salvare dentro una directory com e poi:
qmake -project .
qmake
make
testato su opensuse 11.1
la compilazione chiama in causa in automatico il meta object compiler
che crea un file:
moc_comunicazione.cpp
che contiene codice C++ standard per la gestione signals, slots, qobject
noi questi file moc_ non li mettiamo in cvs perchï¿œ autogenerati (non
vanno mai toccati a mano), questo meccanismo di gestione comunicazione
ed eventi ï¿œ non standard e puï¿œ piacere o meno...
Spero di essermi spiegato

 Spero di essermi spiegato
Altrochï¿œ :-) il tuo esempio ï¿œ perfetto, e i commenti sono molto utili.
Nella doc ufficiale ho poi approfondito
http://doc.qt.nokia.com/4.6/moc.html
e ritengo il meta compilatore credi degli effetti collaterali a mio 
dire trascurabili, visto quello che si puï¿œ arrivare a fare con questo 
framework.
Ciao
-- 
Morde


si condivido al 100%

 ragione.
Probabilmente perche' gli strumenti che conosci sono quelli vecchi di 10
anni. Il che spiega perche' non siano produttivi. 
-- 
-riko

Hello, Enrico!
 EF> Probabilmente perche' gli strumenti che conosci sono quelli vecchi di
 EF> 10 anni. Il che spiega perche' non siano produttivi.
Interessanti osservazioni le tue.
Peccato che continuare qui la discussione delle tecnologie web sia veramente 
troppo ot.


 troppo ot.
Un forward su it.comp.programmare e' possibile. Se invece ti
interessasse approfondire il discorso su una specifica (e.g., python) il
ng appropriato si puo' usare. Etc etc etc.
-- 
-riko