# [OT] Imparare il c++: di cosa ho bisogno

## Raffo

Premetto che ho fatto una ricerca nel forum ed ho trovato topic simili, ma sto proprio messo male e ho bisogno di un consiglio su tutto   :Embarassed: 

vorrei imparare il c++ o il c (consigliatemi voi da dove iniziare...) e vorrei sapere di cosa ho bisogno: quale compilatore, programmi utili, ecc...vorrei anche sapere quale libro mi consigliate, ho letto parecchi titoli qui sul forum, ma sinceramente nn saprei scegliere...grazie anticipatamente di tutto!!

----------

## marco86

Come libri io ti posso consigliare

//EDIT:correggo,andavo a memoria...

 *Quote:*   

> 
> 
> C# 
> 
> Programmare in C++
> ...

 

io mi sono trovato molto bene con quel libro...

Come programmi non so, per quel poco che faccio io mi scrivo il file con Kwrite, lo salvo con estensione c e lo compilo con 

```

gcc file.c -o nome_eseguibile

```

Questa è una soluzione basso livello...  :Embarassed: 

cerca nel forum il topic di Ranzomaze sulla programmazione, credo che ti dia spunto sui programmi da usare...  :Wink: 

----------

## MonsterMord

Io ho comperato questo:

C++ La Guida Completa 4/ed

di: Herbert Schildt

ISBN: 88 386 4326-1,

Prezzo: Euro 52,00,

Pub Date: maggio 2003,

http://www.catalogo.mcgraw-hill.it/catLibro.asp?item_id=1526

L'unico difetto è il prezzo, per il resto è il top.

Parte con il C (circa 260pg) poi passa al C++, in questo modo capisci bene dove finisce uno e dove inizia l'altro.

Per il resto con gento hai già tutto (gcc, g++)

Come editor scegli il tuo preferito (vi,emacs,nano,kate,gedit)

Puoi emergere kdevelop ma all'inizio non ti servirà.

----------

## marco86

Concorda che per iniziare hai già tutto quello che ti serve....

Ecco il link che ti dicevo, quello di randomaze..

----------

## Raffo

grazie mille, per i programmi come kdevelop ho tempo, se nn conosco il linguaggio ci faccio ben poco  :Very Happy: 

----------

## gcarlo

se l'inglese per te non è un problema prova questo.

E' uno dei migliori libri che ho letto sul C++

Dal sito puoi scaricarlo in formato elettronico ma, se cerchi,  in alcune librerie lo puoi trovare anche in formato cartaceo....

Ciao 

Giancarlo

----------

## Sparker

Thinking in c++ si trova anche tradotto in italiano (il primo libro)

Se mi mandi un PM te lo posso mandare in formato pdf (o ps) con 2 pagine per foglio, sono 3Mb

----------

## neon

 *Sparker wrote:*   

> Thinking in c++ si trova anche tradotto in italiano (il primo libro)

 

Wow, non lo sapevo... ecco il link

----------

## .:deadhead:.

Dunque... Tutti si sono lanciati a consigliarti il C++, ma io per iniziare ti consiglio il C. Poi eventualmente passerai al C++. C è il papà del C++ e ,per iniziare, la programmazione ad oggetti non serve a niente.

1) Deitel & Deitel - C corso completo di programmazione, Apogeo

     Sti qua hanno scritto un libro per ogni linguaggio di programmazione, fatto davvero bene, ad ogni fine capitolo esercizi sia con soluzione che senza e un po' di algoritmi spiegati...

2) Kernighan and Ritchie - The C programming language

     Sti due sono i genitori del linguaggio C, meglio di così cosa vuoi  :Smile:  Se interessa lo posso "prestare elettronicamente"  :Very Happy:  contattatemi in pvt se siete interessati.

Quando poi vorrai passare al C++:

1) Deitel & Deitel - C++ corso completo di programmazione, Apogeo [ti avevo detto che hanno scritto per un botto di linguaggi di programmazione  :Very Happy:  ]

2) Thinking in C++ come ti hanno già suggerito

-1) Evita i libri di Schildt. Contengono degli errori e sbaglia a spiegare alcuni concetti. Se poi lo trovo ti posto anche il link di una stoncatoura fatta dalla comunità/organizzazione/società degli sviluppatori di C/C++ con esempi.

Comunque se cerchi con groups.google sul ng italiano relativo al linguaggio C vedrai come sia una domanda da stra-FAQ

----------

## X-Drum

 *Raffo wrote:*   

> quale compilatore, 

 

QUALE????? :Shocked: 

"il compilatore" ovvero GCC   :Cool: 

che è quello che del resto usi quando aggiorni il tuo sistema.....

----------

## fedeliallalinea

Io inizierei a studiare prima il c che il c++ almeno per capire che sono i puntatori.

----------

## randomaze

 *sisma86 wrote:*   

> 
> 
> ```
> 
> gcc file.c -o nome_eseguibile
> ...

 

quello va bene per il C standard... per chi vuole usare il C++ é meglio usare g++ su files con estensione .cpp  :Wink: 

@Raffo il link alla traduzione del libro di Erkel si trova anche nel mio post che ti ha indicato sisma86.

----------

## n3m0

```
void imparaCpp() {

   Studia il paradigma di programmazione ad oggetti;

   Studia il linguaggio (per questo ti hanno consigliato già molti testi buoni);

   Esercitati;

}

int main() {

  if (gia conosci la programmazione imperativa e soprattutto i puntatori) {

     imparaCpp();

  }

  else {

     impara la programmazione imperativa;

     impara C;

     imparaCpp();  

  }

  return 0;

}

```

----------

## .:deadhead:.

 *n3m0 wrote:*   

> programmazione imperativa 

  Me ignurant...  :Embarassed:  che cosa vuol dire

----------

## n3m0

 *.:deadhead:. wrote:*   

>  *n3m0 wrote:*   programmazione imperativa   Me ignurant...  che cosa vuol dire

 

Per farla breve, il paradigma di programmazione imperativo è quello che apprendi quando ti insegnano per la prima volta a programmare (scuola o università che sia). O almeno così dovrebbe essere (e così è di solito).

Linguaggi come il C++, Java, C#, etc. sono linguaggi che nascono per implementare il paradigma di programmazione ad oggetti.

In letteratura spesso il paradigma OOP è considerato un'estensione del paradigma imperativo...anche se con questa definizione non sono mai stato del tutto d'accordo.

La differenza consiste principalmente nella progettazione, anche se non si riduce solo a questo.

----------

## Raffo

appena possibile prendo il libro sul c di deitel & deitel...grazie cmq di tutti i consigli   :Wink: 

----------

## Ibanez-RgX

 *fedeliallalinea wrote:*   

> Io inizierei a studiare prima il c che il c++ almeno per capire che sono i puntatori.

 

Non è strettamente necessario, in fondo quasi tutti i libri che ho visto spiegano i puntatori, alcuni anche discretamente bene. Se gli serve il c++ gli conviene partire da quello, tanto nessun libro inizia con gli oggetti, ma partono dalla programmazione strutturata (e quindi c e c++ così diferiscono davvero di poco). Anche se concordo sul fatto che studiando il c si acquisiscono ottime basi, molto più che con altri linguaggi IMHO

----------

## X-Drum

 *fedeliallalinea wrote:*   

> Io inizierei a studiare prima il c che il c++ almeno per capire che sono i puntatori.

 

Non è strettamente necessario, in fondo quasi tutti i libri che ho visto spiegano i puntatori,[/quote]

il discorso di fedele è giusto dal punto di vista didattico, perche' se questa è la sua prima esperienza in materia di programmazione iniziare direttamente con un linguaggio OO è una bella botta....

ANSI C sarebbe propedeutico in questo caso, dopodiche' passare dal C al C++ sarebbe piu' semplice

----------

## n3m0

 *X-Drum wrote:*   

> se questa è la sua prima esperienza in materia di programmazione iniziare direttamente con un linguaggio OO è una bella botta....

 

Ma soprattutto, IMHO, rimarrebbe con delle lacune...

Questo e' l'unico aspetto che mi fa essere d'accordo coll'affermazione "il paradigma OOP è un'estensione di quello imperativo"...

Se impara direttametne quello OOP non lo capirà mai veramente a fondo e inoltre rimarra' con "pezzi" in meno.

Sempre tutto IMHO.

----------

## X-Drum

 *n3m0 wrote:*   

> *.*

 

quoto e concordo appieno con quello detto da n3m0

----------

## randomaze

 *X-Drum wrote:*   

> ANSI C sarebbe propedeutico in questo caso, dopodiche' passare dal C al C++ sarebbe piu' semplice

 

Dissento un poco.

Se vuole il C++ e non sa programmare ad oggetti la cosa migliore é che inizi direttamente dal C++ e da qualche testo che tratti gli oggetti... partendo dall'ANSI C il rischio é nel non capire la differenza tra il lavorare solo con oggetti e usare un'approccio misto.

Per i puntatori... secondo me come concetto non soi poi difficili, la difficoltà al limite é nell'usarli, ma da quel punto di vista usare il C++ agevola moltissimo rispetto al C liscio.

Tutto ovviamente IMHO.

----------

## shev

 *n3m0 wrote:*   

> Per farla breve, il paradigma di programmazione imperativo è quello che apprendi quando ti insegnano per la prima volta a programmare (scuola o università che sia). O almeno così dovrebbe essere (e così è di solito)

 

 :Laughing:  Definizione rigorosamente scientifica!

Quindi se ti insegnano ocaml per primo, questo si basa su paradigma imperativo anzichè funzionale? O java imperativo anzichè ad oggetti? (scherzo ovviamente, ho capito cosa intendevi)  :Razz: 

Un paio di definizioni un pochino meno generali:

- Paradigma imperativo: il programma è costituito da una sequenza di istruzioni il cui effetto è quello di modificare il contenuto della memoria dell'elaboratore o di determinare le modalità di esecuzione di altre istruzioni; i tre concetti caratteristici della programmazione imperativa: comando, stato della memoria e ciclo. 

- Paradigma orientato agli oggetti: il programma è considerato l'effetto dell'interazione di un insieme di oggetti (insiemi di dati e  algoritmi che manipolano questi dati) che comunicano con l'esterno mediante messaggi. Assumono rilevanza concetti quali incapsulamento, ereditarietà [si possono costruire oggetti che ereditano le caratteristiche di un'altro] e polimorfismo.

Cmq il mio consiglio è di cominciare da c, con la bibbia di K&R che ti hanno già citato sopra (il libro dei due creatori del linguaggio). Una volta che ti sei fatto una bella infarinatura sul c, poi puoi passare al c++. Se proprio vuoi passare direttamente al c++ allora usa i due libri di deitel&deitel, sono molto semplici da seguire, chiari e completi.

My 2 cents

----------

## n3m0

 *Shev wrote:*   

>  Definizione rigorosamente scientifica!

 

[OT]

E vabbè, per una volta che non sono stato pignolo  :Razz: 

Buona cmq.

[/OT]

----------

## Raffo

grazie per i suggerimenti, ormai ho deciso di iniziare dal c cmq, le cose o si fanno bene o nn si fanno per niente, io la vedo così  :Very Happy: 

ma il libro 2) Kernighan and Ritchie - The C programming language è in inglese o in italiano?? deadhead, lo hai in formato html o pdf??

----------

## randomaze

 *Raffo wrote:*   

> Kernighan and Ritchie - The C programming language

 

Ovvamente in entrambe le lingue, é noto che la bibbia é il libro più tradotto al mondo  :Rolling Eyes: 

----------

## shev

 *randomaze wrote:*   

>  *Raffo wrote:*   Kernighan and Ritchie - The C programming language 
> 
> Ovvamente in entrambe le lingue, é noto che la bibbia é il libro più tradotto al mondo 

 

Tra l'altro, la casa editrice che lo traduceva in origine è fallita, pertanto in italiano tale libro era divenuto introvabile. Dico "era" perchè ora la Pearson se n'è fatta carico e proprio qualche mese fa ha pubblicato la sua versione tradotta in italiano, che a prima vista m'è parsa fatta decisamente bene (tranne i soliti termini tradotti forzatamente in italiano e sfumature simili, anche se sono cmq poche rispetto alla media).

----------

## Ibanez-RgX

 *Shev wrote:*   

> 
> 
> Tra l'altro, la casa editrice che lo traduceva in origine è fallita, pertanto in italiano tale libro era divenuto introvabile. Dico "era" perchè ora la Pearson se n'è fatta carico e proprio qualche mese fa ha pubblicato la sua versione tradotta in italiano, che a prima vista m'è parsa fatta decisamente bene (tranne i soliti termini tradotti forzatamente in italiano e sfumature simili, anche se sono cmq poche rispetto alla media).

 

Termini tradotti forzatamente li aveva anche l'altra  :Smile:  Almeno questa sembra avere un'impaginazione più decente (dico sembra perchè l'ho visto e sfogliato un pò in libreria)

@raffo la verione pdf o html credo si trovi solo in inglese, che se x te non è un problema te la consiglio vivamente.

----------

## Raffo

l'inglese lo capisco abbastanza decentemente, ma ho paura di imbattermi in termini tecnici difficili...penso che la scaricherò cmq, un tentativo si può fare...

----------

## randomaze

 *randomaze wrote:*   

> Ovvamente in entrambe le lingue, é noto che la bibbia é il libro più tradotto al mondo 

 

Mi cito per segnalare che ne esiste anche una versione in Cinese, una in Braille e un audio-book, come si vede nalla home del libro: http://cm.bell-labs.com/cm/cs/cbook/

Tra l'altro per gli appassionati di archeologia come me segnalo che in quella pagina c'é il link alla Storia dello sviluppo del C.

----------

## randomaze

 *Raffo wrote:*   

> l'inglese lo capisco abbastanza decentemente, ma ho paura di imbattermi in termini tecnici difficili...penso che la scaricherò cmq, un tentativo si può fare...

 

Se devo essere sincero alcuni passi del libro potrebbero essere ostici per un neofita anche in una lingua conosciuta.

----------

## Ibanez-RgX

 *randomaze wrote:*   

> 
> 
> Se devo essere sincero alcuni passi del libro potrebbero essere ostici per un neofita anche in una lingua conosciuta.

 

Beh non è un libro per neofiti. Io ci ho imparato il C su quello, ma non ero a digiuno di programmazione. Consiglierei di usare un'altro libro per iniziare come ad esempio il Deitel, e quando si ha una certa dimistichezza con la programmazione strutturata passare al K&R. (capire i puntatori dal K&R se non ne sai assolutamente nulla è un suicidio  :Smile:  )

----------

## .:deadhead:.

Fate riferimento al punto 2 del mio post se siete in cerca di documentazione[/url]

----------

## randomaze

 *.:deadhead:. wrote:*   

> Dunque io ho una versione in PDF in inglese ce si può scaricare 

 

Damanda pittoresca: é legale?

----------

## fedeliallalinea

 *randomaze wrote:*   

>  *.:deadhead:. wrote:*   Dunque io ho una versione in PDF in inglese ce si può scaricare  
> 
> Damanda pittoresca: é legale?

 

Se non e' cosi' prego a chi a messo il link di rimuoverlo

----------

## mambro

Io quello che so l'ho imparato da tricky C..  http://ada2.unipv.it/biblio/trickyc/trkcfrm.htm

Pensate sia valido? Secondo me è spiegato molto bene, anche per chi è a digiuno di programmazione   :Wink: 

----------

## .:deadhead:.

 *mambro wrote:*   

> Io quello che so l'ho imparato da tricky C..  http://ada2.unipv.it/biblio/trickyc/trkcfrm.htm
> 
> Pensate sia valido? Secondo me è spiegato molto bene, anche per chi è a digiuno di programmazione  

  Scritto fluente ma contiene errori. E' purtroppo lo scotto da pagare a volte con la documentazione che si trova online...

----------

## fedeliallalinea

 *.:deadhead:. wrote:*   

> @fedeli: ^ così va bene  

 

Non e' comunque il massimo parlare si cose poco legali soprattutto anche perche' il forum si trova su una macchina in america. Sarebbe meglio solo dire chi vuole qualche pdf mi contatti in pm o mail

----------

## randomaze

 *fedeliallalinea wrote:*   

> Non e' comunque il massimo parlare si cose poco legali soprattutto anche perche' il forum si trova su una macchina in america. 

 

Il che incasina un poco le cose, infatti il server negli USA é sottoposto al DMCA, ma chi posta dall'Italia é sottoposto alla legge Italiana.... ergo é bene evitare di violare le leggi di entrambe le nazioni.

----------

## mambro

 *.:deadhead:. wrote:*   

>  *mambro wrote:*   Io quello che so l'ho imparato da tricky C..  http://ada2.unipv.it/biblio/trickyc/trkcfrm.htm
> 
> Pensate sia valido? Secondo me è spiegato molto bene, anche per chi è a digiuno di programmazione    Scritto fluente ma contiene errori. E' purtroppo lo scotto da pagare a volte con la documentazione che si trova online...

 

Be fino adesso nn mi sono accorto di nulla, sarò io   :Razz:   Cmq + che altro è molto vecchio, quando spiega le variabile register ad esempio parla di registri di processori 086 286...

----------

