Newsgroup: it.comp.lang.c
Titolo: C/C++

Salve,
  E' tempo che mi chiedo una cosa: quali sono le differenze tra C e
C++? :) Lo so troppo vagamente per dire di saperlo. Qualcuno potrebbe
spiegarmelo bene?
Grazie Infinite
---
NGO DINH Nhan
e-mail: 
nngo...@pcn.net

...


spiegarmelo bene?
Il C++ é, in pratica, un superset del C Standard ANSI -- un
programma C a standard ANSI, che usi i prototipi delle
funzioni, sará praticamente sempre anche un corretto
programma C++ (a meno che non usi come identificatore
una delle varie parole-chiave che il C++ aggiunge al C:-).
Quello che il C++ aggiunge al C é: *tanto*.  Delle tante cose,
le piú importanti sono:
    -- il supporto per la programmazione a oggetti,
    -- il supporto per la programmazione generica (template),
    -- una ricca libreria standard di contenitori, algoritmi, ecc,
        che usa i template (e, in subordine, la programmazione
        a oggetti) per fornire potenti funzionalitá "pre-cotte".
Ciascuno di questi tre punti, naturalmente, si compone di
molti e complessi dettagli.
Oltre a queste cose fondamentali, c'é poi un mucchio di
piccole ma utili minuzie, come la possibilitá di usare // per
i commenti, di usare and, or, not come parole-chiave invece
dei criptici &&, ||, ~, di richiedere che una funzione sia
espansa in linea, di avere molteplici funzioni con lo stesso
nome ma diversi tipi di argomenti ("overload"), e chi piú ne
ha, piú ne metta.
Alex

ha, piú ne metta.
Queste cose le ho imparate a mie spese quando, per passare all'ANSI C,
ho dovuto setacciare un programma intero e cambiargli i // in /* e
*/... :)
Grazie per le info,


e molto altro......fai domande piu' precise e saro' felice di risponderti.
Ho saputo che il C++ è OOP. Quindi permette la programmazione ad
oggetti. La differenza tra C++ e Objective-C?
Grazie,


quello che è chiamato Objective-C?
Objective C é un linguaggio completamente diverso dal
C++, che estende il C aggiungendovi costrutti ad oggetti
(soltanto; nessuna delle altre estensioni C++, e, la cosa
piú importante, non la programmazione generica e non la
libreria di algoritmi e strutture dati che rende possibile)
con una "filosofia" completamente diversa da quella C++.
Il C++ é fortemente orientato alla "sicurezza dei tipi", per
due ragioni: aumenta la probabilitá che un programma sia
corretto, e permette a un buon compilatore di fare grandi
ottimizzazioni.  In effetti, il C++ é quasi unico fra i linguaggi
a oggetti, non tanto nella "sicurezza dei tipi" che é invece
accettata anche da altri come Eiffel e Sather, ma nella
forte enfasi verso le potenzialitá di ottimizzazione, e piú
in generale l'efficienza del codice (in questo, C++ resta
in effetti fedele all'ereditá C; il concetto di disaccoppiare
l'object-oriented dalla gestione automatica della memoria
dinamica, per quel che so, é originale di Stroustrup, che
é l'inventore del C++, e motivato dall'efficienza).
Objective C, invece, usa per le sue parti object-oriented
una sintassi simile a quella Smalltalk (quindi piuttosto
"ortogonale" a quella C) e una semantica quasi identica
a Smalltalk stesso.  L'efficienza é dunque decisamente
in secondo piano, e la "sicurezza dei tipi" inesistente,
mentre dominano considerazioni di flessibilitá, pulizia
e semplicitá concettuale, dinamismo spinto.  Niente
ereditá multipla, niente programmazione generica, ecc
ecc.
Per quel che so, Objective C "sopravvive", in pratica,
solo perché fu usato dalla Next di Steve Jobs per la
programmazione del loro eccellente sistema operativo,
che a sua volta sopravvive come "NextStep" come
"sistema operativo add-on" ad altri esistenti.
Alex