[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: