[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