Newsgroup: it.comp.lang.c
Titolo: diff. tra C e C++

Che differenza c'è tra C e C++ ?
fed...@iol.it

Che differenza c'è tra C e C++ ?
Domanda da 100 milioni di dollari.
Il C++ e' considerato un'evoluzione del C.
Il primo aggiunge al suo predecessore le caratteristiche di
programmazione orientata agli oggetti (classi, ereditarietà,
polimorfismo, ecc...ecc...)
Per aderire alla politica di una corretta information hiding, il C++
non risulta pienamente compatibile col C, ma ne cambia leggermente
alcuni aspetti.
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)

Direi che scrivere un SO da zero vuol dire anche usare un po' di assembler,
altrimenti come le scrivi le routine di interfacciamento con l'HW?
--
Alessandro Monti

hardware da zero?
Se si parla di adattabilita' alla scrittura di un sistema operativo
non si puo' rispondere in termini generali.
Ad esempio, nonostante il C++ sia cosi' utilizzato anche per la
programmazione di sistema, il kernel di Linux e' scritto in C.
Questo perche' la scrittura di un s.o. implica un grosso controllo del
codice prodotto (che va ottimizzato per quanto possibile).
Il C sicuramente rende la vita facile al programmatore di sistema e
questo si sa da sempre, ma il C++ potrebbe complicarla.
Il C++, incarnando l'OOP, offre al programmatore un livello di
astrazione molto piu' alto di qualsiasi altro linguaggio procedurale
(C compreso) e si e' portati a pensare che il programmatore non debba
preoccuparsi di quello che avviene dietro le quinte.
E' vero che il linguaggio e' stato studiato per mantenere
compatibilita' in termini di efficienza con il C, pero' e' anche vero
che talvolta il codice prodotto puo' essere piu' pesante.
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)

 hardware da zero?
In generale direi di si, anche se non credo sia possibile scrivere un
sistema operativo senza utilizzare l'ASM almeno per il kernel.
EMG

sistema operativo senza utilizzare l'ASM almeno per il kernel.
Unix fu scritto al 93% in C e solo per il 6% in ASM ! ;)
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)

 wrote in message
%kj%3.8595$ge.7...@typhoon.libero.it...


 supporta o un'altro.
Ah, beh!
Allora la risposta è: quasi tutti i linguaggi vanno bene.
Anche il Pascal è stato usato per scrivere un SO, il che è tutto dire...
Ovvio che alcuni linguaggi sono meno adatti di altri, ma credo che il punto
focale sia la difficoltà di realizzare il supporto minimale del linguaggio.
Ovvero: in C devi implementare delle funzioni "semplici" come le printf,
scanf, ecc, che si interfacciano con l'hardware. Un linguaggio ad oggetti,
come il C++, ha cose più complicate da implementare per le stesse funzioni.
Se invece ti rivolgi ad architetture particolari (multi-processori,
data-flow machines, ecc.), devi (meglio: è preferibile) usare linguaggi
speciali che abbiano incorporate queste caratteristiche, se vuoi che anche
il SO le utilizzi. Avere un linguaggio che già di suo gestisce bene la
concorrenza dei processi, probabilmente ti facilita la stesura del codice, a
prezzo ovviamente di rendere un po' più complicata l'implementazione dei
costrutti del linguaggio.
Il problema principale, anche in questo caso, è che le librerie standard si
appoggiano pesantemente alle chiamate del SO per cui sono state realizzate,
e perciò non puoi usarle se stai scrivendo proprio un SO :-)))
--
Alessandro Monti

 Unix fu scritto al 93% in C e solo per il 6% in ASM ! ;)
Il totale fa 99%, come mai?
Comunque 6% > 0%, no?
--
Alessandro Monti

Andrew S. Tanenbaum (Architettura del computer, Un approccio
strutturale - pag 419, 420) confronta assembler e linguaggi ad alto
livello.
In sintesi dice che in assembler produci codice piu' efficiente, ma ci
metti molto di piu' e ci devono lavorare molte piu' persone.
Percio' i sistemi operativi vengono prima scritti per la maggior parte
in un linguaggio ad alto livello (da quando e' stato introdotto
generalmente il C) e poi vengono riscritte (o riscritte) in assembler
le parti critiche (che ammontano a circa il 10% del totale).
Se volete approfondire il discorso leggete la parte indicata del
Tananbaum.
Paolo

Comunque 6% > 0%, no?
Chi ha detto che deve essere 0% ?
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)

 Andrea Laforgia        (
andrea_...@bigfoot.com
)

 Unix fu scritto al 93% in C e solo per il 6% in ASM ! ;)
Appunto. Vista la mole di codice, anche solo il 6% significa dover
comunque imparare _bene_ anche l'ASM.
EMG

piattaforme. Correggetemi se sbaglio, è sempre meglio sapere queste cose.
La primissima versione di Unix fu scritta in assembly sul PDP-7, poi
il gruppo di ricerca a cui apparteneva la coppia K&R propose ai Bell
Labs l'acquisto del PDP-11, il cui uso fu motivato con la costruzione
di un programma di text-processing (che fu effettivamente realizzato).
Unix, quindi, venne riscritto per il PDP-11 ancora in assembly, ma
l'assemblatore era stato scritto in linguaggio B, di livello
intermedio ed ispirato al BCPL realizzato in Europa.
Venne quindi implementato un compilatore B sulla nuova macchina e il
linguaggio venne ribattezzato NB (New B).
Vennero scritti in questo linguaggio dei programmi di utilita' e venne
riscritto interamente il s.o.
Il C, in pratica, nacque come meta-linguaggio per la generazione di
codice NB, da compilare in un secondo momento.
Il linguaggi crebbe e si estese e nel 1973 Unix venne riscritto
totalmente in C.
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)
----------------------------------------------------
Windows98 is a trademark of Topo Gigio Corporation.

comunque imparare _bene_ anche l'ASM.
Be', quello che basta per scrivere 800 linee.
Unix, in tutto, contava 13800 linee.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

 Be', quello che basta per scrivere 800 linee.
Per me sarebbe comunque impossibile. :-(
EMG

you wrote :

Suppongo comunque di si', visto che il PDP11 era sicuramente meno
complesso di una macchina moderna.
--
Andrea Laforgia 
andrea_...@bigfoot.com

L'1% l'ho scritto io in LOGO.
In verità Laforgia ha fatto il  99% dell'1% . 
lo ho fatto il restante 1% scritto in BASIC 
=:D
mg...@polbox.com

preoccuparsi di quello che avviene dietro le quinte.
Pardon,cosa vuol dire "linguaggio procedurale?"
mg...@polbox.com

Pardon,cosa vuol dire "linguaggio procedurale?"
Sono quei linguaggi in cui si presuppone che i dati siano passati a
procedure e funzioni ed e' nettamente distinta la differenza tra
strutture dati e istruzioni che le gestiscono.
Con i linguaggi orientati agli oggetti, questa distinzione netta
scompare.
--
Andrea Laforgia
andrea_...@bigfoot.com