n° 219
Novembre 2017
Dicembre 17, 2017, 11:55:00 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Come imparare C++?  (Letto 47525 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
noli
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 19

0
Mostra profilo
« inserita:: Settembre 12, 2003, 01:59:11 »

Ciao a tutti.
Sono un principiante della programmazione. Conosco un po\' delphi ma non moltissimo. Vorrei sapere se è possibile riuscire ad impararsi subito C++ oppure se si deve fare prima un po\' di gavetta su altro.
Registrato
uakiki
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 9

0
Mostra profilo
« Risposta #1 inserita:: Settembre 12, 2003, 08:44:48 »

Oppure segui il corso di C++ su ioProgrammo!  Felice  Felice  Felice  Felice
Registrato

Esistono solo 10 tipi di persone:
quelli che conoscono i binari
e tutti gli altri.
 
Roberto Allegra
Global Moderator
Hero Member
*****

Karma: +50/-1
Scollegato Scollegato

Messaggi: 2102



Mostra profilo WWW
« Risposta #2 inserita:: Ottobre 17, 2006, 02:07:54 »

Concordo con l'approccio suggerito da John, anche se secondo la mia visione il modello è più ciclico che lineare. Tento di stendere la descrizione di un "percorso di conoscenza", che sia abbastanza valido da essere preso come riferimento anche per ogni richiesta futura del tipo: "Che libro devo scegliere per imparare C++?". Tento.

Il C++ è un linguaggio molto vasto: impararlo tutto (ovverosia: imparare tutti gli elementi del linguaggio, da quelli di base a quelli più avanzati, e comprenderne le implicazioni profonde) è già un'impresa che richiede degli anni. Fortunatamente per programmare bene in C++ non è necessario conoscerne ogni funzionalità, e a volte è molto meglio conoscere il linguaggio parzialmente, ma avere studiato le tecniche avanzate limitatamente a quella porzione di linguaggio, piuttosto che avere un'infarinatura di tutto il linguaggio completamente scorrelata dalle problematiche tecniche e pratiche. E' qui che entra in gioco un approccio ciclico all'apprendimento. L'ideale è:

1) Imparare un sottoinsieme di funzionalità del linguaggio
2) Fare pratica relativamente a ciò che si è imparato
3) Imparare le tecniche di programmazione avanzate relative a quell'insieme
4) Goto 1.

Suddividere il linguaggio negli "insiemi" giusti è uno dei compiti più difficili per un insegnante o per un divulgatore, tanto che solitamente gli autori falliscono miseramente, e nessuno in questo campo (me compreso, ovviamente) può dire di avere idee definitive.

Molti libri, ad esempio, si affannano a spiegare prima il "sottoinsieme C" del C++, per poi passare al resto. Con l'andare del tempo sono sempre più convinto (assieme a tanti altri personaggi più in gamba di me - Stroustrup compreso, il quale esprime ancor meglio la sua posizione qui) che sia un approccio dannoso, che non fa altro che confondere le idee al povero studente e imbottirlo di nozioni e tecniche inutili, che dovranno essere abbandonate e rispiegate da zero in un secondo tempo.

Il lavoro migliore che abbia mai visto in questo senso, invece, è senz'altro quello di Koenig (stavolta John non c'entra, parlo del leggendario Andrew Sorriso ), con il suo Accelerated C++: un libro coraggioso ed efficace, che non si fa scrupoli a partire subito con stream, contenitori STL, e funzionalità avanzate, e riesce comunque a risultare scorrevole, pratico, e semplice da leggere per il neofita. Tutto ciò lo rende ai miei occhi il testo di base dall'approccio metodologico più rivoluzionario, fra tutti quelli in circolazione.

Se si vuole cercare una guida d'ingresso più convenzionale, si possono considerare i testi di Eckel della serie Thinking in C++ (testi ben fatti e gratuiti - combinazione più unica che rara per la manualistica tecnica), o buon il lavoro introduttivo di Stephen Prata C++ primer plus.

Dopo la guida di ingresso è necessario procurarsi un buon manuale di riferimento: un testo che è solitamente troppo ostico per essere affrontato da un neofita, ma che gli esperti tengono per anni sulla scrivania, consultandolo ogni volta che gli serva sviscerare gli aspetti del linguaggio nel dettaglio.
La Bibbia, in questo campo è lo Stroustrup [genuflettersi, prego], terza edizione (possibilmente in inglese: la versione italiana è tradotta molto bene, ma è indietro di troppi errata-corrige), uno di quei fortunati testi scritti dallo stesso autore del linguaggio di cui parlano. Oltre a trattare i dettagli del C++, Stroustrup si diverte a seminare interessanti elementi di riflessione - spesso buttandolì lì, sotto forma di spunti - che puntualmente si rivelano essere di grande ispirazione quando si è nello spirito di coglierli.
In alternativa, si può considerare un manuale a metà strada fra l'ingresso e il riferimento: l'eccellente lavoro di Stan Lippmann C++ Primer (assolutamente quarta edizione), ottima trattazione del linguaggio, tecniche e best practices.

E' fondamentale anche disporre di una buona guida introduttiva alla programmazione per templates (come l'ottimo C++ Templates: The Complete Guide, di Vandevoorde), e di una solida guida di riferimento per la libreria standard (come quella di Josuttis).

Tuttavia lo studio del linguaggio non si ferma qui. Esistono maree di idioms, stili, problemi, e affini che non vengono spiegati dai Testi Sacri Di Riferimento, e richiedono invece un grande approfondimento se non si vuole perdere tempo inutilmente.

I tre "Must Have" in questo campo sono i testi del mitologico Scott Meyers, cioè l'intera collana degli Effective: Effective C++, More Effective C++ e Effective STL. Chi non ha la nausea a studiare incollato allo schermo, può comprare la versione onnicomprensiva su CD.

Solo dopo (perché danno per scontato la lettura dei testi precedenti) si possono affrontare i testi "eccezionali" di Herb Sutter Exceptional C++, More Exceptional C++, e soprattutto Exceptional C++ Style.

L'insieme di questi testi fornisce già un background del linguaggio "coi fiocchi". Tuttavia esistono libri che trattano anche di argomenti più avanzati, e che sono necessari per compiti particolari, ad esempio l'espansione della (carente) libreria standard del C++.

Un testo che introduca alla libreria boost è fondamentale - vedi, ad esempio Beyond C++ Standard Library, An Introduction To Boost, di Karlsson.

Il testo di Karlsson dev'essere considerato, appunto, un'introduzione, che illustra le magie di Boost senza svelare i trucchi che le permettono dietro le quinte. La parola magica, quasi sempre, è metaprogrammazione. In questo campo, la lettura di C++ Template Metaprogramming del mai-abbastanza-riverito Abrahams è impegnativa, ma molto gratificante. E un altro passo avanti è lo sconvolgente Modern C++ Design di Andrei Alexandrescu, da leggersi il congiunzione con l'esplorazione della libreria Loki, nella speranza che un giorno i compilatori riescano a svolgere il loro lavoro tanto decentemente da farci apprezzare il policy based design senza rischiare suicidi di massa.

Parallelamente, sarà probabilmente necessario scegliere uno o più framework di riferimento che permettano la programmazione visuale, e altre amenità del genere. Qui la scelta è talmente ramificata che è impossibile fornire un insieme di riferimenti generali, e valgono le considerazioni fatte in altri post.

Se pensate che abbia esagerato nei testi di riferimento, tenete presente che ce ne sono tanti altri che non ho citato e sono di importanza fondamentale in campi più specifici, per capire l'approccio di fondo del C++, o per stupire i colleghi alle conferenze. Se qualcuno è interessato a questo genere di bibliografia "posso integrare". Sorriso
Registrato

I moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
Roberto Allegra
Global Moderator
Hero Member
*****

Karma: +50/-1
Scollegato Scollegato

Messaggi: 2102



Mostra profilo WWW
« Risposta #3 inserita:: Ottobre 17, 2006, 03:28:50 »

Ma sai che mi sono accorto adesso che il post è del 2003? Perché mai il forum l\'avrà segnato come attuale? Sorriso
Registrato

I moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
Roberto Allegra
Global Moderator
Hero Member
*****

Karma: +50/-1
Scollegato Scollegato

Messaggi: 2102



Mostra profilo WWW
« Risposta #4 inserita:: Ottobre 18, 2006, 10:41:13 »

Dovresti declassarti ai privilegi di moderatore. Io, infatti, posso star lì ad insabbiare e modificare a destra e sinistra, e non viene a galla niente! (strani scherzi del motore di questo forum) Felice
Registrato

I moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
XVincentX
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 91

0
Mostra profilo
« Risposta #5 inserita:: Marzo 25, 2007, 10:05:24 »

Vorrei che tutte queste informazioni fossero integrate.
Puoi segnalare tutti i libri che conosci??
Grazie!
Registrato
Roberto Allegra
Global Moderator
Hero Member
*****

Karma: +50/-1
Scollegato Scollegato

Messaggi: 2102



Mostra profilo WWW
« Risposta #6 inserita:: Marzo 28, 2007, 06:26:34 »

Citazione

Puoi segnalare tutti i libri che conosci??


Poco fattibile, e poco utile. La mia competenza bibliografica non raggiunge i vertici di MAW o la versatilità di Sal, ma modestamente mi passano per le mani dozzine di libri, anche solo limitandosi al C++.

La fatica è stata, appunto, selezionare i più significativi (molti dei quali, peraltro, hanno numerosi equivalenti) e organizzare un percorso di conoscenza abbastanza logico.

La comprensione di tutti i testi che ho citato richiede diversi anni di studio e pratica continua. Alla fine, come naturale conseguenza, si saprà anche dove reperire informazioni più settoriali, che però non possono precedere i riferimenti di base.

In PM mi hai chiesto informazioni su libri sulla programmazione Win32. Una risposta completa dovrebbe essere molto ramificata e complessa, prendendo in considerazione la programmazione di sistema, MFC, Windows Forms, etc... Verrebbe fuori un romanzo, che probabilmente tenterò di stendere quando avrò un po\' più tempo - nel frattempo invito chiunque a farlo. Sorriso

Dato che richieste simili sono già arrivate via mail e in PM, probabilmente in futuro integrerò questi riferimenti con quelli a librerie cross-platform, come WxWidgets e QT.

Nel frattempo, come \"risposta breve\", ti consiglierei:

* Il capolavoro di Charles Petzold, Programming Windows 5a Edizione, che non può mancare sugli scaffali di qualunque programmatore abbia a che fare con Windows.
* Windows System Programming, 3a Edizione
* Microsoft Windows Internals, 4a Edizione

Sono tutti libri molto densi di informazioni, e richiedono tanto tempo per essere appresi. (E non contengono informazioni mirate su framework di sviluppo!)
Registrato

I moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
izarus
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 4


Mostra profilo
« Risposta #7 inserita:: Febbraio 21, 2008, 01:29:33 »

Allora per motivi di lavoro futuri dovrò imparare a programmare in c++ essenzialmente l abilità di programmatore si interfaccerà ad abilità matematico\statistiche e finanziarie.

Ho letto in giro per la rete come inziare ma le opinioni sono molto contrastanti...
1)alcuni dicono di iniziare prima con java
2)altri dicono di iniziare prima con c
3)altri ancora dicono di iniziare direttamente dal c++ consigliando tipicamente questi 3 libri
-accelerated c++ (esiste in ita ?)
-C++ Corso di programmazione - ADDISON WESLEY- Stanley B. Lippman
-thinking in c++ (ma in realtà nell intro c è scritto che presume che si conosca il c)

come uscire da questo dilemma ? esiste una verità oppure è tutto relativo ?
Immagino che la domanda sia trita e ritrita ma caspita esisterà pure una soluzione razionale al problema

thanks in advance
Registrato
M.A.W. 1968
** LEGGETE IL REGOLAMENTO ! **
Global Moderator
Hero Member
*****

Karma: +224/-19
Scollegato Scollegato

Messaggi: 2988


Discrete And Combinatorial Mathematics


Mostra profilo WWW
« Risposta #8 inserita:: Febbraio 21, 2008, 02:01:46 »

1) Chiunque (o quasi) abbia iniziato a programmare negli anni '80 ha dovuto ineluttabilmente imparare prima il C e poi il C++, ma solo per banali motivi cronologici. Ciò non implica che questa sequenza sia ottimale o inevitabile.
Non c'è, in effetti, vera propedeuticità tra C e C++: si tratta di due linguaggi diversi, sia a livello di design che anche e soprattutto a livello di codice macchina prodotto.
Se non interessano la programmazione system-level, la scrittura di device drivers, l'ottimizzazione intermedia in grandi applicazioni con prestazioni esasperate, il cross development per piattaforme embedded, ecco che nel terzo millennio il "programmatore medio" non ha stringente necessità di conoscere il C - in generale, e in particolare anche come "antipasto" del C++.

2) Nessuno che suggerisca ad un apprendista di C++ di iniziare con java e solo in seguito passare a C++ può essere definito "guru". Al limite, "confuso".  Occhi al cielo
Registrato

I Moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.

Un blog? Io? Occhiolino
izarus
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 4


Mostra profilo
« Risposta #9 inserita:: Febbraio 21, 2008, 02:34:13 »

Essenzialmente a chi è digiuno di programmazione si consiglia quindi:
1)accelerated c++
2)c++ primer 4 edizione
Questi 2 libri in sintesi dovrebbero bypassare il problema di non conoscere il linguaggio c
Esistono per caso traduzioni in italiano ? ho dato un occhio in giro e pare ci sia solo per c++ primer, ma 3a edizione.

Le alternative tradizionali proposte da Allegra paiono comunque necessitare di una seppur minima abilità pregressa in c.

Risolto il problema se partire con c o c++, mi pongo questi altri 2 quesiti
-1 perchè in varie università si predica che è meglio partire da java e poi passare a c++
-2 oltre alla sintassi e la semantica del c++ dove posso trovare libri che aiutano a entrare nella forma mentis del programmatore (vd post di johnkonig)
Registrato
M.A.W. 1968
** LEGGETE IL REGOLAMENTO ! **
Global Moderator
Hero Member
*****

Karma: +224/-19
Scollegato Scollegato

Messaggi: 2988


Discrete And Combinatorial Mathematics


Mostra profilo WWW
« Risposta #10 inserita:: Febbraio 21, 2008, 03:30:46 »

-1 perchè in varie università si predica che è meglio partire da java e poi passare a c++
-2 oltre alla sintassi e la semantica del c++ dove posso trovare libri che aiutano a entrare nella forma mentis del programmatore (vd post di johnkonig)

1) Perché in ambito accademico si pratica (quasi sempre) un percorso di apprendimento graduale e di ampio spettro, che porta a toccare in successione cronologica numerosi linguaggi per vari scopi, plausibilmente in ordine di complessità crescente. Il linguaggio java, al pari del BASIC o del pascal, è universalmente reputato un linguaggio di programmazione di più facile apprendimento rispetto a C++, Eiffel, Ada, Prolog, Haskell, ML... per questo viene spesso anteposto agli altri nella didattica. Altri motivi della sua diffusione accademica, non strettamente didattico-scientifici, sono legati alle "mode" del momento, come anche a ragioni economiche: java (il minuscolo è assolutamente intenzionale, qui come altrove) era disponibile a costo nullo anche quando gli ambienti di programmazione C/C++ erano venduti a prezzi con molti zeri, il che rappresenta sempre una spinta non trascurabile in taluni ambienti... motivazione comunque decaduta del tutto, in quanto oggi praticamente tutti i migliori ambienti Assembly/C/C++ professionali per PC sono disponibili in versioni a costo zero, con le blasonatissime ma del tutto isolate eccezioni di Intel per Windows e del frontend Comeau, o dell'ancora più estremo ed esotico C/C++ IBM per target Intel e PPC.


2) Uno dei più validi testi che insegnano a "programmare" piuttosto che a "programmare in" è Maureen Sprankle, "Problem solving and programming concepts", Pearson Education.
Esistono numerosi testi specifici per la OOP, più o meno diluita in metodologie per il software engineering e condita con UML.
Un evergreen è sicuramente "Object Oriented Software Construction", Prentice Hall PTR, di Bertrand Meyer(1).

Oltre ad apprendere l'arte della programmazione in C++ ed alle "abilità matematico\statistiche e finanziarie" occorre però un terzo ingrediente: la capacità di mettere insieme proficuamente i due aspetti. Pare perfino superfluo consigliare le solite Bibbie del calcolo numerico:

- Forman S. Acton, "Numerical methods that (usually) work", MAA
- Forman S. Acton, "Real computing made real", Princeton Press
- Richard Hamming, "Numerical Methods for Scientists and Engineers", Cambridge
- G. Buzzi Ferraris, "Metodi numerici e software in C++, vol. 1", Addison-Wesley
- R. Bevilacqua, D. Bini, M. Capovani, O. Menchi, "Metodi numerici", Zanichelli
- J. Stoer, R. Burlisch, "Introduzione all'Analisi Numerica", Zanichelli
- V. Comincioli, "Analisi Numerica, metodi modelli applicazioni", McGraw-Hill
- V. Comincioli, "Analisi Numerica, complementi e problemi", McGraw-Hill
Ci sono anche altre edizioni, più nuove, dei lavori di Comincioli - anche su CD-ROM.

Naturalmente esistono centinaia di testi più specifici, che altrettanto naturalmente - al contrario di quelli citati - non si pongono il problema del passaggio dalla formulazione all'algoritmo all'implementazione (efficiente), ad esempio oggi mi capita di avere sulla scrivania il fondamentale testo sulla destagionalizzazione e analisi delle serie storiche di Estela Bee Dagum e due nuovi lavori Springer-Verlag sull'econofisica...


(1) Si legge Meié con l'accento sulla "e", come Sarkò e Carlà, perché è un frog-eater, ma almeno ha inventato Eiffel. E come altro potreva chiamare il suo linguaggio ? Magari Obelix... Ghigno Felice
Registrato

I Moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.

Un blog? Io? Occhiolino
izarus
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 4


Mostra profilo
« Risposta #11 inserita:: Febbraio 21, 2008, 01:12:38 »

rispondendo step by step ed aggiungendo qualche dubbio

1)essenzialmente traducendo in azioni da compiere il percorso per imparare a programmare inc++, devo:
   a)partire da accelerated c++ (pare il libro migliore poiche non richiede prerequisiti di sintassi\semantica)
   b) oppure ossequiare il mondo accademico e partire da java ? se si con quale testo e perchè ?
  a riguardo di questi quesiti implicitamente ti chiedo un'opinione  Occhiolino che sia la piu oggettiva possibile  Occhiolino
  il mio obiettivo penso ti sia chiaro, soprattutto dai riferimenti sul calcolo numerico che hai fatto  Fico

2)riguardo alla forma mentis da buildare per programmare,quale dei 2 libri citati mi consigli ? a mio parere decidere implica conoscere o andare a random, non avendo conoscenze meglio un consiglio ;-)

3)bene quando avrò ultimato i punti 1) e 2) passerò al 3) e sceglierò un libro di interfaccia fra i tuoi proposti.

che dire sei stato esaustivo al 100% thanks



ps:x chi mi risponde per evitare di intasare il thread darò una risposta omnicomprensiva dopo 2-3 risposte.....odio la dispersione informativa  Occhiolino
Registrato
celeborn85
Global Moderator
Hero Member
*****

Karma: +58/-13
Scollegato Scollegato

Messaggi: 2148


Mostra profilo
« Risposta #12 inserita:: Febbraio 21, 2008, 02:33:38 »

Provo a rispondere al punto 1.
Se vuoi imparare il C++ allora impara quello. Non c’è motivo per imparare prima Java. Non ci sono veri e propri vantaggi a farlo.
Imparare il C++ come primo linguaggio è possibile ed è una strada seguita da molte università. Secondo alcuni ci sono anzi dei vantaggi a partire da un linguaggio come il C++, leggi ad esempio qua.
Registrato

I moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
maninblack
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 12


Mostra profilo
« Risposta #13 inserita:: Marzo 07, 2008, 10:29:29 »

tra i libri proposti cosa consigliate a chi vuole imparare a programmare con visual c++ e soprattutto con la programmazione ad oggetti?
Registrato
GianniCL
Jr. Member
**

Karma: +1/-23
Scollegato Scollegato

Messaggi: 187


Mostra profilo E-mail
« Risposta #14 inserita:: Marzo 07, 2008, 11:27:35 »

Impara direttamente il C++, è inutile imparare prima altri linguaggi se il vero obbiettivo è quello.
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines