PDA

Visualizza versione completa : C++ e i primi passi... ma non è una domanda stupida !


realtebo
01-05-2004, 23.35.51
Forse questa non è la solita domanda da niubbino.

Io conosco come le mie tasche Visual Basic, però per negligenza (e mancanza di tempo) ho tralasciato C/C++/c#/c.net etc...


Ora però ho deciso di rimettermi al passo coi tempi. Così, come a suo tempo ho fatto con VB, apro l'help dell'MSDN (edizione c++ 6 enterprise) certo di trovare un tutorial passo passo sulla programmazione come l'avevo visto in VB. Dopo basta leggere e provare e chiedere e il tutto gira. Invece è tutto in inglese, ma è un problema relativo, anche se mi rompe avere speso soldi e trovarmi l'help non in lingua! E poi ci sono solo delle guide di riferimento, non dei manuali di programmazione.

E non dico: i tipi, le strutture di controllo, etc...
Ho bisogno di capire come c++ vede il mondo, e la guida non lo spiega. Venendo da VB mi faccio delle domande sceme come:
- che differenza c'è tra un exe MFC e un exe Win32 ? (ok, il secondo usa le api invece delle MFC, ma allora queste a che CCCC servono?).
- perchè l'hello world di esempio usa 8-10 file e cosa sono, a cosa servono...

io, vedete, amo scrivermi il codice a mano, riga per riga. Perchè amo sapere ogni riga a cosa serve.
Invece qui tra file di risorse, classi, e codice pre-compilato (circa una 30ina di righe per file)... mi perdo !

Così volevo sapere se esistono libri / per non dire interi siti da consultare. PReferisco però i libri. Non mi servono le tecniche di programmazione, bensì spiegazioni dettagliate sulla logica di visual c++

Non so se mi sono spiegato bene, cmq ora a voi la parola. PS: se conoscete dei buoni libri SAMS, OreillY o anche MS Press ditemelo che ho contatti per procurarmeli facilmente. Grazie

LoryOne
02-05-2004, 11.40.39
Guarda che è normale in VC++ trovarsi una miriade di #include <...> e circa 70 righe di codice per semplicemente far apparire una finestra.

In VB è tutto è più semplice, qui hai a che fare con le API, funzioni di callback ed hooking. In questo ambiente di sviluppo sei "dentro al Sistema Operativo".

Per imparare hai sicuramente bisogno di una guida, un libro in formato cartaceo.
Io consiglio sempre di dare un'occhiata su www.apogeonline.com e ricercare tipo: "VC++ guida completa".

LoryOne
02-05-2004, 11.51.32
Un primo approccio alla programmazione con C++ in ambiente Windows lo puoi trovare qui
http://www.wintricks.it/forum/showthread.php?s=&threadid=62882&perpage=10&highlight=regalo&pagenumber=2
ultimo post.

VC++ è tutta un'altra musica. ;)

realtebo
02-05-2004, 13.03.54
intanto vi ringrazio, cmq non essendo un lameraccio o un troll mi sono dato da fare ed ho già fra le mani un ottimo prodotto oreilly chiamato 'Practic C++ Programming'.

Diciamo che non si parla di Windows, ma è fatto così bene che ho deciso di prenderlo in pasto. Tenete conto del fatto che è aggiornato a VS Studio Net 2003 ! Per cui foto etc. sono aggiornatissimi. Per ora mi limito a programmi Win32 Console però fra qualche settimana...

Ok, ora leggo un poco, consulto i vs. link e poi, visto che è domenica pome, vado a spasso con la moglie...

realtebo
02-05-2004, 13.11.20
Originariamente inviato da LoryOne
Un primo approccio alla programmazione con C++ in ambiente Windows lo puoi trovare qui
http://www.wintricks.it/forum/showthread.php?s=&threadid=62882&perpage=10&highlight=regalo&pagenumber=2
ultimo post.

VC++ è tutta un'altra musica. ;)


non capisco da questo link cosa dovrei tirare su ... scusami ma si parla già di AP, per cui per ora sono fuori, anche se la guida linkato mi è appena servita in VB6 :) !

Cmq xkè dici che è tutta un'altra storia VC++ ? E' una differenza sostanziale tra C++ e VC++ o è una critica a QUELL'IDE in particolare?

Alex^77
03-05-2004, 00.20.37
Originariamente inviato da realtebo
Forse questa non è la solita domanda da niubbino.

Io conosco come le mie tasche Visual Basic, però per negligenza (e mancanza di tempo) ho tralasciato C/C++/c#/c.net etc...


Ora però ho deciso di rimettermi al passo coi tempi. Così, come a suo tempo ho fatto con VB, apro l'help dell'MSDN (edizione c++ 6 enterprise) certo di trovare un tutorial passo passo sulla programmazione come l'avevo visto in VB. Dopo basta leggere e provare e chiedere e il tutto gira. Invece è tutto in inglese, ma è un problema relativo, anche se mi rompe avere speso soldi e trovarmi l'help non in lingua! E poi ci sono solo delle guide di riferimento, non dei manuali di programmazione.

E non dico: i tipi, le strutture di controllo, etc...
Ho bisogno di capire come c++ vede il mondo, e la guida non lo spiega. Venendo da VB mi faccio delle domande sceme come:
- che differenza c'è tra un exe MFC e un exe Win32 ? (ok, il secondo usa le api invece delle MFC, ma allora queste a che CCCC servono?).
- perchè l'hello world di esempio usa 8-10 file e cosa sono, a cosa servono...

io, vedete, amo scrivermi il codice a mano, riga per riga. Perchè amo sapere ogni riga a cosa serve.
Invece qui tra file di risorse, classi, e codice pre-compilato (circa una 30ina di righe per file)... mi perdo !

Così volevo sapere se esistono libri / per non dire interi siti da consultare. PReferisco però i libri. Non mi servono le tecniche di programmazione, bensì spiegazioni dettagliate sulla logica di visual c++

Non so se mi sono spiegato bene, cmq ora a voi la parola. PS: se conoscete dei buoni libri SAMS, OreillY o anche MS Press ditemelo che ho contatti per procurarmeli facilmente. Grazie

Ciao RealTebo, Se posso permettermi di darti un consiglio, anche io iniziai a programmare avvicinandomi prima a Visual Basic (6.0) e poi passando a Visual C++.

Quello che ti posso consigliare, prima di Passare al C++ è di imparare un po' di C leggendo Linguaggio C di Brian W. Kerninghan e Dennis M. Ritchie.

E' un testo che a volte usano ancora all Università e direi che è la pietra migliare del C!!

Ho lavorato con più programmatori in C++ e mi spiace dirlo, ma molta gente, pur conoscendo molto bene le strutture di MFC, ect.. pecca molto nella conoscenza base del C e del compilatore!!

P8257 WebMaster
03-05-2004, 09.41.32
Alex^77 ha scritto:


Ho lavorato con più programmatori in C++ e mi spiace dirlo, ma molta gente, pur conoscendo molto bene le strutture di MFC, ect.. pecca molto nella conoscenza base del C e del compilatore!!

Questo è sicuramente vero, avere a che fare con programmatori che non solo conoscono l'architettura del linguaggio, ma anche quella del compilatore e della piattaforma con cui hanno a che fare è impresa assai difficile; molte volte dove uno è "forte" in una cosa, è carente nell'altra come è ovvio che sia data la complessità della materia...

Il C e anche il C++ però in questo caso "limitano" i danni in quanto il know-how necessario per accedervi pienamente, compie da sé una parziale "scrematura" e comunque costringe il programmatore ad una maggiore attenzione ... può sembrare contraddittorio ma certe volte mi sembra quasi più "pericoloso" un programmatore Visual Basic che non sà cosa sta facendo e che "smanetta" con API e chiamate.. piuttosto che un programmaotre C inesperto che si becca un crash per un null-pointer.

In C (e C++) ogni errore si paga sulla propria pelle con svariati effetti anche spiacevoli .. questo proprio per la "filosofia" del linguaggio .. è un approccio più "duro", è quasi una terapia d'urto, ma come dicevo, meglio beccarsi subito ciò che ci spetta se facciamo un errore, piuttosto che essere "coperti e cullati" mentre le nostre disattenzioni e le "cattive abitudini" (che purtroppo il Basic, non mi stancherò mai di diro, introduce) dilagano nel codice.

Il post di apertura del thread è una domanda "fisiologica" per chi passa da linguaggi di livello così diverso, spaventa solo lo scheletro base dell'applicativo e ciò che in Visual Basic non si vede appare come una montagna di codice sconosciuto e apparentemente inutile.. in realtà è quella la vera faccia di ciò che un programma è .. ed è quello il codice che anche Visual Basic scrive a basso livello, ma non ci permette di vedere...

Una buona conoscenza del C è a dir poco basilare ed una buona, se non ottima, conoscenza degli oggetti, dell'incapsulamento, dell'ereditarietà e delle forme di controllo è VITALE per il linguaggio C++.


Bye :cool:

LoryOne
03-05-2004, 11.34.35
Originariamente inviato da realtebo

Cmq xkè dici che è tutta un'altra storia VC++ ? E' una differenza sostanziale tra C++ e VC++ o è una critica a QUELL'IDE in particolare?

Mi sono spiegato male.
Intendevo dire che è tutta un'altra musica rispetto a VB.
Imparando a programmare in VC++ ti renderai sicuramente conto della mole di lavoro che compie VB "in sordina" per facilitare il programmatore nel creare le maschere e gestire i controlli.

LoryOne
03-05-2004, 14.21.10
Originariamente inviato da P8257 WebMaster


... può sembrare contraddittorio ma certe volte mi sembra quasi più "pericoloso" un programmatore Visual Basic che non sà cosa sta facendo e che "smanetta" con API e chiamate...

Bye :cool:

Sono pienamente daccordo tranne che su questa affermazione.
Se utilizzi le API non smanetti. Sei pienamente coscente di ciò che stai facendo in quanto le API o le usi nella maniera corretta o non funziona nulla. ;)

realtebo
03-05-2004, 15.07.15
sono daccordo su tutta la linea. Diciamo che conosco bene il background del VB e del s.o. per cui almeno smanettavo sapendo cosa facevo quando usavo le API.

Il libro di cui al mio secondo post (poco sotto quello di apertura) è davvero ottimo. Parte dal c++ parlando di linker, file oggetto etc. ed ho già addocchiato un libro SAMS su vc.net (da non confondere con WC NET eh eh eh :) :) ) e parla proprio di tutto quello che 'inaspettatamente', per così dire, si deve fare per anche solo visualizzare una msgbox.

Anche io approvo il fatto che sapere cosa sono nella realtà 'fisica' del proprio s.o. cosine come l'handler della finestra è importantissimo. sapere cos'è e come effettuare degli hook senza scaricarsi uno stupido plug-in per VB da due righe di codice.

E giustamente il c++ viene talvolta definito di medio-livello, mentre vb di altissimo. (per i troll: non qualità, ma rapporto con la macchina).

E sono felice di essere 'cresciuto', o almeno di avere questo desiderio. Non solo per non essere tagliato fuori dal mondo del sw attuale, ma perchè,conoscendo bene l'assembler dei vari Pentium [ + lo Z80 per le modifiche ai sw delle lavatrici :) ! ], mi sentivo quasi uno scroccone nei confronti di VB, e poi le cose mezze fatte non mi bastan più, voglio un controllo pieno e totale delle mie finestrelle !

Vi chiedo, se conoscete il c++, di seguire i miei prossimi thread, in quanto sono certo che avrò una montagna di domande.

Intanto un doveroso grazie, e devo dire che sono lieto di aver trovato persone coscienziose (si scrive così?!) nel rapporto con la programmazione. Ed anche perchè (come è successo in altri forum) non mi avete ne aggredito ne ridicolizzato.

PS: ho già fatto fuori metà del libro, e finalmente vedo avvicinarsi la possibilità di utilizzare il mitico algoritmo RealZip (di mia invenzione ai tempi delle scuole superiori) che avevo fatto in Pascal coi puntatori, e che in VB ho dovuto implementare con matrici 'auto'-redimensionanti (il che causava di logoramento delle prestazioni: fino al 35% di tempo, a pari file in input, rispetto a VB... sgrunt)

P8257 WebMaster
03-05-2004, 17.13.27
LoryOne ha scritto:


Sono pienamente daccordo tranne che su questa affermazione.
Se utilizzi le API non smanetti. Sei pienamente coscente di ciò che stai facendo in quanto le API o le usi nella maniera corretta o non funziona nulla. ;)

Si, hai ragione,
la mia affermazione era quasi un "paradosso" per far comprendere che un programmatore deve sempre sapere cosa fa.. anche se il linguaggio magari non lo "obbliga" a dover curare proprio tutti i passaggi per legare un componente all'altro ecc. ecc.

Bye :cool:

hkbruzi
09-05-2004, 21.30.21
Salve,
consiglio a realtebo di non cercare di fare quello che faceva in VB con C++. Può sembrare scontato, personalmente però, siccome usavo Delphi in precedenza, quando sono passato al C++ pensavo le cose come se li dovessi dovuto scrivere in Delphi. C'è voluto un po' di tempo prima di adattarmi...
e credo che realtebo dovrà esercitarsi molto, visto il modo in cui abitua a pensare i programmi VB

realtebo
10-05-2004, 15.03.58
si, è vero. difatti per togliermi i vecchi vizi sto creando classi, usando puntatori, etc.
non è facile passare dal ragionare in termini di sub a ragionare in termini di classi e, tantomeno, quando arriverò agli oggetti.

si tratta proprio di un modo diverso di concepire il software, non solo di scriverlo, è vero !

hkbruzi
10-05-2004, 15.21.58
Mooooolto brevemente: una classe è un oggetto. Di una classe puoi avere tanti oggetti; ereditare da una classe base; avere un singolo dato che sia comune a tutte le istanze delle classi (sia tue che create da altri) mediante la parola chiave 'static'.
Impara molto bene i concetti di ereditarietà e polimorfismo, comuni a tutti i linguaggi di programmazione. Il C++ poi include il concetto di 'ereditarietà multipla'.
Saluti

P8257 WebMaster
10-05-2004, 15.57.56
hkbruzi ha scritto:
una classe è un oggetto. Di una classe puoi avere tanti oggetti;

Queste due affermazioni "cozzano" tra loro.

Una CLASSE NON è un oggetto, una classe è un'"incapsulatore" di oggetti, accomunati dalle stesse proprietà di classe.
Una classe può ereditare COMPORTAMENTI da una (o più .. ma solo in C++) classe padre.
Un oggetto appartiene alla classe di oggetti da cui esso è stato istanziato, e viene costruito secondo le politiche dei costruttori di classe implementati nella classe da cui l'oggetto viene istanziato, inoltre un oggetto dispone dei metodi propri della classe a lui confacente e delle classe eventualmente da cui essa eredita.

Bye :cool:

realtebo
12-05-2004, 20.11.25
si, giusto, ora ho afferrato il concetto.