Salve,
innanzitutto Le chiedo scusa per questa e-mail diretta, ma ho da poco letto la rubrica Q&A del numero 105 di
CP e sono a dir poco sobbalzato sulla sedia!
Come avrà sicuramente capito dal subject l'argomento del contendere riguarda la sfida VC++ / C++Builder (tra
l'altro C++ Builder non è solo Borland C++, arrivato alla 5.5, ma anche C++ Builder 5.0, quindi integrazione
con la VCL, IDE RAD, migliore (di VC++) integrazione con la STL, ...); avendo utilizzato entrambi i compilatori
(anche se sicuramente non al pieno delle loro capacità) propendo più per un diplomatico "entrambi hanno
tanto punti di forza quanto talloni di
Achille". Il suo
giudizio mi sembra però categorico!
Potrebbe articolare maggiormente le ragioni che La hanno spinta ad un giudizio così sferzante e profondamente
negativo nei confronti del prodotto di Borland?
Sono infatti molto incuriosito da una risposta più articolata che suppongo scaturirà da una esperienza sul
campo sicuramente maggiore della mia.
Fino a poco tempo fa, avendo lavorato solo con il VC++ e avendone provati i limiti, credevo che il C++ Builder
fosse un paradiso. Avendo oggi avuto l'opportunità di provare anche quest'ultimo sono maggiormente disilluso,
ma non così categorico come Lei; credo che il maggior punto di forza del VC++ sia la sua diffusione legata a
filo doppio con il fatto di essere prodotto dalla stessa software house che produce il sistema operativo sul
quale gira.
Grazie in anticipo,
Gianni Luciani.
Spettabile redazione di CP,
da diversi anni sono un abbonato alle Vostre riviste (CP e DEV) che giudico ottime.
Purtroppo recentemente mi è capitato di leggere, nella rubrica "AI LETTORI - Q&A" a pag. 95 di CP
105 di Settembre 2001, la risposta che il vostro collaboratore Davide Infantino (che ho spesso stimato) ha dato
alla richiesta del lettore Massimiliano Fratantuono circa la scelta di un buon compilatore C++ in ambiente
Windows.
Senza riportare l'intera risposta, si legge, circa a metà, la seguente frase: "il Builder mi sembra un
pessimo compilatore...".
Io non conosco i citati gcc e VC++ (che sicuramente saranno ottimi compilatori), quindi non mi permetto di
giudicarli ma conosco abbastanza bene il compilatore Borland allegato al C++ Buider in quanto utilizzo tale
ambiente da oltre quattro anni (a partire dalla versione 1 per arrivare alla 5) e vi assicuro che non mi sono
mai, e sottolineo la parola mai, trovato in difficoltà sia per ciò che riguarda la compilazione sia per ciò
che riguarda la compatibilità con lo standard ANSI.
Quando ho letto la risposta del sig. Infantino, sono rimasto dapprima esterrefatto e poi amareggiato da quella
frase in quanto, sebbene abbia espresso un giudizio personale (almeno spero), ritengo che non sia corretto
esprimere un giudizio così lapidario circa un compilatore prodotto da una società nota in tutto il mondo e
sicuramente molto diffuso.
Se questa opinione fosse stata espressa fra amici o colleghi non ci sarebbe stato nulla di male ma purtroppo e'
stata espressa nelle pagine di una rivista (e ciò rende responsabile l’intero Gruppo Editoriale Infomedia),
e, quel che è peggio, in risposta alla richiesta di un lettore che sicuramente si farà una pessima (ed
ingiustificata) opinione circa il compilatore Borland.
Mi auguro che altri lettori abbiano notato ciò e spero che episodi del genere non si verifichino più.
Ringrazio per l’attenzione e porgo distinti saluti.
Roberto Bigliardi
Risponde Davide Infantino
L'SDK è pensato per il VC++ e questo è un dato di fatto (non piacevole). Ci sono varie cose
che del Borland non mi piacciono. Innanzitutto non aderisce pienamente allo standard C++, ma questo succede
anche con gli altri compilatori: ad esempio, nessuno accetta l'esoterica export nei template. Il compilatore
Comau ha annunciato che presto sarà aderente allo standard al 100%. Credo che non siano nemmeno tanti i
compilatori C aderenti allo standard C99.
Non mi piacciono i metodi di ottimizzazione del compilatore e in alcuni casi il codice prodotto è maggiore
rispetto a quello di altri compilatori:
//classe di fatto vuota
class Papero{};
//GCC e VC++
sizeof Papero == 1
//BC 5.5
sizeof Papero == 8
Questo mi fa sospettare che il compilatore usi in modo improprio le possibilità delle VTable.
Non mi sono trovato per niente bene con il codice assembler inline del Borland.
Malgrado il VC++ 6 gestisca pessimamente i template e anche nella versione 7 non sia aderente al 100% allo
standard C++, ha il pregio di essere della stessa casa che costruisce il sistema operativo, di permettere
regolazioni molto fini nella creazione di un eseguibile, di essere sufficientemente stabile e di ottimizzare in
modo non troppo peggiore dal campione Intel.
Il GCC è anche un cross compiler, è stabile e ha un interessante sistema di profiling.
Questa è la mia opinione, maturata con la mia esperienza. Forse sbagliata, perché no. Magari domani dei fatti
nuovi mi faranno cambiare idea.
Saluti