Newsgroup: it.comp.lang.c++
Titolo: Stroustrup

Per chi vuole imparare il linguaggio C++, non avendo alcuna base a livello
di programmazione, il manuale di Stroustrup va' bene?


Assolutamente no.
Libri in Italiano:
"C++ Fondamenti di programmazione - Terza Edizione" + "C++ Tecniche
Avanzate di programmazione" entrambi Deitel&Deitel - APOGEO
"C++ Corso completo di programmazione" Lippmann-Laoje - AddisonWesley
Libri in Inglese
"C++ How to program - Fourth edition" Deitel&DEitel - Prantice Hall
"Beginning C++ - third edition" Ivorn Horton - Apress
Io ti consiglierei quest'ultimo se non hai problemi di lingua.
Altrmenti prendi quello Deitel in italiano. Successivamente puoi
comprare lo Strousup

Io uso il Deitel in italiano ed č ottimo!


Il Deitel parte dalle basi del C++? Ti spiega come gira un programma in C++?
Insomma non vorrei acquistare un libro che dia per scontate alcune
nozioni di base.

 Avanzate di programmazione" entrambi Deitel&Deitel - APOGEO
Io ho usato qusti 2 libri e devo dire che sono perfetti per chi inizia e non
solo.
Spiega per bene e chiaramente le basi del linguaggio e tratta con chiarezza
anche argomenti avanzati.
Lo Stroustrup dopo pranzo proprio non lo digerisco. Mal di testa assicurato
:-)
Scherzo!!! E' la bibbia del c++.

Francesco ha scritto nel messaggio:

Ti spiega tutto ma prioprio tutto. Ti spiega perfino come e quando č nato il
linguaggio.
Spiega le basi del linguaggio: Il sottinsieme C del C++. Poi spiega cos'č
una variabile, come si compila un listato, come vengono memorizzati i dati
nella memoria, ecc...

 di programmazione, il manuale di Stroustrup va' bene?
Ciao,
come ti è già stato detto il testo di Stroustrup va bene solo dopo avere già
imparato da un manuale che affronta lo studio del C++ dalla base con un
metodo incrementale. se fai una ricerca con chiave "Stroustrup" sugli
articoli di questo Gruppo potrai leggere maggiori informazioni sul perchè ti
viene sconsigliato in questa fase di apprendimento iniziale.
Ti è stato consigliato il Deitel&Deitel (anzi entrambi i due testi) ma devo
dire che non sono d'accordo. A suo tempo (non molto a dire la verità) ho
iniziato lo studio del C++ proprio da quelli, li conosco bene e li
consigliavo fino a non molto tempo fa quando già avevo anche affrontato lo
studio di testi più avanzati come quello in oggetto e altri ancora.
Credevo fossero i migliori solo perchè non avevo avuto voglia di leggere
altri testi di base non dovendomene più servire. Quando poi ho visto che
venivano spesso sconsigliati con le più diverse motivazioni ho voluto dare
un'occhiata ad altri e ho scoperto che si può insegnare il C++ in modo più
rigoroso, avanzato e senza tralasciare parti importanti dello stesso anche
in un manuale di base.
Il discorso si applica specialmente ai due "Thinking in C++" di Bruce Eckel
che puoi trovare on-line e anche stampati su carta. Ti consiglio di leggere
in commenti dai lettori
all'indirizzo 
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
Avendo ormai letto parecchio sul C++ e in generale sulla programmazione
(Assembly, Ada, Python eccetera) ti posso assicurare che IMHO questi testi
offrono quanto di meglio un nuovissimo del C++ possa trovare per imparare da
zero. Lo stile è chiaro e professionale, gli argomenti sono trattati in modo
molto più attento e approfondito di quanto D&D facciano e gli esempi di
codice non sono mai banali. Ho paura che i D&D lascino un vuoto così ampio
al lo studente che una volta finito di leggerli avrà qualche serio problema
a passare facilmente a testi più avanzati.
Ti faccio solo l'esempio (assolutamente non esaustivo) sui "templates" che
sono alla base della cosidetta programmazione generica e usati ovunque in
C++. Ti basti pensare che la Libreria Standard si chiama appunto STL
(Standard Template Library) per capire quanto sono importanti. Bene su
questo argomento i D&D riservano ben 16 pagine (esercizi inclusi) del
secondo testo su un totale di 600+350 pagine circa dei due.
Va bene, direte che la qualità di un testo non si misura in metri, ma vi
assicuro che in quelle pagine manca un bel po' di importantissima roba;
provate a fare un raffronto diretto dei contenuti della sezione 16 del primo
TiC++ e della 3 del secondo TiC++ con le 16 paginette del D&D...
Per leggere i testi direttamente in linea:
http://www.oopweb.com/CPP/Documents/ThinkingInCpp1/VolumeFrames.html
http://www.oopweb.com/CPP/Documents/ThinkingInCpp2/VolumeFrames.html
Buon lavoro,
fabiomdf
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 TiC++ e della 3 del secondo TiC++ con le 16 paginette del D&D...
Bah, non saprei, alla fine penso sia solo questione di gusti.
Io ti posso dare una mia opinione che non è la "regola" da seguire. Per me
il D&D è un ottimo libro per cominciare, io l'ho letto e in seguito sono
passato allo Stroustrup senza difficoltà e non ho riscontrato tutti questi
errori.
Certo i mal di testa non mancavano mai quando finivo di leggere un cap.
dello Strous. ma era dovuto più per la concisa e illuminata maniera di
presentare i concetti che per i concetti stessi (che in effetti conoscevo
già).
Poi ripeto è questione di gusti :-)

 errori.
Sinceramente manco a me hanno parlato un gran che` bene di Deitel e Deitel.
Io ho iniziato con il Lippman-Lajole e poi ho affiancato lo Stroustrup, e
devo dire che non me ne sono pentito.
Deitel e deitel e` un po' molto semplicistico. Dal mio punto di vista tende
piu` a farti vedere un po' di cose, ti insegna il C++, ma non ti insegna a
programmare in C++. Non so se e` chiara la differenza fra le due cose.
-- 
RiK0



Si, secondo me invece è vero il contrario.
Ti impara le basi di programmazione usando il C++. Non approfondisce
in modo dettagliato il C++ ma ti da' le basi per passare ad un testo
che riguarda solo il C++.
Ovviamente la serie dei D&D è valida per chi è proprio a nudo di
programmazione. Per chi già conosce almeno i meccanismi di base il
lippmann è il piu' indicato.

 Si, secondo me invece è vero il contrario.
Allora come pensavo non sono stato chiaro nell'esprimere quello che volevo, 
poiche` hai detto una cosa molto simile a quella che intendevo (non che si 
evincesse particolarmente bene da quanto avevo scritto, btw).
La mia proposizione:
| ti insegna il C++, non ti insegna a programmare in C++
va intesa nel senso:
ti insegna a scrivere un programma in C++, ma non ti insegna 'il modo di 
programmare tipico del C++'. Chiaramente IMHO.
-- 
RiK0

Preso da:
http://www.accu.org/bookreviews/public/reviews/cp/cp003204.htm
[CUT]
What strikes me most about this book is that, in contrast to many other
texts revised or written after the release of the latest standard, Deitel
and Deitel appear to have made no effort to update their material to reflect
the new standard. Beyond this failing, I was more struck by a number of
inconsistencies in their approach to teaching C++ that are in defiance of
widely accepted standards and idioms and are downright dangerous. Perhaps in
a classroom setting, the errors of logic can be explained, and the student
will still benefit from the reading. Two examples:
Deitel and Deitel are the only authors of any programming language I have
read who argue against using zero based for loops, of the form: for(i = 0; i
!= boundary; ++i). Rather, their written preference is for the form: for(i =
1; i = boundary; i++). Throughout the book, however, when convenient, they
will use the zero based form, then switch, sometimes within the same
program, to a one-based form. What is the student to make of the
inconsistency?
The authors, to their credit, argue against the use of magic numbers when
coding, and they quite correctly point out that tracking down and changing
all the magic numbers in a program is both tedious and error prone. Again,
they cannot practice what they preach. Over and over, they publish code
samples that are full of magic numbers. This is simply sloppy work. What is
the lesson the student is supposed to take away from this sort of teaching?
There are numerous examples of unworkable code that has been copied line by
line from the second edition of the book (and maybe even the first). This is
code that will not run on all platforms. The authors either did not bother
to correct their errors, or they simply did not care. Worse, the creation of
platform dependent code flies in the face of the C++ goal of platform
independence.
Any pedagogy should be founded on the principle of "best practices". Sloppy
habits are all too easily acquired, and even more painful to correct. In
numerous instances, the authors have published code within the body of the
text which they will admit does not reflect the "most efficient" approach,
and they leave it to the student to discover the more efficient approach as
an exercise. This does the student a grave disservice. Teach most efficient
method and save the flawed implementation as an exercise to reinforce the
real lesson.
The pursuit of inconsistent and unworkable code, the promotion of coding
practices that really do fly in the face of common practice, and the
inattention to detail are sufficient to give this book a "Not Recommended"
rating. What really clinches it, however, is that there is so little
evidence that the authors have followed the developments of the standard and
the many advances, particularly in the area of memory management. The
chapter on strings never mentions the vector class. The chapter on classes
introduces the first class without providing for a destructor. This is
beyond not keeping up with developments in the language. I finally stopped
reading at this point: such an omission marked the book as fatal.
Whereas the ideal approach would introduce the standard libraries and the
STL early and often and use these to demonstrate their advantages, the
authors build a foundation without these very valuable, no, important,
"flying buttresses". Rather they save any coverage of the STL for a chapter
tagged on to the end of the book. As with their use of flawed algorithms,
they leave it for the student to work out for himself or herself how to
incorporate this new material into the nearly 900 pages of material that
preceded it.
Do not buy this book, and if someone tries to give you a copy decline,
politely, then firmly. You will learn here not so much what to do, as you
will learn practices that you will spend double the time learning to undo.
Java
[\CUT]
Bah, sinceramente penso che l'autore di questo articolo si sia limitato a
giudicare la sola metodologia di insegnamento del testo dimenticando che il
libro è per chi proprio non sa nulla di programmazione. Quelle che fa sono
valutazioni soggettive, il metodo di insegnamento può piacere o meno,
questione di gusti. Io da questo libro ho imparato le basi del c++ e quando
l'ho fatto ero completamente a digiuno di qualsiasi concetto di
programmazione.
Poi si attacca al fatto che si usano cicli for a volte a base 0 e altre a
base 1.
NO COMMENT!
Dice che ci sono cattive metodologie di programmazione e codice non conforme
allo standard.
DOVE? se ci sono è per spiegare concetti di difficile comprensione dai
principianti ma viene sempre sottolineato il fatto che si tratta di una
pratica non usuale.
Ammette pure di aver smesso di leggere il libro a metà (capitolo sulle
classi).
NO COMMENT!

On Thu, 23 Dec 2004 11:58:32 GMT, "IndieAlex"
<indieale...@TOGLIMIvirgilio.it> wrote:
[CUT]
Ma l'Accu è il male :P io personalmente eviterei di prendere l'Accu a
riferimento, meglio andare in libreria sfogliare il libro o al massimo
leggere i commenti sui vari newsgroups di chi ha preso quel libro.
Ripeto per me l'Accu ha una validità prossima al 30% :P

Loganino wrote:

Salve, sono nuovo sul newsgroup :) 
Io consiglio "Introduzione alla programmazione ed elementi di strutture dati
con il linguaggio C++" di Andrea Domenici e Graziano Frosini, casa editrice
"FrancoAngeli.   Questo è il testo che utilizziamo all'Università di Pisa,
Facoltà i Ingegneria Informatica, corso di Fondamenti di Informatica. Non
affronta la programmazione ad oggetti, ma arriva fino alle classi. Come
testo introduttivo io lo giudico buono, anche se non ha esercizi e dice le
cose basilari senza affrontare tutte le sfaccettature. Va bene per dare le
basi e poi si può usare qualche altro libro per approfondire.

 basi e poi si può usare qualche altro libro per approfondire.
Ciao,
Vuoi dire che quel testo sul C++ arriva a stento ad introdurre le Classi e
non procede con overloading degli operatori, ereditarietà, polimorfismo,
templates, Standard C++ Library, eccezioni e via dicendo?
Beh se il C++ si può imparare così, tanto vale studiare il C++ sull K&R (che
appunto non tratta di C++).
E poi un testo senza esercizi? Come si impara a programmare senza sporcarsi
le mani facendo esercizi?
Avrei chiuso il tuo post con "... Va bene per dare le basi e poi si può
usare qualche altro libro per imparare il C++."
Scusa non voglio essere polemico. E' solo che io ho cominciato a studiare il
C++ su un testo di pessima fattura (D&D), e meno male che avevo letto il K&R
2nd edition, e oggi considero una sacrosanta battaglia il tenere lontano da
tali nefandezze quanti più aspiranti programmatori posso raggiungere.
Oggi credo che sia più importante orientare un newbie su un buon testo che
rispondere a decine di domande tecniche sul C++.


fabiomdf wrote:

Intendevo dire che il libro include anche le classi(scusate se mi sono
espresso male). Gli argomenti trattati sono questi:
Sintassi del C++
Tipi Fondamentali
Ingresso e uscita dati
Istruzioni strutturate e di salto
Funzioni
Riferimenti e puntatori
Array
Strutture e unioni
Overloading
Gestione della memoria
Liste, Alberi
Visibilità, collegamento e moduli
Algoritmi di uso comune
Classi
Classi per l' ingresso e uscita
Le classi sono trattate bene. 
Questo libro è orientato ainewbie della programmazione e quindi non tratta a
fondo quelle che sono le caratteristiche più innovative, ma si limita
diciamo a parlare della parte "C" del C++. Poi "De gustibus non disputandum
est"  :)


Ciao,
Non volevo scrivere più niente su questo thread... Ma è più forte di me...
Rispondo anche ad altri che tirano in ballo i "gusti". Ma cosa c'entrano i
gusti? Stiamo parlando di "fiction"? Il C++ è un linguaggio di
programmazione con uno Standard che lo definisce in modo preciso e puntuale.
Il C++ è quello che è, e quindi se scrivi un testo che si prefigge di
insegnare il C++ ci devi mettere dentro TUTTO il C++ e ne devi parlare in
modo rigoroso (attinente ai fatti), completo e comprensibile.
Ammetto i gusti SOLO quando c'è da scegliere tra uno stile di presentazione
e scrittura e un altro. Possiamo scegliere con il nostro "gusto" tra i libri
che soddisfano i tre requisiti (rigoroso, completo e comprensibile), ma come
facciamo a dire che il mio "gusto" preferisce un testo che manca di parti
FONDAMENTALI della materia che vogliamo imparare?
A proposito di "rigorosità"... Che sono le "Classi per l'ingresso e
l'uscita"? Stiamo scherzando o siamo qui per aiutarci l'un l'altro davvero?
Saluti,


fabiomdf wrote:

Le classi per l' ingresso e uscita sono la classe istream e la classe
ostream, incluse in iostream.h
Non esiste un libro che tratta tutto il C++, neppure il Lippman o lo
Stroustrup trattano tutto il C++, in quanto è impossibile analizzare le
mille sfaccettature di un linguaggio complesso come il C++. 
(Lo so chi è Stroustrup)
-- 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Non è morto ciò che in eterno può attendere.
E con il passare di strani eoni anche la morte può morire
    H.P. Lovecraft
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 est"  :)
Me ne scuserai ma sono daccordo con fabio per quanto riguarda
l'apprendimento del c++ da un libro che tratta solo il sott'insieme c del
c++.
Tanto vale leggersi il K&R.
Il D&D tratta nella prima parte le basi del linguaggio e poi si addentra
nelle caratteristiche specifiche del c++ e lo fa con parole semplici. E'
forse questo il suo limite? Non lo so.
Per me è un gran bel libro per chi non sa niente di programmazione e vuole
farsi un'idea sulla programmazione ad oggetti. Riesce a dare delle buone
basi a chi in seguito avrà voglia di approfondire maggiormente.
Su questo io e fabio abbiamo opinioni diverse.
Ciao
Alex

 (Lo so chi è Stroustrup)
No. Ma complessivamente ne trattano la maggior parte, lo fanno con rigore e
chiarezza (anche se specie il secondo non con il tipo chiarezza che si
aspetta un newbie, piuttosto suppone la lettura da parte di chi sappia gia`
programmare).
Non solo, ti danno tutte le basi per affrontare un libro di sviluppo
avanzato (che so io... alcuni testi di Martin, per dire).
Poi il libro che tu indichi non lo conosco, non lo ho visto, e francamente
non lo avevo nemmeno sentito.
Personalmente il C++ lo ho imparato sul Lippman, poi mi sono letto anche lo
Stroustrup (che continuo a consultare per alcune delle mille sfaccettature
del linguaggio). Complessivamente ora mi piace di piu` il secondo, anche se
trovo il primo piu` adatto ad un principiante.
E posso dirti che per quello che vedo, uno che ha imparato sul Lippman (o
meglio, che lo ha assimilato, poi come primissimo testo puo` anche averne
avuto un altro) o sullo Stroustrup lo si riconosce. Ha gia` concetti di
strutturazione e di progettazione 'in modo C++' che altri testi IMHO non
danno, perche` preferiscono previlegiare altri aspetti.
-- 
[ RiK0                                ]
[ non credo negli schemi non vincenti ]
[ two is an odd prime number          ]


Infatti, ed è per questo che il D&D per me è un ottimo libro (per
iniziare!!!!).
1. Non ci sono errori di sintassi, nella metodologia di programmazione e
nella conformità allo standard
2. Di semplice comprensione
3. Tratta tutti gli argomenti anche se in maniera introduttiva
Se tutti riuscissimo a capire finalmente che il Deitel è un libro
introduttivo alla programmazione ad oggetti, capiremmo che tutto questo
discorso è inutile.
Se avessi letto all'inizio lo Stroustrup o "thinking in C++" avrei mollato
al primo capitolo, è questo che voglio dire.
Ciao
Alex