Newsgroup: it.comp.os.linux.development
Titolo: C++ neofita

Ciao a tutto il ng!
Sono approdato da poco a linux (qualche mese) e vorrei "sfruttare 
l'occasione" per imparare anche la programmazione C++.
Vi scrivo per chiedervi un consiglio su qualche buon tutorial o manuale 
sulla programmazione C++ che sia "compatibile" con gcc 4.x e "le cose 
moderne" del c++.
Ho provato a compilare il seguente programmino stupido stupido tratto da 
un libro e mi sono ritrovato pieno zeppo di errori :o):
#include <iostream.h>
int main()
{
   cout << "hello world\n";
   return (0);
}
In particolare gcc mi dice che tra l'altro iostream.h è antiquata.
E' evidente quindi che mi serve una guida.
Grazie fin d'ora.
Saluti,
Kickaha


cikko |   
http://cikkox.altervista.org
      | GNU/Linux Registered User #365929
      |    GnuPG/OpenPGP key available

 E' evidente quindi che mi serve una guida.
Tra le innumerevoli guide disponibili su internet, ti consiglio 
"Thinking in C++" di Bruce Eckel, liberamente scaricabile dal sito di
Eckel (che ora non ho sottomano, ma google ti aiuterà).
Come manuale cartaceo, a mio avviso il migliore è lo Stroustrup, ma
richiede che tu conosca già un minimo di programmazione e di C++.
HTH,
-- 
[ Andrea Spadaccini - a.k.a. Lupino/Lupin85 - Catania - ICQ#: 91528290 ]
[ GPG ID: 5D41ABF0 - key @ 
pgp.mit.edu
 - Slackware 10.1 w/Linux 2.4.22 ]
[ Linux User # 313388 - MAIL: a.spadaccini(at)catania(dot)linux(dot)it ]

 l'occasione" per imparare anche la programmazione C++.
Tanto per curiosita` (e magari qualche consiglio non e` poi fuori
luogo), come mai C++, e non C, Java, C#, Perl, Tcl, Python, Ruby, Lisp,
Erlang o qualcos'altro?  Non per dire che dovresti, ma magari quello che
vorresti fare su Linux indica altre possibilita`.  Puoi fare quasi tutto
con C++, per intenderci (tranne programmazione del kernel), ma puo`
essere che per uno scopo particolare potrebbe essere interessante
studiare anche un altro...
Saluti,
-- 
David N. Welton
- 
http://www.dedasys.com/davidw/
Apache, Linux, Tcl Consulting
- 
http://www.dedasys.com/

 Saluti,
Sostanzalmente scrivo (o vorrei scrivere) programmi per l'ingegneria ed 
il fortran mi sta risultando un po' indigesto alla lunga... :o)
Senza contare alcune mirabolanti stravaganze che ho visto passando da un 
compilatore all'altro...
Per quel che ne so (per sentito dire, perché ci sono arrivato ora al 
mondo C) i compilatori C/C++ sono migliori e più affidabili.
Ora perché il C++ e non il C... non so, dovrei ricredermi? Ogni 
consiglio in merito è ben accetto.
Ho parecchia esperienza in VB (lo so che ora starete rabbrividendo 
tutti, ma ho iniziato con questo linguaggio tanti tanti anni fa) e in 
Fortran sento la mancanza della programmazione ad oggetti.
Ovviamente già tanti anni fa mi scontrai con le limitazioni del VB ma 
causa università (mancanza di tempo) non feci mai il salto al VC++ di MS.
Ora siccome per quello che intendo farci penso che i linguaggi indicati 
siano Fortran o C/C++ e che sono giunto alla conclusione che tutto ciò 
che produce MS è un cancro anti-standard che aggiunge bug e poche 
funzionalità, vorrei programmare sotto Linux: in Fortran o C/C++, appunto.
Ogni vostro commento è ben accolto. Colgo l'occasione per ringraziare 
qui quanti hanno risposto.
Kickaha

>}
Ho provato le modifiche da te suggerite, ma purtroppo non funzionano.
Ecco l'errore che mi dà gcc quando compilo:
/tmp/cc3uzne0.o(.text+0x25): In function `main':
/home/kickaha/Project/hello.cc:12: undefined reference to `std::cout'
/tmp/cc3uzne0.o(.text+0x2a):/home/kickaha/Project/hello.cc:12: undefined 
reference to `std::basic_ostream<char, std::char_traits<char> >& 
std::operator<< <std::char_traits<char> >(std::basic_ostream<char, 
std::char_traits<char> >&, char const*)'
/tmp/cc3uzne0.o(.text+0x47): In function `__tcf_0':
/usr/lib/gcc/i386-redhat-linux/4.0.1/../../../../include/c++/4.0.1/iostream:76: 
undefined reference to `std::ios_base::Init::~Init()'
/tmp/cc3uzne0.o(.text+0x74): In function 
`__static_initialization_and_destruction_0':
/usr/lib/gcc/i386-redhat-linux/4.0.1/../../../../include/c++/4.0.1/iostream:76: 
undefined reference to `std::ios_base::Init::Init()'
/tmp/cc3uzne0.o(.eh_frame+0x11): undefined reference to 
`__gxx_personality_v0'
collect2: ld returned 1 exit status
Exit 1
Grazie per la dritta sui manuali.... qualche idea per i "miei" errori??
Ciao,
Kickaha

 
conviene usare g++ anziché gcc per non dover specificare tutte le
librerie che devono essere linkate
-- 
Pela

 
Grazie per la risposta, l'ho scoperto poco prima di leggere il tuo post.
Scusate se vi ho fatto perdere tempo con quest'errore cretino, ma sono 
alle prime armi coi compilatori in linux... credo che mi toccherà dare 
almeno uno sguardo al manuale di gcc.
Ciao,
Kickaha

 consiglio in merito č ben accetto.
No, mi sembra un discorso sensato.  C e C++ sono molto piu` performanti
rispetto ai linguaggi di 'scripting' se devi fare tanti calcoli.  Un
modo interessante di strutturare il codice, in certi casi, puo` essere
quello di fare tutto con un linguaggio ad alto livello come Tcl o
Python, e poi rescrivere i pezzi lenti in C.  Ma se in partenza sai che
tutto deve essere molto veloce, probabilmente fai bene a partire in C++.


 tutto deve essere molto veloce, probabilmente fai bene a partire in C++.
Grazie per la gentile risposta... ed a proposito del fatto si usare C++ 
invece che C?
Ho letto sulla rete che in realtà il C è ancora più usato del C++ in 
ambito industriale: si tratta di una comodità per ragioni di 
compatibilità colla pratica passata (come nel caso del fortran) o ci 
sono cose che "è meglio scrivere in C piuttosto che in C++"?
Hai (o avete) dei links e documenti da leggere in proposito?
Ciao,
Kickaha

 rispetto ai linguaggi di 'scripting' se devi fare tanti calcoli.
Certo, ma a seconda dei calcoli che deve fare o usa librerie tipo il
lapack oppure si spara in una gamba :)
A quel punto li siccome il codice del lapack è quello da qualunque
linguaggio lo chiami, non sono del tutto convinto che il costo di una
chiamata di funzione di Python/Perl/Ruby rispetto a una C++ sia così
micidiale, specie tenendo conto che quasi qualunque operazione uno fa
nella funzione risulta di vari ordini di grandezza più costoso della
funzione vuota.
Io dal canto mio mi sono accorto che 9/10 si ottengono migliori
risultati ottimizzando a livello algoritmico che a livello di tecnicismo
C o C++ (a patto di avere certo un minimo di buon senso nella prima
scrittura).
E un linguaggio più agile agevola in tali modifiche...
Certo, spesso il vantaggio di sparare variabili sullo stack invece che
sullo heap può essere *comunque* vantaggioso (il costo di allocazione
memoria è decisamente maggiore di fare pure operazioni con il
processore). Ma a patto che questo venga fatto effettivamente, se poi
gli oggetti che si usano dentro vanno di pimpl, c'è poco da fare in tal
senso :)
Ah.. e con questo non voglio sembrare contrario ai pimpl, beninteso.
-- 
non vincono, non vinceranno, non hanno domani
la forza è nel puntello impugnato da oneste fortissime mani