[Pluto-help] programmazione
Antonio Cuni
cuni a programmazione.it
Mar 16 Apr 2002 14:30:54 CEST
Il 18:31, lunedė 15 aprile 2002, Marco Cova ha scritto:
> Belle belle le flame war sui linguaggi di programmazione!
:-)
> Pių facile il C o il C++?
> Propongo il seguente metodo di misura: (da leggersi in tono
> ingegneristico[1]) si confronti la lunghezza in pagine del libro di
> riferimento standard di ciascuno dei linguaggi in confronto.
[cut]
non sta in piedi come teoria. Puoi benissimo dire che il C++ e` piu`
complesso (e per dire questo basta confrontare il numero di pagine degli
standard), ma non puoi dire cosi` facilmente quale sia il piu` "facile".
Tu proponi questa equazione:
specifiche del linguaggio meno corpose <=> linguaggio piu` semplice.
Ora ti propongo un controesempio:
consideriamo un esempio di Macchina di von Neumann; ecco le specifiche:
- il sistema dispone di 1000 celle di memoria
- ogni cella di memoria contiene 4 cifre decimali
- il sistema ha un dispositivo di input e uno di output
- la CPU ha due registri visibili al programmatore: ACC e PC
- all'accensione il registro PC e` inizializzato a 0.
- ad ogni ciclo di clock il processore legge la cella di RAM all'indirizzo
contenuto in PC e la esegue. Ogni istruzione e` nel formato XAAA, dove ogni
lettera corrisponde ad una cifra decimale
- a seconda del valore di X viene eseguita una diversa istruzione:
0: ACC = ACC + RAM[AAA]
1: ACC = ACC - RAM[AAA]
2: ACC = (input)
3: (output) = ACC
4: RAM[AAA] = ACC
5: ACC = RAM[ACC]
6: PC = AAA
7: if ACC==0 then PC==AAA
8: spegne la macchina
Questa macchina e` turing-complete e le sue specifiche occupano 18 righe.
Seguendo il tuo esempio dovremmo dire che e` piu` facile programmare
nell'assembly di questa macchina piuttosto che in C o in C++?
> > qui pero` non e` questione di pareri personali: e` semplicemente falso.
> > Mostrami un esempio di programma che puoi realizzare in C ma non in C++
> > (o che in C riesci a realizzare piu` facilmente che in C++).
>
> main() {}
> č un programma legale in C ma non valido in C++ (che poi ogni
> compilatore al mondo te lo compili č un altro discorso)[3]
hai fatto due errori:
1) quello che proponi tu non e` un programma legale in C: lo standard C99
proibisce la deduzione implicita del tipo di ritorno delle funzioni.
2) non ho chiesto "fammi un esempio di sorgente C che non compila in C++".
Volevo un esempio di programma che puoi realizzare in C ma non in C++.
> E come ti consente di fare meno errori del C? Hai tutte le cose
> "pericolose" del C (puntatori, gestione della memoria, switch con
> falling through automatico, etc), pių un sacco di altre robe?
appunto, hai un sacco di altre robe: un programmatore C e` costretto ad
utilizzare i costrutti a basso livello del C.
Un bravo programmatore C++ utilizza molto raramente i costrutti a basso
livello, correndo meno rischi di sbagliare.
Che poi la maggior parte dei programmatori C++ e` tutt'altro che "brava" e`
un altro discorso.
Tanto per fare un esempio terra-terra.
1) Prendi un programma in C
2) rinomina il sorgente da "sorgente.c" a "sorgente.cpp"
3) sostituisci tutti gli array dinamici con std::vector
4) sostituisci tutti i char* con std::string
Non hai forse ottenuto un programma piu` semplice da capire e realizzare?
> [3] "In this, standard C++ differs from earlier versions of C and C++
> that allowed the first two examples by considering int to be the type
> when none were specified", Stroustroup, The C++ programming language,
> 3rd edition, page 80
> Hint: main restituisce int
non capisco il bisogno della citazione: non ho mai affermato il contrario e
lo sapevo benissimo.
ciao Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.73, higher than 99% of all previous test takers.
C Language: 3.79, higher than 92% of all previous test takers.
Guida C/C++ di Programmazione.it: http://cpp.programmazione.it
More information about the pluto-help
mailing list