Newsgroup: it.comp.lang.c++
Titolo: Richiesta informazioni

Salve a tutti!
Sono nuovo del NG e vorrei sapere una cosa
Stavo pensando di acquistare il visual c++ della ms e mi piacerebbe sapere
se qualcuno mi puo illuminare sui difetti e i pregi di questo compilatore.
La domanda č rivolta anche a coloro che non hanno questo compilatore ma ad
esempio quello della borland o altro permettendomi di fare una scelta piu
oculata potendo confrontare i vari prodotti.
grazie a tutti e ciao.

se qualcuno mi puo illuminare sui difetti e i pregi di questo compilatore.
Il pregio principale, secondo me, e` la sua vasta diffusione, che
fa si` che si trovino, commercialmente e/o gratis in rete, ogni tipo
di supporti, add-in, manuali, codice per arricchirlo, eccetera.
In termini di vicinanza allo Standard non e` granche`; piu` o meno
sullo stesso piano di C++ Builder 3, un po' meglio del vecchio
egcs 1.0.2, ma inferiore, su questo piano, al nuovo egcs 1.1.
(EGCS e` la versione piu` recente del compilatore gratuito GCC,
in tutte le sue versioni, comprese quelle per Windows).  Come
_libreria_ standard in particolare, non c'e` male, visto che l'hanno
comprata da P.J. Plauger, segretario del comitato librerie nel
corso della standardizzazione, e il sito 
www.dinkumware.com
pubblica sempre i bug fix man mano che escono; tuttavia, le
prestazioni di questa libreria sono si` buone per alcune cose
(stringhe, contenitori, algoritmi), ma un po' scarse per l'I/O.
A parte le librerie standard C++, Visual C++ e` in generale
piuttosto buono come ottimizzazione, e in particolare come
capacita` di generare codice compatto; per quel poco che
ho provato sembra meglio di C++ Builder 3, e molto meglio
di egcs, anche se il singolo compilatore migliore da questo
specifico punto di vista resta il vecchio Watcom (o il nuovo
KCC della Kai and Associates, ma e` molto caro).
Come ambiente di sviluppo, considerando naturalmente
l'attuale versione, cioe` VC++6.0, non e` affatto male;
l'help in linea e` in pratica tutta l'MSDN con un programma
di consultazione piuttosto buono; la "intellisense" molto
spesso risparmia di consultare i manuali per qualche
dettaglio di una chiamata; il debugger e` in grado di dare
visione simbolica di un mucchio di cose, tipo GUID,
messaggi di Windows, eccetera -- decisamente niente
male, e nel complesso superiore agli altri ambienti che
ho provato.  Ci sono un mucchio di "wizard" e altri
svariati strumentini a corredo, alcuni molto utili.
Le due librerie/framework a corredo sono molto diverse
tra di loro...
MFC e` una libreria con un lungo (ma forse non molto
glorioso:-) passato, che da' la netta impressione da un
paio d'anni a questa parte di essere avviata verso la
"stabilizzazione"... bug fix, qualche piccola aggiunta, ma
ormai nulla di drasticamente nuovo, anche perche` non
sarebbe facile rinnovarla mantenendo i grossi vincoli
di compatibilita` che la sua veneranda eta` e la sua
grande diffusione le impongono.  In informatica, di
solito, "stabile" non e` lontano da "morto", e infatti non
siamo in pochi a chiederci quanto lunga ancora sara`
la vita "attiva" di MFC.  Impossibilitata ad usare in modo
"strutturale" molte delle feature del C++ (perche` non
c'erano quando nacque), legata da discutibili scelte
strutturali e stilistiche a idiomi tutt'altro che validi (sono
molte le variabili d'istanza "public", ad esempio), e
oltretutto handicappata dall'avere "due anime" molto
diverse, quella di "guscio sottile" di comodita` e di
produttivita` sopra le API nude, che e` lo spirito in cui
nacque, e quella di "framework verace" con tanto di
modellazione document/view, a cui fu presto "virata".
Le due anime non convivono poi tanto bene, e spesso
l'utente e` obbligato a fare grossi "salti di paradigma"
per svolgere i vari compiti nei modi migliori.
Cosi` avendone detto "peste e corna"... ammetto che
alla fin fine e` lo strumento che si usa piu` spesso,
perche`, pur con tutti i vari difetti suddetti, e` pur
sempre un mucchio di funzionalita` preconfezionata,
ormai profondamente testata e ben debuggata (gli
anni a qualcosa servono:-), ragionevolmente ben
supportata inoltre dai tanti "wizard" a corredo.  Ottimi
testi come il Prosise, e il Wingo e Shepherd, e vari
componenti add-on sia gratis sia commerciali, sono
di ulteriore, grande aiuto.  Anche la maggior parte di
chi, come me, e` perfettamente a suo agio anche con
le "API nude", e/o, sempre come me, detesta alcune
delle scelte di progetto della MFC e sogna a volte un
framework nuovo e rifatto su tutt'altre basi, finisce
pero` per lo piu` a basare sulle MFC gran parte del
proprio lavoro.  [In un certo senso e` come la libreria
standard C, che non si puo` non detestare per tante
cose -- dalle balordaggini per cui l'argomento FILE*
nelle funzioni di stdio va a volte in cima a volte in
fondo, al grande difetto progettuale delle strcpy ecc
che tornano inutilmente il puntatore all'"inizio" della
stringa passata, ecc ecc -- ma nondimeno si finisce
per usare in quasi tutti i programmi C...].
ATL, come anticipavo, e` assai diversa.  Mentre
MFC copre "un po' di tutto", con grande orientamento
alle GUI, ATL e` specializzata per scrivere server
COM (Component Object Model) e componenti
di vario tipo che usano COM, come ad esempio i
controlli Active/X.  Per le GUI, offre poco o nulla
sopra le API nude (quel poco, tuttavia, e` "leggero"
e molto ben fatto).  L'enfasi e` tutta sulle prestazioni,
soprattutto la piccolezza del codice, e si usano
senza patemi d'animo i costrutti C++ piu` strani
e avanzati (ancora una volta: con maestria!).  Non
e` facile da usare, sopratutto all'inizio (i wizard, da
soli, aiutano, soprattutto con VC++6.0, ma non 
bastano... bisogna anche _capirle_, le cose!), ma
ripaga molto bene l'investimento di studiarla a
fondo (per chi gia` conosca C++ e COM... se no,
meglio prima studiarsi questi due argomenti!-).
Personalmente, considero ATL uno dei grandi
punti di forza di VC++; e` scaricabile anche per
conto suo, come parte del Platform Development
Kit, ma naturalmente in questo modo non si hanno
i wizard eccetera (e bisogna vedere quanto bene
la "reggano", poi, altri compilatori).
Varie altre estensioni, come il non-standard #import
e le varie estensioni che si porta dietro (molte di
esse simili a quelle di recenti release C++ Borland),
completano il quadro.  Il #import, ahime` non standard,
e` altrettanto comodo nella scrittura di clienti COM,
quanto l'ATL lo e` nella scrittura di serventi.
Il peggior difetto di VC++ e` probabilmente quella
"V"... non e` per nulla un ambiente "visuale", in termini
di costruzione facile di GUI -- su questo, resta mille
miglia indietro a C++Builder 3, Delphi, Visual Basic,
Visual J++, e tanti altri strumenti.  Le GUI "dipinte"
visualmente hanno parecchi limiti, il settaggio delle
proprieta` degli oggetti e` rudimentale e scomodo,
e bisogna far pesante uso di wizard e/o codifiche
manuali varie per avere cose un minimo funzionanti.
Personalmente, tutto considerato, non mi pare che
in assoluto si possa sbagliare poi di tanto, ne` a
scegliere Visual C++ 6, ne` a scegliere Borland
(Inprise) C++ Builder 3; sono due ambienti validi,
con punti di forza e debolezze in parte "speculari".
egcs 1.1 ha l'enorme vantaggio del costo (zero...
difficile batterlo!) e della vicinanza allo standard;
e` scarso come IDE (so che ne esistono, ma non
li ho provati) e strumenti generali d'appoggio, e
soffre in termini di ottimizzazione, soprattutto per
le eccessive quantita` di codice che genera.  Ma
nel complesso, e` anch'esso uno strumento assai
usabile, per chi sopporti di lavorare a "linea di
comandi" piu` che a GUI ovvero si trovi a proprio
agio con le IDE disponibili (di solito e` il debugger
a dare piu` vantaggi in un'IDE, e quindi problemi in
sua mancanza); di "framework" di classi, gratuiti
e validi, se ne trovano in rete parecchi.  So che non
e` a tutt'oggi facilissimo usare egcs per fare DLL,
anche se cio` _e`_ possibile.
PowerSoft, Supercede, Comeau, KAI, e altri
produttori ancora, hanno altri compilatori C++ di
un qualche interesse, ma non tanto diffusi come
questi tre, e, sotto una certa soglia, la "rarita`"
di un compilatore finisce per essere a sua volta
uno svantaggio... niente o pochi libri in merito,
pochi utenti dello stesso strumento con cui poter
scambiare aiuto, consigli, e idee, ecc ecc.
Alex

 e validi, se ne trovano in rete parecchi.
Secondo te quali sono i migliori framework di classi gratuiti per
Windows 95/NT ?
Grazie.
Roberto

Windows 95/NT ?
Difficile dirlo...!  Per principianti, forse V, che si trova a
http://www.objectcentral.com/
; per esperti, forse VWCL,
che si trova a 
http://www.barnstormer-software.com/vwcl/
,
e (come wxWin, e altri) ha il vantaggio di portabilita`
verso Unix/Linux/ecc.  Merita pero` anche prendere
in considerazione le assai diverse opinioni della
Reliable Software, Inc, espresse ad esempio alla
URL 
http://www.relisoft.com/libs.html
 -- tutto il sito
della Relisoft e` pieno di interessanti tutorial ed
esempi su come scriversi esattamente le classi che
servono per incapsulare le API di Windows, e sul
perche` e percome (secondo loro) e` meglio non
affisarsi a framework pre-costruiti ("precotti":-).
Tornando, comunque, ai framework "precotti" e gratis,
un buon elenco, assai completo, se ne trova alla URL:
http://www.geocities.com/SiliconValley/Vista/7184/guitool.html
Alex