Newsgroup: it.comp.lang.c++
Titolo: [NOFLAME]Streams si o no?

Ciao,
sto trafficando col C++ da un pò di tempo ormai, e di questo linguaggio 
soprattutto una cosa mi sta sull'anima, anche se bene o male (OK, male) 
li uso: gli stream.
Credevo fosse un problema mio, nel senso che fossi troppo testone.
Poi, qualche giorno fa, consultando per la N-esima volta "Thinking in 
C++" ho notato che agli stream dedica due-tre paginette appena. E anche 
Stroustrup sul suo librone tratta gli stream MOOLTO al volo.
Così mi sono chiesto: ma come, gli stream sono l'alfa e l'omega dell'I/O 
in C++ e i "sacri testi" li liquidano così in fretta??? Eppure non sono 
mica tanto semplici, anzi...
E mi è venuto il sospetto: ma non sarà che gli stream non siano poi 
tutta 'sta gran trovata? Se li ignorano in questo modo, come dei parenti 
scomodi di cui c'è da vergognarsi, non vorrà mica dire che... gli stream 
sono una mezza schifezza e che era meglio l'I/O classico del C???

 sono una mezza schifezza e che era meglio l'I/O classico del C???
Probabilmente i testi citati parlano poco di stream perche` trattano del 
cuore del linguaggio c++.
Alla fine della fiera <iostream> fa` parte di una libreria: la libreria 
standard c++, quindi se vuoi maggiori dettagli sull'argomento e` meglio 
rivolgersi a testi specifici per quella libreria.
Basta una ricerca su amazon per farsi un'idea di che libri esistono 
sull'argomento.
Io per esempio su safari ho trovato questo:
Un po` datato.
C++ Standard Library: A Tutorial and Reference, The
By Nicolai M. Josuttis
...............................................
Publisher: Addison Wesley Professional
Pub Date: August 12, 1999
Print ISBN-10: 0-201-37926-0
Print ISBN-13: 978-0-201-37926-6
Pages: 832
Questo ha 18 pagine sull'argomento I/O lib
C++ Primer, Fourth Edition
By Stanley B. Lippman, Josée Lajoie, Barbara E. Moo
...............................................
Publisher: Addison Wesley Professional
Pub Date: February 14, 2005
Print ISBN-10: 0-201-72148-1
Print ISBN-13: 978-0-201-72148-5
Pages: 912
Ciao,
Cesare

 sono una mezza schifezza e che era meglio l'I/O classico del C???
Non sara' invece che non ti sei impegnato abbastanza? Iostream e'
certamente una libreria piu' complessa di stdio, ma e' meglio
strutturata e type safe.
Ciao,
Nicola

 Pages: 832
In realta' dal momento che nel frattempo lo standard non e' cambiato in
maniera sostanziale questo libro e' perfettamente aggiornato ed e' pure
un ottimo testo.
Ciao,
Nicola

 dedicano all'argomento almeno una cinquantina di pagine.
Nella TERZA, però... e io ho solo la seconda, e solo dello stroustrup. 
Oh povero me, non ho comprato la terza edizione dello Stroustrup nè il 
Lippman/Lajoie :-(
Ho visto le recensioni dei testi che citi, e in effetti mi sarebbero 
utili. Ma sul C++ ho già due libri (pagati fior di lirette, quando 
ancora si usavano) e mi girano le scatole al pensiero di dovermene 
comprare altri. Cavolo ma non basta mai?...

 sull'argomento.
Per amazon e i libri, vale qui quello che ho risposto a Nicola Musatti: 
se uno vuole programmare sul serio non dovrebbe fare altro che comprare 
libri. Non solo il linguaggio, ma Windows, COM, protocolli, XML, Java, 
J2EE, ODBC & ADO... in dieci anni che programmo ho speso un mezzo 
capitale, ho la libreria strapiena e ancora non c'è tutto quello che mi 
servirebbe. Ne ho piene le scatole di comprare libri :-(
Per quanto riguarda la libreria standard e il cuore del linguaggio: 
saranno pure due cose diverse, ma alla fine se togli la libreria al C e 
al C++ è come se tagliassi le gambe a un uomo, quindi trattare il 
linguaggio senza la libreria mi pare parecchio irrealistico (oppure 
molto da teorici, che è probabilmente il vero motivo). Da quel che dice 
Nicola, alla fine se ne sono resi conto anche loro e infatti _ora_ la 
trattano, almeno un pò.
Comunque: d'accordo che <iostream> è parte della libreria, ma anche 
<stdio> lo è: perchè i due sistemi di I/O non vanno d'accordo fra loro?


No, non basta mai. D'altro canto i libri di cui parli hanno piu' o meno
15 anni, che nel nostro settore sono un'eternita'. Se non altro del
Lippman sono uscite 4 edizioni in vent'anni, se tu cercassi un libro di
livello corrispondente su Java probabilmente scopriresti che ne sono
uscite 8 in dieci anni...
Ciao,
Nicola

 sono una mezza schifezza e che era meglio l'I/O classico del C???
Assolutamente no: gli stream C++ non sono una "mezza schifezza", sono 
invece uno strumento molto potente.
Tanto per dirne una, con gli stream puoi sempre usare la notazione con 
l'operatore << e non devi stare a ricordarti %d %f o %<??> del C. 
Inoltre li puoi usare anche per tue classi, basta definire in overload 
operator<<.
Ci sono tanti altri vantaggi, come ad esempio il fatto che eviti i 
potenziali buffer overflow tipici di un sprintf().
Certo, gli stream C++ sono piu' complessi della stdio.h del C, ma se 
impari ad usarli ti ritroverai con un potente strumento nelle tue mani.
Ciao