|
|
|
|
Strumenti |
12-07-2014, 12:44 | #1 |
Member
Iscritto dal: May 2014
Messaggi: 63
|
Miglior libro C/C++ 2014
Salve ragazzi, ho appena finito il 3° all'ITIS, indirizzo Informatica. Abbiamo fatto giusto le basi di C e C++, quindi in modo basiliare gli array mono-multi dimensionali, i puntatori a variabile, le string, le struct, ordinamento ingenuo e bubblesort, file sequenziali, binari ad eccesso diretto con record (con le differenze quando necessario tra C e C++ per questi argomenti). In più, overloading ed un'introduzione all'OOP per C++. Tutto ciò rappresenta quindi le "basi" di questi due linguaggi, quindi credo di non potermi definire un programmatore proprio alle prime armi.
So che di topic come questi ce ne sono a bizzeffe, ma c'è una confusione assurda su internet ed i casi variano a seconda della conoscenza di chi li apre. Perciò vi chiedo: quali sono secondo voi i migliori libri per iniziare a fare un po' più sul serio (quindi approfondire le basi innanzitutto, per poi in futuro passare alle cose intermedie ed avanzate)? Preferibilmente libri italiani, giusto per eliminare lo sforzo della traduzione, ma con l'inglese non mi faccio tanti problemi, perciò fate pure se necessario. I migliori sembrano essere i libri di C e C++ dei Deitel e le rispettive "bibbie" di K&R e di Stroustrup (anche in versione italiana). Voi che ne pensate? Ultima modifica di Hybr1d97 : 12-07-2014 alle 15:02. |
12-07-2014, 13:10 | #2 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
Consiglio: Accelerated C++, ottimo per cominciare a capire molti concetti chiave del linguaggio e le astrazioni che offre. Programming: Principles and Practice Using C++ è molto più completo e come livello di difficoltà è intermedio (lo usa Stroustrup, che lo ha anche scritto, per gli studenti del 1° anno di Computer Science). C'è anche A Tour of C++, 180 pagine, dev'essere abbastanza facile e da una buona panoramica del linguaggio, ma non l'ho letto e non saprei quanto è difficile. |
|
12-07-2014, 13:20 | #3 |
Member
Iscritto dal: May 2014
Messaggi: 63
|
Ma il fatto che i Deitel siano obsoleti è qualcosa che conta nel caso di C++? Insomma, non vorrei dire stupidaggini ma mi sembra sia un linguaggio abbastanza vecchio e che non si aggiorna ogni tot di tempo come invece fa Java
|
12-07-2014, 13:32 | #4 |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
E' proprio qui l'inghippo. Il C++ da anni è in via di standardizzazione. Il primo standard è quello del '98 (C++ 98), poi c'è stato un abbozzo di standard nel 2003, poi negli ultimi anni cambiamenti radicali al linguaggio sono arrivati col C++11, fra poco (tempo di qualche mese) sarà ratificato il C++14 e così via ogni 3 anni. E' un linguaggio rinato, la comunità s'è rinvigorita e lo sviluppo sarà sempre più veloce. Quello che andava bene un tempo ora, col C++11, non va più del tutto bene. I Deitel sono ormai obsoleti.
|
12-07-2014, 13:36 | #5 |
Member
Iscritto dal: May 2014
Messaggi: 63
|
Capito. E per quanto riguarda invece il manuale del C ANSI dei deitel, stessa cosa?
|
12-07-2014, 16:48 | #6 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
guarda che C++11 non è neanche retrocompatibile con C++03, ci sono vari standard e anche "technical report" per quanto riguarda il C++, idem per C++14 che a quanto pare non sarà 100% retrocompatibile con C++11.
se inizi adesso suggerisco di scegliere C++11 per iniziare, se puoi evita msvc ( il compilatore Microsoft ) e usa llvm ( che puoi usare anche in Visual Studio ) o gcc ( portato su Windows grazie al progetto MinGW ). il creatore del linguaggio Bjarne Stroustrup scrive testi anche per chi incomincia come il "Programming: Principles and Practice Using C++" arrivato alla seconda edizione e che probabilmente troverai anche tradotto in italiano; va da sé che dovresti preferire testi in inglese, sia perché le traduzioni molto spesso fanno piangere sia perché ogni occasione è buona per censurare ed editare contenuti . |
12-07-2014, 16:55 | #7 |
Member
Iscritto dal: May 2014
Messaggi: 63
|
C++ l'ho già iniziato a scuola, ora non so quale standard sia, abbiamo fatto le cose basilari quindi non saprei dove stanno le differenze. Inizialmente come IDE usavamo Dev C++, con TDM-GCC 4.7.1 a 64bit. Poi ci hanno consigliato di usare qualcosa di più serio, come CodeBlocks, che monta il GNU GCC.
Comunque, in sostanza, se C++11 non è retrocompatibile e voglio stare "al passo", devo snobbare qualunque libro che non sia aggiornato almeno a questo nuovo standard? |
12-07-2014, 18:43 | #8 | |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
Quote:
per iniziare posso dirti che il team di GCC ha già annunciato al tempo del rilascio che la versione 4.8.1 di GCC è la prima ad offrire un supporto completo a C++11, quindi in tutte le versione precedenti il supporto è nullo o parziale, da ritenersi comunque sperimentale per quanto concerne C++11, di conseguenza impara anche a capire quale versione stai usando, che versione della libreria standard, della libreria ABI, della libreria C; devi tenere traccia di tutte le informazioni che ti servono per giudicare la bontà e l'idoneità degli strumenti a tua disposizione. impara a compilare gcc da sorgenti e fare e disfare tutti i tool che ti servono, tanto è tutto open source, compreso llvm/clang, e ci dovrai spendere del tempo per forza se vuoi imparare. ci sono vari gruppi su google groups, ci sono le varie mailing list dei vari progetti ( la ML di gcc, di clang, di llvm, etc etc ... ) e siti interessanti come http://stackoverflow.com/ . tipicamente dovresti dotarti di almeno 2 compilatori diversi, gcc e clang magari, perché così in caso di bug offerti da uno dei 2 potresti scoprire l'errore usando l'altro e viceversa. considerando che dopo la ratifica dello standard ci vogliono almeno 1-2 anni per assorbire lo standard in pieno ( almeno secondo i trand recenti ), io direi che siccome il C++14 non è neanche stato ancora ufficializzato, è meglio andare con C++11 ( msvc non lo considero in questo discorso per vari motivi, comunque ne sconsiglio vivamente l'uso ) . |
|
12-07-2014, 18:57 | #9 | ||
Member
Iscritto dal: May 2014
Messaggi: 63
|
Quote:
Quote:
Scusa la mia newbaggine, ma ho un'esperienza con C++ di nemmeno un anno e finora mi son sempre occupato della parte riguardante il codice Ultima modifica di Hybr1d97 : 12-07-2014 alle 19:03. |
||
12-07-2014, 19:18 | #10 | |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
Quote:
Parlando di un sistema GNU/Linux le possibile variazioni sono: librerie standard per C++ : - libstdc++ ( da gcc/GNU ) - libc++ ( da llvm ) - altre alternative commerciali ( in realtà più diffuse su sistemi high end, meno sui soliti desktop e dispositivi mobili ) le librerie ABI : - libsupc++ ( da gcc/GNU ) - libc++abi ( da llvm ) - libcxxrt ( da Pathscale ) le librerie C : - glibc - uclibc - musl libc - dietlibc - bison ( da Google per Android ) - altre N varianti, specialmente per sistemi BSD e sistem embedded questo solo per quanto riguarda i nomi più o meno popolari in ambito UNIX/Linux . da notare che ci sono variazioni nelle licenze e nella distribuzione, ad esempio il team di GCC distribuisce libc e libstdc++ ( insieme a altre X librerie ) insieme a gcc, quindi quando scarichi l'archivio con i sorgenti di gcc ti ritrovi con tutto quello che ti serve e non troverai le ultime versioni di libstdc++ distribuite in altro modo. Con llvm invece tutti i progetti sono separati e te li scarichi separatamente . Con "compilare gcc da sorgenti" intendo quanto detto, ovvero tu vai sul sito del compilatore in questione http://gcc.gnu.org/ , ti scarichi la release che vuoi, configuri i sorgenti e compili e ti ritrovi con l'eseguibile del compilatore "cucinato" da te. Quest'ultimo passaggio non è esattamente per principianti e conviene che tu perda un po' di tempo con gcc e impari ad usarlo bene prima di buttarti sulla sua compilazione, ma è fattibile una volta che avrai imparato ad usarlo. QtCreator è una ottima alternativa specialmente per principianti perché è semplice ed essenziale, usa gcc / mingw di default ed è abbastanza aggiornato alle ultime release di gcc / mingw. |
|
12-07-2014, 19:28 | #11 | |
Member
Iscritto dal: May 2014
Messaggi: 63
|
Quote:
|
|
12-07-2014, 20:33 | #12 |
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Ma perche' cavolo uno deve compilare GCC, ma se avete problemi di masochismo non andate in giro a coinvolgere gli altri
Lavoro col C++ da 2 anni tutti i giorni su tutte le piattaforme possibili e non mi e' mai capitato di averne bisogno; usare e/o preoccuparsi di qualsiasi delle STL elencate da freaxxx e' una pessima idea (se uno usa musl e il programma crasha problema suo ) e il miglior IDE per C++ e' imo Visual Studio. IMO, prima di perdere tempo con i peggiori dettagli/difetti del C++, cioe' tutta la complessita' dell'ecosistema di cui parla Freaxx (che purtroppo a un certo punto dovrai almeno conoscere per difenderti) fai meglio a scaricare VS Express, che e' gratis, e giocare con quello. Onestamente il compilatore lascia un po' a desiderare rispetto a clang e GCC, ma se le parole "user-defined literal" o "lambda capture expressions" non ti dicono niente ti cambia proprio poco. In compenso non e' orrendo, funziona out of the box e ha il miglior debugger, che e' fondamentale per capire cosa fa il codice che scrivi senza tirare a indovinare. Ah, Dev C++ e' il male e va estirpato, ormai posto su sto forum solo per sconsigliarlo Ultima modifica di Tommo : 12-07-2014 alle 20:36. |
12-07-2014, 20:39 | #13 | |
Member
Iscritto dal: May 2014
Messaggi: 63
|
Quote:
|
|
12-07-2014, 23:32 | #14 | |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
Quote:
per quanto riguarda il compilare gcc è una cosa un po' più complessa da come appare, come accennato in gcc ci sono una miriade di librerie distribuite insieme ai sorgenti e quando configuri gcc in realtà puoi configurare direttamente o indirettamente le altre librerie a cascata dato che lo script configure nella root dir chiama ricorsivamente tutte le dovute cartelle e tutti i dovuti sorgenti. Ad esempio se non sai come compilare gcc non saprai neanche come configurare libstdc++ da sorgenti, è tutto interconnesso, in più gcc ha una serie infinita di opzioni, quei sorgenti che scarichi sono validi per fare di tutto, dall'embed al desktop a sistemi senza neanche un OS, a sistemi multithreaded a sistemi a basso consumo. GCC in quanto a features e flessibilità non viene battuto da nessuno al momento, puoi letteralmente portarlo ovunque anche su piattaforme dove al momento non hai neanche un compilatore C per iniziare. |
|
12-07-2014, 23:37 | #15 |
Member
Iscritto dal: May 2014
Messaggi: 63
|
Comunque credo che prenderò il C++ Primer, straconsigliato un po' ovunque, è pure aggiornato a C++ 11. Spero di non sbagliare a sceglierlo, anche se molti dicono che non è per principianti... Sono indeciso
|
13-07-2014, 02:14 | #16 | |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
Quote:
http://www.amazon.it/ http://books.google.com/ a volte puoi leggere qualche pagina a gratisse, molto spesso anche sui siti ufficiali delle varie case editrici ci sono sample gratuiti. |
|
13-07-2014, 09:07 | #17 |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
C++11 è retrocompatibile con C++98 eccetera. Nel senso che tutto il vecchio codice compila ancora usando gli ultimi compilatori. La compabilità è stata sempre uno degli obiettivi di Stroustrup e la commissione ISO.
Per cominciare anch'io ti consiglio Visual Studio 2013 Express per due motivi: intellisense (suggerimenti mentre scrivi codice) e debugger. |
13-07-2014, 09:11 | #18 | |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
Quote:
In generale la compatibilità non è assicurata, questo è quanto, evitiamo frasi come "compila" o "il programma si avvia e funziona" . Fate anche molta attenzione alle parole, "It doesn't breaks your code" è diverso da "C++11 è retrocompatibile con C++98", non ho mai sentito dire in nessuna conferenza o intervista da parte di nessun esponente della comunità C++ che C++11 è retrocompatibile con C++98, e di fatto non lo è . Ultima modifica di Freaxxx : 13-07-2014 alle 09:20. |
|
13-07-2014, 13:21 | #19 |
Senior Member
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
|
Ad oggi il miglior libro per iniziare con C++ è:
The C++ Programming Language (4th Edition) E' la scelta più sicura che puoi fare
__________________
In a world without fences, who needs Gates? Power by: Fedora 8 - Mac OS X 10.4.11 Ultima modifica di nico159 : 13-07-2014 alle 14:21. |
13-07-2014, 14:11 | #20 |
Member
Iscritto dal: May 2014
Messaggi: 63
|
Lo Stroustrup dici? Essendo un reference molti lo sconsigliano per iniziare, dicono che può essere complicato per chi programma da poco e che dovrebbe essere usato come difficoltà intermedia dopo aver letto qualcosa di più semplice
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:09.