Newsgroup: it.comp.lang.c++
Titolo: Domanda

Beh, magari č piů indicato il C++.
Scusate, questo č una domanda postata sulla scrittura degli SO. Cosa ne
pensate:
Linux e' scritto in C e assembly (come Unix, tra l'altro, 94% di C e
6% di assembly). E' stato scartato il C++, perche' troppo complicato
per la scrittura di sistemi operativi. I s.o. sono programmi che
devono interagire a basso livello con l'hardware e/o il BIOS (se ne
usano le funzioni) e c'e' bisogno di avere un buon controllo del
codice oggetto generato.
Questo controllo si riesce ad ottenerlo in modo ottimale sfruttando
l'assembly ed un linguaggio di livello intermedio come il C.
I linguaggi come il C++ servono ad astrarre da tutti questi aspetti ed
ostacolano la gestione manuale del codice generato.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

 ostacolano la gestione manuale del codice generato.
Assolutamente no: il C++ e` ricco di feature che permettono il
controllo desiderato.  La genericita` (template), in particolare, e`
veramente preziosa a questi fini implementativi.
Alex

Mi risulta che OS/400, il sistema operativo dell'AS400 sia scritto in
C++ e che Bill Joy (uno dei principali artefici dello Unix BSD, autore
tra l'altro di vi, collaboratore alla realizzazione di Java e Jini)
intendesse a suo tempo riscrivere Solaris in C++.
Ciao,
Nicola

 Nicola

Che io sappia e' ancora in C, poiche' deriva molto da vicino dal
"vecchio" 4.3 BSD, con qualche iniezione da System V 3.2 e qualche
rimaneggiamento al tempo della cordata Sun/ATT (nascita di Solaris 2.x).
Ciao,
Nicola

Richard Stallman, fondatore della GNU e padre del movimento Open Source ha
detto:
"scrivete i vostri programmi in C, perchè è conosciuto da più persone, e
così più persone potranno modificarlo"(più o meno...).
Per quanto riguarda Linux, è penso che sia adottato il C oltre che per i
motivi indicati prima, appunto anche perchè è conosciuto da più persone...
--
Marco Iannaccone
marc...@tin.it
Nick: Tolkien
ICQ UIN: 18748121
"Questa è una nave moderna, ma ha un nome antico e glorioso...
Trattala come una signora e ti riporterà sempre a casa"
FAQ di it.comp.lang.c:
http://www.programmazione.it/linguaggi/c/itcomplangc.htm

 motivi indicati prima, appunto anche perchè è conosciuto da più persone...
Lei quindi accetta i pareri sbagliati che sono stati dati sul C++?


così più persone potranno modificarlo"(più o meno...).
Hummm...
A pranzo oggi si mangia spaghetti al pomodoro perché è il piatto più mangiato
dagli italiani.
:-)
Seriamente: spero che Stallman sia diventato famoso per affermazioni più felici
di questa.
AB
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Andrea Baruzzo
Via Circonvallazione, 26
Muzzana del Turgnano (UD) - Italy
e-mail: 
andrea....@ud.nettuno.it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ostacolano la gestione manuale del codice generato.
IMO sono ragionamenti da pigri programmatori che si cullano
della loro beata ignoranza delle tante cose che non vogliono
neanche provare ad imparare (sospetto per non rischiare
di ritrovarsi spiazzati).
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

> Lei quindi accetta i pareri sbagliati che sono stati dati sul C++?
No, no! Il mio era solo un tentativo di dare una spiegazione alla domanda,
che tra l'altro vale più che altro per Linux e per l'Open Source in
generale.  Sto muovendo da poco i primi passi col C++ (come si sarà intuito
conosco il C...), e lo trovo assolutamente grandioso...
--


 non costa piu` di quello procedurale.
Ma ha senso parlare di OOP senza polimorfismo?
EMG

 cosě piů persone potranno modificarlo"(piů o meno...).
Sono attualmente in contatto con Stallman per vedere se un certo
progetto debba diventare o meno parte di GNU, e questo argomento
non e` assolutamente emerso (se no, le trattative si sarebbero gia`
interrotte, perche` i linguaggi in gioco per questo progetto sono C++,
Python, Common Lisp, ed eventualmente OCAML, *NON* certo il C:-).
Immagino dunque che la citazione in questione sia vecchissima e
superata dalle circostanze.
Alex

"scrivete i vostri programmi in C, perchè è conosciuto da più persone,
E` una affermazione molto rigida... secondo me non tiene conto di molti
altri fattori, in primis l'attuale notevole diffusione del C++.


 wrote in message
news:38BB870B...@flashnet.it...

Buona domanda.  C++ discende da "C With Classes", un'estensione
del C (escogitata sempre da Stroustrup) che le classi (e quindi gli
oggetti) li supportava, ma il polimorfismo no (niente "virtual"...).
Secondo me la terminologia corretta per linguaggi di questo tipo
e` "object-BASED" (non -ORIENTED); un altro esempio e` la
prima versione di Ada, similmente capace di generare "oggetti"
(una versione piu` potente del concetto di "modulo" di Modula-2,
perche` di una classe di oggetti puoi comunque avere molteplici
istanze, mentre un "modulo" e` necessariamente "singleton")
ma senza polimorfismo (interessante il parallelo Ada vecchia->nuova,
CwC->C++, Modula2 -> Modula3, tutti casi di linguaggi object
based che diventano object oriented nell'evoluzione successiva).
Alex

Può darsi, l'ho letta in un articolo sull'Open Source...


Come ho già detto sopra, ho solo riportato un possibile motivo "storico"...
In effetti ormai è molto più diffuso il C++...


di ritrovarsi spiazzati).
Effettivamente, puo' darsi che Torvalds lo fosse al momento della
scrittura del kernel di linux.


 e` "object-BASED" (non -ORIENTED);
Infatti č esattamente cosě che chiamo il Clipper, un linguaggio in cui,
perň, si ottiene una sorta di polimorfismo grazie all'assenza di
tipizzazione.
EMG

Ma ha senso parlare di OOP senza polimorfismo?
Il polimorfismo e` una colonna portante della OOP, ma
questo non significa che sia sempre necessario
utilizzarlo. Se non hai la necessita` di lavorare
con oggetti polimorfi non significa che devi
rinunciare alla OOP... ci sono altre caratteristiche
che la rendono utile e valida.


 wrote in message
news:38BC09CB...@flashnet.it...

Non conosco bene Clipper, ma immagino che, piu` che di
"assenza" di tipizzazione, si tratti di tipizzazione dinamica (a
run-time).
Il polimorfismo cosi` ottenuto e` virtualmente indistinguibile
da quello ottenuto con le VTBL ecc (a parte le prestazioni e
il rischio di errori di programmazione); ad esempio, e` cosi`
che si ha il polimorfismo in Smalltalk, che nessuno si sogna
di definire "non" object-oriented!-)
Alex

 di definire "non" object-oriented!-)
Questo mi fa piacere, dato che il Clipper č il linguaggio che uso di
piů. :-)
EMG

 nelle dichiarazioni (ma solo di scope/lifetime locale o statico).
Ma sicuramente, quando ti interessa, puoi _controllare_ il tipo, giusto?
Ad esempio con un modello ad eccezioni (try/catch) o simile come:
    try:
        x.metodo()
        x[94] = 23
        x=x+x
    except TypeError:
        print "x non polimorfico a .metodo(void), operator[int]=int, e
x=x.operator+(x)"
    else:
        print "x e` polimorfico a tutte le operazioni di interesse"
Alex

>più. :-)
Scusate l'intromissione ma avendo usato il Clipper per molti anni non mi sogno lontanamente di paragonarlo a Smalltalk (neanche con le emoticons).
Clipper e' object baseed? Si ma puoi solo creare oggetti di 4 classi se non ricordo male. Potenzialmente aveva la struttura per permettere anche la creazioni di classi (e quindi sarebbe diventato class based) ma nel linguaggio non erano state inseriti le istruzioni per farlo. Io avevo un'estensione che ad esempio permetteva di fare classi (non ricordo il nome).
Il Clpper e' stato un grande linguaggio (come fai ad usarlo ancora, boh) ma aveva anche cose strane come ad esempio l'assenza di costrutti per creare propri tipi o aggregati di tipi (le struct del C per intenderci).
.. anche se il messaggio puo' sembrarlo non voleva assolutamente essere polemico ma solo una "chiaccherata"...
Antonio

 Clipper e' object baseed?
Ti rispondo in privato. Comunque, a titolo informativo, si, è pienamente
object based, se non addirittura (dopo il discorso di Alex Martelli)
pienamente OO.
EMG

 Ma sicuramente, quando ti interessa, puoi _controllare_ il tipo, giusto?
Giusto! C'è una funzione che mi permette di conoscere il tipo di una
variabile (o di un'espressione) in esecuzione. Quindi tipizzazione
dinamica nel senso che la variabile assume un tipo al momento
dell'assegnamento.
EMG

 ha scritto:

Ti ho risposto anch'io in privato anche se potevamo anche farlo sul newsgroup, credo.
Comunque la domanda che hai riporato, aveva anche la risposta: "Si, ma ci sono solo 4 classi per creare oggetti".
Non e' Object Oriented perche' non puoi derivare classi da altre classi.
Siccome in privato mi hai dato notizia di istruzioni non documentate per la creazioni di classi Clipper si puo' considerare Class based.
Antonio

 
Credo che quell'affermazione fosse da prendersi soltanto come un
consiglio; in realta' RMS non ha nulla contro gli altri linguaggi, ed
infatti sono moltissimi i programmi scritti in C++ (ed altro) che sono
ormai di proprieta' della FSF.
Ciao,
-- 
Diego    | Per le repliche elimina dal mio indirizzo le 
Dainese  | `x' e inverti le due parole intorno alla `@'