Newsgroup: it.comp.lang.c++
Titolo: neofita accetta consigli

qualche tempo fa ho deciso di imparare a programmare in c++.
ho scartato vari linguaggi tipo vb perché da quello che ho capito è legato a
win32 e ovviamente non è potente come il c++; java, anche se non sono
sicuro, l'ho scartato perché mi è sembrato di capire che è molto più lento
rispetto al c++ e che comunque una volta imparato il c++ il passo a java
sarebbe risultato molto più agevole che non il contrario; il c da quello che
ho letto non serve per imparare il c++, o meglio era quasi inutile imparare
il c per poi passare al c++; altri tipo pascal, delphi, ecc non li ho
neanche presi in considerazione.
fatta la scelta ho rimediato una guida sul c++ in formato cartaceo, che per
fortuna non ho pagato (42 euro), ma la trovo eccessivamente sintetico e
molti esercizi sono sbagliati (e questo per un neofita è una grossa perdita
di tempo perché prima di capire che erano errori di stampa ti senti inetto,
imbecille, dato che pensavo di non essere neanche capace di copiare, e che
era meglio darsi al giardinaggio). poi ne ho trovate diverse in formato
elettronico ma al momento le uso solo dove non arrivo con la cartacea.
come compilatore ed editor ho optato sul dev in quanto è gratis, per il
momento non mi ha dato problemi (immagino anche perché gli esercizi che ora
faccio non è che sfruttino a pieno il linguaggio)
premetto che vengo dal gwbasic (quello con i numeri di riga) e poi sono anni
che avevo lasciato perdere la programmazione, comunque in un paio di
settimane nel tempo libero ho iniziato a studiare il c++. sto per
intraprendere il viaggio nel mondo delle classi e fino a qui non ho trovato
particolari problemi addirittura sorprendendomi nell'usare i famigerati
puntatori con semplicità.
e qui sono i problemi. so di non essere un genio anche se sono portato per
le materie matematico\logiche e quindi l'impressione che tutto scorresse
troppo facilmente mi ha fatto porre delle domande a cui non so dare,
ovviamente, le risposte.
quand'è che incontrerò i problemi seri? fino a qui sto procedendo bene o ho
dimenticato, sbagliato qualcosa? una volta appresi i rudimenti teorici del
c++ come metterli in pratica? dove trovare materiale in italiano (parlo un
pò d'inglese ma ad affrontare testi tecnici in inglese ce ne passa visto che
anche con quelli in italiano...:)? esistono strade nettamente diverse (tipo
programmazione giochi o server o sistemi ecc) o un buon programmatore
potenzialmente può fare tutto ma magari preferisce specializzarsi su di un
certo utilizzo della programmazione?
premetto che sono due o tre settimane che seguo questo ng e altri inerenti
al c++. ho letto anche qualche faq ma non ho trovato o quello che letto non
ha risolto i miei dubbi o colmato lacune in quanto i documenti conteneva
nozioni troppo empiriche (tipo: è così e basta) o spesso sommarie (tipo:
questo codice fa questo. e il perché lo fa?).
ringrazio anticipatamente tutti, in particolar modo quelli che con la
propria esperienza mi daranno delle dritte per superare questo momento di
stasi.

jdipik wrote:
 > qualche tempo fa ho deciso di imparare a programmare in c++. ho
 > scartato vari linguaggi tipo vb perché da quello che ho capito è legato
 >  a win32 e ovviamente non è potente come il c++; java, anche se non
 > sono sicuro, l'ho scartato perché mi è sembrato di capire che è molto
 > più lento rispetto al c++ e che comunque una volta imparato il c++ il
 > passo a java sarebbe risultato molto più agevole che non il contrario;
 > il c da quello che ho letto non serve per imparare il c++, o meglio era
 >  quasi inutile imparare il c per poi passare al c++; altri tipo pascal,
 >  delphi, ecc non li ho neanche presi in considerazione.
Io non so se avrei fatto la tua stessa scelta. Certo, se vieni dal gwbasic
come dici sotto cos'è una variabile lo saprai, però io avrei preferito
imparare con qualcosa di più semplice, tipo il Pascal. Anche solo per la
sintassi che ha, chiarissima e decisamente molto semplice.
 > premetto che vengo dal gwbasic (quello con i numeri di riga) e poi sono
 >  anni che avevo lasciato perdere la programmazione, comunque in un paio
 >  di settimane nel tempo libero ho iniziato a studiare il c++. sto per
 > intraprendere il viaggio nel mondo delle classi e fino a qui non ho
 > trovato particolari problemi addirittura sorprendendomi nell'usare i
 > famigerati puntatori con semplicità.
Non sono così difficili ;-) ti servirà solo un po' di pratica.
 > quand'è che incontrerò i problemi seri?
Non avere fretta di incontrarli... ;-)
 > fino a qui sto procedendo bene o ho dimenticato, sbagliato qualcosa?
 > una volta appresi i rudimenti teorici del c++ come metterli in pratica?
 >
Prova a scrivere qualche programmino man mano più complesso... Che so,
parti da qualcosa che conta il numero di parole in un file, poi passa a
elaborarlo... per esempio potresti sviluppare un sistema che permetta di
ricercare una data stringa in un file, supportando operatori AND e OR (PS:
quest'esercizio lo trovi sul libro di Lippman - Lajoe, se non sbaglio si
intitola "Corso di programmazione C++"). Se proprio non hai idee vai sul
sito delle ioi (mi sembra 
www.unimi.dsi.it
), troverai molti esercizi
interessanti per trovare i problemi seri ;-)
 > esistono strade nettamente diverse (tipo programmazione giochi o server
 > sistemi ecc) o un buon programmatore potenzialmente può fare tutto ma
 > magari preferisce specializzarsi su di un certo utilizzo della
 > programmazione?
Questo dipende da te. Certo, quando si và oltre i programmi giocattolo 
bisogna studiare un bel po' (esempio: per scrivere un bel videogioco 
servono anni ed anni di studio), ma questo dipende da settore a settore.
 > premetto che sono due o tre settimane che seguo questo ng e altri
 > inerenti al c++. ho letto anche qualche faq ma non ho trovato o quello
 > che letto non ha risolto i miei dubbi o colmato lacune in quanto i
 > documenti conteneva nozioni troppo empiriche (tipo: è così e basta) o
 > spesso sommarie (tipo: questo codice fa questo. e il perché lo fa?).
A questo puoi rimediare leggendoti qualcuno dei migliori libri sul C++, 
quali il Lippman, lo Stroustrup (dal titolo "C++"), o anche "Thinking in 
C++" di Bruce Eckel, ottimo e gratis (mentre gli altri due si aggirano sui 
45 euro) ma in inglese.
 > ringrazio anticipatamente tutti, in particolar modo quelli che con la
 > propria esperienza mi daranno delle dritte per superare questo momento
 > di stasi.
Se hai dubbi su qualche specifico pezzo di codice, posta pure qui. Usenet 
serve proprio a questo ;-) Ciao.
-- 
Andrea Bergia - studente
Linux Registred User #281550

 della programmazione? 
E' normale che un programmatore si specializzi, per amore o per forza, per 
passione o per lavoro, se vuoi per mancanza di tempo o di forze. 

 anche in modo procedurale, java è più *rigoroso*.
Sostituirei "meno" con "anche"
e
"rigoroso" con "limitato" :)
Ciao
--
Luigi
--
void f (OS x) {while (x.getbugs() > 0); destroy(earth);};
f (windows); // Meno male!

 "rigoroso" con "limitato" :)
Dipende dagli aspetti e dai punti di vista, ovvio.

 Se hai dubbi su qualche specifico pezzo di codice, posta pure qui. Usenet
mi hai scritto che tu al mio posto avresti preferito iniziare con un
linguaggio più semplice ed è proprio questo il problema: trovo il c++
abbastanza semplice e non ritenendomi un genio e leggendo le critiche a
questo linguaggio che lo collocano fra i più ostici ho pensato che forse
stavo sbagliando qualcosa. c'è da dire che probabilmente quello che ho
studiato fino ad ora è semplice e che i problemi ci saranno più avanti ma
pensavo di trovare più difficoltà all'inizio.
grazie del consiglio che mi dai nel provare nuovi esercizi, anch'io ci avevo
pensato e fatto, ma dovendo confrontare il mio sorgente con la soluzione
proposta in un libro mi sembrava poco costruttivo. ma se mi dici che sul ng
non dovrò penarmi a trovare che mi insulta per il mio codice offrendomi,
spiegandomi, alternative sta sicuro ne approfitterò.
ovviamente gli esercizi mi servono per stimolare le conoscenze acquisite e
so che fare ad esempio l'esercizio che mi suggerisci (  idealmente già so
come fare quando ho tempo provo a buttare giù il codice) è semplice ma come
dicevo i problemi seri ci saranno quando gli algoritmi o le funzioni, le
classi ecc dovranno svolgere compiti alquanto complicati.
per spiegarmi meglio i problemi sulla progettazione di software penso che si
trovano con qualsiasi linguaggio che si usa credevo solo di trovare più
problemi (sin dall'inizio) anche con la comprensione della teoria del c++,
ma come dicevamo c'è ancora poca carne sul fuoco.
ti ringrazio per i suggerimenti e per il link ci farò un giro

 passione o per lavoro, se vuoi per mancanza di tempo o di forze.
ok, ma c'è un punto comune dove comunque si arriva? e se si, si può
stabilire qual'è? ma forse è una domanda idiota :)
ciao e grazie

 interessanti per trovare i problemi seri ;-)
il sito non esiste.
dimenticavo cosa sono le "ioi"?

 più avanti ma pensavo di trovare più difficoltà all'inizio.
Mi ero segnato una frase di Alex Martelli:
"Il C++ e` troppo complesso per gli esseri umani"
scritta su questo NG (se cerchi su 
groups.google.com
 trovi il thread)
Di che razza fai parte?!?!? :-)))))))))))))
A parte gli scherzi, mi associo al consiglio di Andrea Bergia:
comprati un libro (lo Stroustrup preferibilmente) e guardati
il linguaggio in maniera un po' approfondita.
Poi vai con la fantasia e vedrai che i problemi salteranno fuori...
ciao
--
Gerolamo

 quand'è che incontrerò i problemi seri?
	Programmando, non studiando in astratto. Consiglio: vedi il linguaggio
come strumento per farci qualcosa. Solo cosi' usciranno fuori per bene
certe questioni che sulla carta non si erano mostrate appieno. I
template per esempio possono sembrare facili a leggerli, poi appena vuoi
fare una cosa non banale con specializzazioni parziali ecc. ecc.
iniziano ad incrociartisi gli occhi...
_dave_

 ti leghi alla piattaforma stessa.
falso. Esistono ottimi esempi di linguaggi assolutamente portabili; uno 
su tutti, Python.
 
ciao Anto
-- 
Antonio Cuni, 20 anni, studente
Brainbench C++ Master: 4.73, higher than 99% of all previous test takers.
C Language: 3.79, higher than 92% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 il sito non esiste.
Scusa, avevo sbagliato. Eccoti quello giusto. 
http://ioi.dsi.unimi.it/problemi/
Ciao.
 > dimenticavo cosa sono le "ioi"?
Olimpiadi Internazionali di Informatica. Sono in pratica una gara di 
programmazione. Prima di tutto ti fai le selezioni di istituto, poi le 
regionali, poi le italiane, poi se sei davvero bravo le internazionali. 
Trovi comunque tutto sul sito.


 pensavo di trovare più difficoltà all'inizio.
Il C++ non è così difficile! Certo, il Pascal può essere molto più 
semplice, ma è decisamente meno potente (Pascal Pascal, non Object 
Pascal). Però considera alcune cose del C++:
- programmazione ad oggetti, con ereditarietà multipla, virtuale, privata
- template
- overload di operatori
- una libreria standard da paura, IMHO superata solo dal Java (perchè 
include una libreria grafica ottima come le Swing)
Sono tutte cose non molto semplici, che richiedono la loro bella dose di 
tempo per essere padroneggiate, ma che fanno del C++ il migliore 
linguaggio esistente! ;-)


 mi serve solo un problema da risolvere e tanta logica e fantasia?
Tanta tanta tanta pratica. E leggere tanto. E' l'unica cosa che ti può 
dare l'esperienza necessaria per scrivere programmi robusti e facili da 
modificare.


 su tutti, Python.
Parlavo ovviamente di C/C++ e dello sforzo di programmare in modo portabile 
con questi linguaggi.
Che esistano altri linguaggi portabili non lo nego.