Newsgroup: it.comp.lang.c++
Titolo: Libri e tutorial C++

Programmo da un po' in C, e vorrei iniziare a studiare il C++.
Ho trovato online Thinking in C++, che mi sembra grandioso, più un tutorial
di Paolo Marotta (anche questo mi sembra fatto bene), e infine uno di Sharam
Hekmat. Che ne pensate?
Conoscete poi qualche buon testo, aggiornato, in versione cartacea (anche in
inglese)? (così come ho fatto col C, mi interessa conoscere i diversi
approcci agli stessi problemi...).
Comunque, il C++ è stato standardizzato? Mi capita spesso di leggere sulle
riviste specializzate cose tipo "...ma non tutti i compilatori lo
supportano", o "...non sempre in C++ si può portare su un altro compilatore
un programma pensato per un altro".
Grazie
--
Marco Iannaccone
"Questa è una nave moderna, ma ha un nome antico e glorioso...
Trattala come una signora e ti riporterà sempre a casa"

 un programma pensato per un altro".
Il C++ è stato recentemente standardizzato ma nessu  compilatore supporta
ancora pienamente lo standard, compreso il tanto decantato Visual C++ ( la
Microsoft insiste che supporta pienamente lo standard ma non è così ).
Ciao.


 Microsoft insiste che supporta pienamente lo standard ma non è così ).
Non conosco nessuna affermazione della MS relativa al fatto che VC++
gia` oggi "supporti pienamente lo standard" (ne avrebbero perse molte
altre di cause, se facessero affermazioni del genere...:-).  L'_intenzione_
e`, un giorno, chissa` quando, di arrivare al 100% dello standard; ma
di strada ne manca.
Persino il KCC, probabilmente il piu` vicino al pieno standard, documenta le
proprie ancora esistenti mancanze a riguardo (sono abbastanza piccole
che si puo` sperare che KCC arrivi a "100% standard" entro l'anno, direi).
Alex

 un programma pensato per un altro".
Se il programma fosse stato scritto in C++ standard (avendo cura di
evitare tutti i costrutti undefined e implementation defined) e il
compilatore fosse 100% compliant non ci sarebbero problemi.
EMG

 che si puo` sperare che KCC arrivi a "100% standard" entro l'anno, direi).
Cos'è il KCC? Dove lo posso trovare?
Comunque, quello che trovo sui libri, tipo C++ Primer e Thinking in C++ è il
C++ standard, no?
Cosa esattamente non segue lo standard nei compilatori odierni? Mi sembra di
aver capito che il C++ è molto più "esteso" rispetto al C...
Grazie,


 compilatore fosse 100% compliant non ci sarebbero problemi.
Ma in pratica alcuni compilatori implementano cose che non fanno parte dello
standard?
Per quanto riguarda l'aderenza allo standard da perate dei compilatori,
dovrebbe essere solo una questione di tempo, no?
Come sono messi DJGPP, gcc(x linux) e VisualC++?


 di strada ne manca.
Di recente ho visitati il sito sul Visual C++ in Microsoft Italia e diceva
così:
Visual C++, lo strumento più produttivo del linguaggio C++, supporta la più
recente versione standard di tale potente linguaggio ...
Oltre a ciò il sito si concludeva così:
Per chi volesse approfondire l'uso del linguaggio Visual C++ sono
disponibili i seguenti libri Microsoft Press ........
Sono andato a vedere la descrizione del 1 libro presentato, eccola:
Tale manuale  insegna a utilizzare nei dettagli il più potente linguaggio
mai creato, Visual C++. In ogni settore è richiesta la conoscenza di tale
linguaggio che offre la piena proffessionalità a chi lo conosce.
Il libero tratterà inizialmente alcuni aspetti del C++ evidenziando i vari
errori che sono stati superati in  VC++.....
Dalle castronate che ho letto non ho più voluto continuare.
Arrivederci Alex.

 Come sono messi DJGPP, gcc(x linux) e VisualC++?
Il DJGPP è ancora un po' carente per quello che riguarda la libreria
standard ma come compilatore mi sembra che stia abbastanza bene.
EMG

 aver capito che il C++ è molto più "esteso" rispetto al C...
Infatti, C++ e` molto esteso, e appunto per questo coprirlo al 100% non e`
facile.  Prendendo ad esempio KCC, che documenta accuratamente le sue
deviazioni dallo standard (e ormai sono rimaste poche e strane), vediamo
alla url 
http://www.kai.com/C_plus_plus/v3.4/doc/standard.htm
 delle
mancanze del tipo: non funziona correttamente il binding dei nomi nei
template secondo l'algoritmo "bi-fase" che lo standard specifica; non si
possono specializzare template con parametri template; mancano le classi
della libreria standard che sono template con parametro-tipo wchar_t (cioe`
manca il supporto standard Unicode, che per certe cose puo` essere LA
esigenza principale...); non puoi dichiarare un template extern; eccetera.
Altri compilatori, altre deficienze.  Ad esempio Visual C++ l'Unicode lo
supporta bene, pero` sul binding e specializzazioni dei template e` ancora
piu` debole, e (cosa quasi incredibile visto che dovrebbe essere invece
cosi`
facile da implementare) non supporta l'override di metodi virtuali con tipi
covarianti di ritorno.  Il compilatore gratuito gcc e` particolarmente
debole,
invece, in termini di libreria standard (varie deviazioni dallo standard,
per
non parlare di prestazioni mediocri).  E via frignando.
Alex

 Come sono messi DJGPP, gcc(x linux) e VisualC++?
gcc (in tutte le versioni) di estensioni un tempo ne aveva parecchie, ma
credo che la maggior parte (almeno di quelle non-standard) oggi sia
disabilitata se usi gli switch giusti (-Wall -pedantic -ansi o roba del
genere).
VC++ ha anch'esso uno switch per disabilitare le estensioni ma in pratica
e` poco usabile perche` gli header di Windows stesso (windows.h e cio`
che include) quelle estensioni le usano eccome.  Purtroppo c'e` una certa
"contaminazione" fra C e C++, perche la gran parte di quelle "estensioni"
sono estensioni solo al *C*, mentre in C++ sono standard (come l'uso di
struct e union anonime come membri di un'altra struct).  Fortunatamente
le sue estensioni (al C++) tendono ad essere 'pulite', cioe` standard
compliant, come sopra.  Se usi SOLO rigorosamente header standard e
eviti tutti gli identificatori che iniziano con _ puoi essere piuttosto
tranquillo
che stai scrivendo applicazioni standard (naturalmente dovranno essere
"applicazioni di console", cioe` in formato testo, perche` altro lo standard
non prevede; se vuoi scrivere applicazioni con interfaccia grafica,
qualsiasi
sia l'ambiente, dovrai comunque usare come minimo header non-standard).
Se questa domanda e` intesa, non relativamente alle estensioni, ma anche
ad altre deviazioni dallo standard, vedi il mio post di pochi minuti fa per
vari
altri esempi.
Alex

Dimenticavo, dell'introduzione al C++ su ioProgrammo e del corso su DEV che
ne pensate?


ne pensate?
Considerato i 2 numeri di ioprogramma che tempo fa acquistai, ti
sconsiglio di farci affidamento. La mia opinione che tale
"rivista" e` solo carta sprecata (purtroppo).
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

<QUALUNQUIST MODE ON>
Non conosco la serie di articoli su ioProgrammo di cui parli ma credo che
l'unico pregio di quella rivista siano i CD allegati che di fanno
risparmiare ora di DL al modem (sempre che tu abbia bisogno di quella roba).
Quei 5-6 numeri che ho comprato alcuni contenevano palesi errori (dei quali
ho potuto discutere con gli autori ed il redattore), altri si mantenevano ad
un anonimo livello di superficialità.
<QUALUNQUIST MODE OFF>
PS: siete mai riusciti a trovare in edicola C++Report - a Torino per esempio
?
---
Livio Cavallo

per non parlare di prestazioni mediocri).  E via frignando.
Prestazioni mediocri riguardo al compilatore o alla libreria stessa?
La STLport e' un rimedio sufficiente a entrambi i problemi?
Hai idea di dove trovare benchmark significativi tra i compilatori
piu' diffusi?
Grazie.
-- 
"Non e` bello cio` che e` bello ma e` bello cio` che piace ... a ME!"
Massimo Lauria a.k.a. Gargamella on Usenet
mailto: 
garga...@mclink.it
Proud member of: NonSense Delivering Service

 piu' diffusi?
http://www.google.com/search?q=benchmark+c%2B%2B
rivela oltre 10,000 hit.  I primi 10 sembrano tutti rilevanti
alla domanda da te posta.  Buona lettura:-).
Alex

 Grazie
