Newsgroup: it.comp.programmare
Titolo: This night [C] vs [C++]

questa domanda mi è stata suscitata da una risposta nel messaggio
"Linguaggi" in cui qualcuno (non ricordo il nome scusa :P e in questo
momento non ho voglia di andare a vedere) che non ha intenzione di passare
da C a C++
Vorrei sapere che senso ha programmare in C quando C++ è( o x me dovrebbe
essere) la sua evoluzione

essere) la sua evoluzione
Io sono un fan del C++ ma i motivi che mi vengono in mente sono:
1- Il C č piů conosciuto.
2- Alcune caratteristiche del C++ sono difficili (anche se molto utili
e spesso si puň anche evitare di usarle) come i template.
3- Per chi programma in C da molto tempo puň essere difficile passare
al C++, specialmente se non si conoscono altri linguaggi OO.
-- 
                    Marco Barisione (ICQ 84277092)
Se sei interessato alla creazione di it.comp.lang (per i linguaggi di
programmazione senza un gruppo apposito e per i confronti fra i
linguaggi) partecipa alla discussione sul manifesto su it.news.gruppi.

Fizban wrote:

questo e' un argomento spinoso e va trattato con cautela. Hai ragione a 
dire che il C++ e' l'evoluzione del C, pero' devi stare anche attento e 
tenere ben presente che questo era vero solo agli albori; ora il C++ e' 
un linguaggio diverso ed indipendente dal C, con cui ha in comune solo 
parte del nome, parte della sintassi e parte della semantica.
Detto questo, il C++ e' stato progettato in modo da avere alcuni 
indiscutibili vantaggi rispetto al C; tra tutti il piu' evidente e' 
senz'altro quello di essere un po' piu' attento nei confronti del 
programmatore, impedendogli molti errori accidentali che in C era 
facile commettere; oltre a questo vantaggio ce ne sono altri minori, 
che non sto a citare. Oltre a questo c'e' da dire che il C++ supporta 
diversi paradigmi di programmazione (programmazione strutturata, OO, 
generica), lasciando al programmatore la liberta' di decidere quale di 
questi sia il piu' adatto alla particolare situazione, al contrario del 
C che e' strettamente monoparadigma.
Infine, al contrario di quanto pensano in molti le prestazione del 
codice C++ sono equivalenti (se non superiori) a quelle del codice C. 
Dopo questa breve (ed incompleta) analisi si puo' concludere che, come 
linguaggio in se', il C++ e' "migliore" del C, non fosse altro perche' 
permette di fare *tutto* cio' che e' fattibile in C ma supporta anche 
altre estensioni.
Nonostante il C++ sia migliore del C, ci sono cmq dei validi motivi per 
usare quest'ultimo, tra cui:
- anzianita': il C e' ormai maturo, mentre il C++ e' relativamente 
giovane; inoltre molto codice e' scritto in C e le aziende non hanno 
interessi ad effettuare il porting.
- diffusione: il numero di programmatori C e' senz'altro maggiore di 
quello di programmatori C++.
- qualita' dei compilatori: essendo il C++ giovane, i relativi 
compilatori non hanno ancora raggiunto gli standard di qualita' di 
quelli C, anche se le cose stanno cambiando.
- portabilita': a causa del punto precedente, la portabilita' tra 
compilatori diversi e' piu' una utopia che una realta'. Anche in questo 
campo le cose stanno rapidamente cambiando.
- sistemi embedded: tanti sistemi embedded dispongono di un compilatore 
C ma non di uno C++.
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

grazie :) direi che mi son chiarito le idee =)

essere) la sua evoluzione
Quanto all'evoluzione: lo e' solo in senso storico. Ora come ora, sono due
linguaggi diversi. Le somiglianze (nel nome, per esempio) sono fuorvianti.
E' quindi la domanda, che non ha senso :-)
Quanto al senso di programmare in C anziche' C++; ovviamente dipende tutto
dalle condizioni al contorno (per esempio: puo' avere senso programmare in
LISP anziche' in C++, se il tuo ambiente NON HA un compilatore C++).
Nel mio caso, sino ad ora non ho mai trovato un problema concreto (e fanno
ovvia eccezione i problemi teorici nati per evidenziare vantaggi o carenze
di un linguaggio) affrontabile in C++, che non potessi affrontare in C con
ottimi risultati e tempi vantaggiosi.
In generale, se uno parte da zero, penso che gli convenga di gran lunga il
C++.
Il fatto e' che io non parto da zero.
Leonardo
-- 
".signature": bad command or file name

 ottimi risultati e tempi vantaggiosi.
Non so che problemi affronti pertanto non posso esprimermi in merito.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

Mumble.
Stavo esagerando :-)


 strutturato imperativo allora C o C++ sono equivalenti.
IMHO non e' vero; il C++ offre strumenti aggiuntivi che possono essere 
comodi e portare ad un sorgente migliore: namespace, overload, una 
libreria standard piu' ampia, possibilita' si scrivere semplici 
template in luogo delle macro (anche senza andare a sviscerare i 
meandri della programmazione generica).


 meandri della programmazione generica).
Si. In parte č vero. Ma se non usi nessun elemento di programmazione con
i generici i template non servono, ti bastano le macro. Namespace e
overload servono poco se non ragioni in maniera OO e se hai dei buoni
tool di manipolazione del codice (in teoria basta anche solo perl e
saperlo usare!). L'ampiezza della libreria standard č relativa, semmai
conta di piů la presenza di librerie (non standard) aggiuntive e
portabili (e ce ne sono ancora tantissime per il C, forse anche piů che
per il C++, benchč ovviamente la cosa stia cambiando).
Per un progetto ex novo preferisco anche io il C++ al C. Ma se hai
codice preesistente, personale non formato sul linguaggio, management
con poca esperienza di gestione di progetti C++ e tanta di gestione di
progetti C etc. etc. allora non č detto che la scelta sia per forza
migliore.


 migliore.
questo e' certo; io ragionavo piu' dal punto di vista del singolo 
programmatore.


 rispetto alla macro.
A parte il fatto che č il piů classico e conosiuto esempio di
programmazione generica, io lo definirei un bell'esempio di
programmazione errata :-)


 programmazione errata :-)
ROTFL :-)))
BTW tornando alla domanda di Antonio, preferisci la macro o il template? 
IMHO le macro al giorno d'oggi dovrebbero essere bandite. Le uniche 
#define che potrebbe essere utili sono quelle per la programmazione 
condizionata e per il debug.
Maurizio
-- 
Maurizio Sambati
Skice Software
E-mail: 
gsm...@inwind.it
--------------------------

 condizionata e per il debug.
Come ho già detto preferisco il C++ e quindi il template. Ma preferisco
anche un paradigma misto che comprenda anche programmazione generica e
OO. E preferisco, ovviamente, l'uso delle STL ovunque abbia senso.
Ma ammetto che ci sono progetti in cui potrebbe essere meglio il C
semplice (per vari motivi, di solito legati all'assenza del compilatore
C++ o di cultura C++ nel team o nell'azienda). E in quel caso la macro
va benissimo.


 va benissimo.
ergo, se si tratta solo di questioni di paradigma, usando il solo 
paradigma procedurale è meglio il C o il C++? 
IMHO sempre il C++. Ad ogni modo sono rimasto abbastanza indietro con lo 
standard del C, non so cosa abbiano aggiunto.


 paradigma procedurale č meglio il C o il C++?
Usando SOLO quel paradigma, fra i due č meglio quello su cui ha piů
esperienza il team che deve sviluppare e il management che deve gestire.


 programmazione errata :-)
ehm...
