Newsgroup: it.comp.lang.c
Titolo: 2 domande ai programmatori

1. č meglio cominciare a studiare il C o direttamente il C++?
2. Un buon libro, aggiornato, sul C?
Grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

2. Un buon libro, aggiornato, sul C?
Dipende. Sono due linguaggi molto simili, per l'esattezza il C e'
parzialmente incluso nel C++ (questo significa che quasi tutto il
codice C compila direttamente anche come C++, ma vi e' comunque la
possibilita' di farlo accettare al C++ cosi' com'e').
Io ti consiglierei di impararli entrambi. In fondo la teoria della
programmazione a oggetti ti servira' anche se programmi in C (certo,
non avrai le primitive fornite nel linguaggio, ma non e' un
limitazione pesante) e comunque ti capiteranno sia progetti in C che
in C++, in quanto il C++ puo' andare meglio per grandi applicazioni,
ma per programmi che devono essere efficienti si predilice il C (es
kernel dei sisop).
La differenza tra C e C++ (a parte la parte di supporto per la
programmazione a oggetti) puo' essere riassunta nella frase di
Lipmann: "A C program's trick is sometimes a C++ program's trap".
Queste differenze le imparerai con tempo... se impari veramente bene
tutti i "trick" potrai partecipare al prossimo concorso dell'IOCCC
pero' :) (tra l'altro aspetto con impazienza i vincitori per il 2001)
Per il C un libro aggiornato allo standard c99 non esiste ancora. Per
il c89 ci sono molti validi libri: senz'altro dovrai procurarti una
copia del Kernigan&Ritchie. Per trovare altri libri puoi cercare su
www.accu.org
.
Per il C++ ti conviene chiedere su it.comp.lang.c++, diciamo pero' che
un buon testo e' lo Stroustrup (l'autore del C++).
Mox :)

 1. č meglio cominciare a studiare il C o direttamente il C++?
Comincia direttamente dal C++.
Trovi il testo "C++ Primer" 3^ ed. di Stanley Lippman e
Josee Lajoie che ti spiega tutto dalla A alla Z.


 kernel dei sisop).
Sfatiamo questo mito: NON E' VERO.
Nel caso di Linux, per esempio, e' stato scelto il C (parole
di Linus Torvalds) non perche' il C++ sia meno efficiente, 
ma perche' quest'ultimo e' enormemente piu' complesso ed e' 
difficile trovare un gruppo di programmatori che metta le
mani su codice C++ senza fare troppo casino. 
Dove sta scritto che l'OOP deve necessariamente essere meno 
efficiente della programmazione tradizionale ? 
E' solo un modo diverso di vedere le stesse cose...
Anzi, generalmente, il codice OO si rivela molto + efficiente 
e veloce.


 Sfatiamo questo mito: NON E' VERO.
<cut>
Io non conosco bene il C++, pero' la domanda che mi sorge e':
Perche' nei sistemi embedded hanno fatto l' EC++ per riuscire a combinare
qualcosa in poco spazio?
Ciao
Giuseppe

efficiente della programmazione tradizionale ? 
Non l'OOP, ma alcune delle cose, come l'overloading dinamico dei
metodi e degli operatori possono appensantire il tutto.
Comunque non voleva essere una critica la mia, o almeno non era mia
intenzione sminuire il C++ (per quanto personalmente preferisca il C).
Mox :)

metodi e degli operatori possono appensantire il tutto.
Il polimorfismo e' uno dei punti deboli ma, come gia' detto,
e' tutta questione di compromessi (se dovessi fare le stesse
cose in C, faresti i salti mortali).  Gli operatori
ridefiniti non necessariamente appesantiscono il codice.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

ridefiniti non necessariamente appesantiscono il codice.
E' tutto questione di usare le cose giuste al momento giusto.
Mi ero scordato una cosa per completezza: la gestione delle eccezioni.
Lo stesso Stroustrup dice che vanno usate con molta attenzione,
perche' rischiano appesantire notevolmente il codice.
Mi sembra pero' che nella nostra disquisizione abbiamo dimenticato di
dire una cosa: sia il C che il C++ possono produrre eccellente codice
o pessimo codice, anche partendo dallo stesso algoritmo, tutto sta'
nella bravura del programmatore a usare i punti deboli del linguaggio
il meno possibile e solo quando e' strettaente necessario :)
Mox.

perche' rischiano appesantire notevolmente il codice.
Infatti non è necessario usarle a tutti i costi.
-- 
Marco Barisione

Infatti non è necessario usarle a tutti i costi.
Ma e' praticamente impossibile farne a meno in un progetto
reale (se non altro x una questione di comodita').


dire una cosa: sia il C che il C++ possono produrre eccellente codice
Retorico.
La verita' e' che il C++, di per se', ha gli strumenti
giusti per guidarti sulla via + efficiente.  


il meno possibile e solo quando e' strettaente necessario :)
Posto che sicuramente l'individuazione dei punti deboli deriva dalla
conoscenza di un numero di linguaggi maggiore di uno... ;-)))
Esiste per caso una analisi comparata dei punti deboli e forti dei
diversi linguaggi di programmazione?
Intendo qualcosa che non sia troppo legato alle esperienze individuali
dei singoli programmatori, ma a statistiche più estese, se proprio non
esiste uno studio scientificamente accurato.
E se esiste, si tratta di una pubblicazione cartacea o accessibile
magari via Internet?

mani su codice C++ senza fare troppo casino. 
Vero, ho trovato il un link che conferma quello che dice Andrea e
spiega anche alcune motivazioni:
http://www.tux.org/lkml/#s1-4
Mox :)