[FLUG] Re: C vs C++
- From: Andrea <andrea.b@xxxxxxxxx>
- To: fanolug@xxxxxxxxxxxxx
- Date: Tue, 02 Dec 2003 19:11:21 +0100
Mailing List del Fortunae LUG
=============================
Perche' i kernel di Unix, Linux, dei BSD (di Windows anche?) sono
scritti in C?
Perchè il C è un linguaggio che offre molta poca _astrazione_ rispetto
alla macchina fisica. I suoi costrutti sono semplicemente quelli
dell'assembler con una sistassi un pò più umana. I vantaggi principali
di questo approccio sono: 1) efficienza 2) stretta interazione con i
dispositivi fisici. E sono anche le cose che servono in un kernel.
Volevo resistere, scusa Andrea, ma non ce l'ho fatta:
tra C e Assembler c'e' molta distanza (cosa dicono gli altri programmatori
in lista?).
Credo molta di piu' di quella che c'e' tra C e gli altri linguaggi di
programmazione.
Forse non sono stato spiegato (come dice Sconsi :)
Il problema è: da che punto di vista sono distanti C e asm.
Non è che non c'è differenza, ci mancherebbe. Quello che volevo dire io
è che il C è, se così si può dire, il linguaggio più di basso livello
tra quelli ad alto livello. Cioè dal punto di vista dell'_astrazione_
che offre al programmatore non va molto + in là dell'asm. I costrutti di
alto livello che offre il C sono le funzioni, che mappano direttamente
le CALL dell'asm, i puntatori/indirizzi che mappano direttamente gli
indirizzi dell'asm, ecc. Cosa aggiunge di nuovo (parlo di astrazioni non
di sintassi o altro)?
Invece il C++ & co (co = gli altri linguaggi oo) conoscono/usano ad
esempio il concetto di classe/oggetto, e quindi ereditarietà,
polimorfismo, che l'asm non sa neanche cosa sia. Tant'è vero che poi
spetta al compilatore fornire e implementare a livello di asm i
meccanismi che rendono utilizzabili tali astrazioni (es: late binding
per il polimorfismo). Un programma C invece si mappa quasi pari pari con
il codice asm.
Non so se si è capito cosa intendevo; e cmq posso anche sbagliarmi :)
Ciao
Andrea
--
<simon> siamo nel futuro ragazzi
Other related posts: