[Pluto-help] programmazione

Gianluca Montecchi gianluca a pluto.linux.it
Mar 16 Apr 2002 21:25:05 CEST


Il mar, 2002-04-16 alle 14:30, Antonio Cuni ha scritto:
> 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".

Siamo sempre al punto di partenza. Cosa intendi per semplice ? Il fatto
che sia semplice da leggere o che e' semplice da usare ? 

> Tu proponi questa equazione:
> 	specifiche del linguaggio meno corpose <=> linguaggio piu` semplice.

Diciamo forse meno potente. 

> 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++?

In teoria si. Nella pratica chiaramente no. Anche se poi puo' non essere
cosi' stupido usare l'assembler per programmare questa macchina al posto
del C. I microcontrollori, ad esempio i pic usati in robotica
(pic16f84xx) li programmi normalmente in assembler nonstante esista il
compilatore 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.

Vero e falso. Se programmi in C hai molto controllo su quello che
scrivi. Se usi C++ invece il compilatore mette molto di suo.

E' quello che il compilatore mette di suo che puo' crearti qualche
grattacapo.

> 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?

Capire forse si. Realizzare forse no.

La fai troppo semplice. Non puoi semplicemente applicare queste regole. 
Se vuoi scrivere del buon codice C++, devi cambiare il modo di
programmare. Altrimenti scrivi del codice ibrido e a quel punto rischi
guai grossi. 

bye

Gianluca


-- 
We are the opensource. Existence as you know it is over. We will add
your proprietary features and technological distinctiveness to own
opensource project. Resistence is futile. Windows is closed.





More information about the pluto-help mailing list