Newsgroup: it.comp.lang.c++
Titolo: [sondaggio] cosa NON vi piace del c++ (linguaggio)

volevo proporvi un sondaggio per mia curiosità (e potrebbe comunque
tornare utile a tutti)
cosa non vi piace del c++, inteso come linguaggio (cioè senza
considerare le librerie, comprese quella standard)?
cosa togliereste o aggiungereste?
penso che da questo sondaggio possa risultare che qualcuno crede che
al c++ manchi una feature che invece ha, o altre situazioni simili
-- 
]\/[ad]\/[age (
www.mindreamz.net
)
"Un Maestro insegue semplicemente la sua visione di Eccellenza in
qualunque cosa sta facendo e lascia agli altri decidere se sta 
lavorando o giocando. A lui sembra sempre di fare entrambe." - Anonimo

 o aggiungereste?
mi sembra sia giŕ ben piazzato cosě com'č :-)
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.2. C, C++ and ASM developers
                               and beta testers are welcome!

 
Nei settaggi del compilatore puoi disabilitare la gestione delle eccezioni 
indi eliminare l'overhead dovuto a tale meccanismo.

 ha scritto nel messaggio
news:Xns93E7E5D0F8765gi...@213.140.2.16...

ed il programma come sta in piedi poi ???
ciao

 considerare le librerie, comprese quella standard)?
La sua complessità. Ma se la seconda domanda fosse "Cosa invece vi
piace?" risponderei: la sua complessità. :-)
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

per usare le eccezioni, sarebbe un mondo migliore per tutti
un esempio pratico di come gestiresti le eccezioni tu?


 
Le evenutali eccezioni generate semplicemente non sono trappabili. Il 
programma non e' in grado di gestire, non vedo cosa ci sia di cosi' strano.
Per il resto non ho ben capito cosa intendi dire...tutti i videogiochi che 
programmo e anche il mio personale motore grafico, non prevedono l'uso di 
eccezioni per la segnalazione di errori; uso il vecchio metodo del valore 
di ritorno delle funzioni (stile C per intenderci).

 un esempio pratico di come gestiresti le eccezioni tu?
Ecco cosa non mi piace delle eccezioni:
class A {}; class B : public A {};
void f1() {throw new B();}
void f2() {try {f1();} catch(A*a) {throw a;} }
void f3() {try {f2();} catch(B*b) {/*non viene eseguito*/} }
Una cosa analoga in Java funziona, cioè la catch valuta il tipo 
effettivo dell'oggetto e non il tipo formale usato nella throw 
corrispondente.
Un'altra cosa che però penso sia irrisolvibile è la necessità di non 
tirare eccezioni dai distruttori (per evitare che se ne accavallino 2 -> 
abort).
Più in generale il problema non riguarda solo C++ ma il modello ad 
oggetti ed è cosa fare in caso di errore durante la distruzione di un 
oggetto o la liberazione di una risorsa.

 per intenderci)
l'unico modo per interrompere un costruttore resta un'eccezione


 un esempio pratico di come gestiresti le eccezioni tu?
mi spiegherò con un esempio. In Windows, OS/2 e Windows NT le eccezioni 
sono un meccanismo del sistema (ovviamente indipendente dal linguaggio, 
quindi non afflitto da RTTI), quindi ragionevolmente leggero e con poco 
overhead. Tutto quello che puoi sollevare è un codice di errore. Se non 
ti basta, nell'exception record c'è spazio per 15 interi con precisione 
pari a quella di un puntatore. Al C++, evidentemente, lo spazio basta e 
avanza, perchè i compilatori di questi interi ne usano generalmente tre 
(per la cronaca: signature, puntatore all'eccezione e puntatore al tipo 
dell'eccezione). Il rethrow non è necessario perchè per eseguire codice 
non è obbligatorio catturare l'eccezione, si può fare anche mentre è in 
corso la ricerca di un handler. Per l'unwinding non serve un catch, c'è 
un costrutto apposta (__try...__finally) per definire blocchi di codice 
di finalizzazione, permettendo di fare l'unwinding in un colpo solo. Il 
punto non è copiare questo meccanismo, ma almeno cercare di avvicinarsi 
alla sua semplicità. Non so, permettere di sollevare una sola classe di 
eccezioni, ad esempio. Permettere di scegliere tra il meccanismo pulito 
e carino ma che si tira dietro una bella stazza in metadati e librerie, 
e quello sporco e type-unsafe (orrore!) ma che più che consumare un po' 
di spazio sullo stack non fa niente di inaccettabile. E' tanto bello il 
C++, proprio non vedo perchè dovrei rinunciare alla maggior parte delle 
sue caratteristiche più interessanti soltanto perchè dipendono tutte da 
quella più discutibile


 di ritorno delle funzioni (stile C per intenderci).
si ma ci sono molti casi che le eccezioni ti servono ... anche solo per non
vedere il programma automaticamente chiuso senza sapere dove e perche' ...
e cmq mi pare che generi overhead solo in caso esca un eccezione e non
sempre nel codice no ???
ciao

eccezione e non sempre nel codice no ???
No, il meccanismo di trap delle eccezioni e' sempre presente e genera 
sempre un overhead anche se, detto tra noi, a parte in casi particolari 
come possono essere i driver, non e' che l'overhead generato sia poi 
cosi' alto...spesso e' davvero trascurabile.
Se ti piace usare le eccezioni, non stare troppo a preoccuparti della 
"lentezza" della loro gestione.
Penso che alla fine sia piu' che altro una questione di preferenze; a me 
il meccanismo delle eccezioni non piace proprio per cui non lo uso e 
posso sempre vantare la scusa ufficiale che "cosi' il prg e' piu' 
veloce" :-)

 ritorno.
  Non penso. Per esempio le eccezioni sono utilissime perche' chiamano i
distruttori di tutte le variabili automatiche che sono in vita.
Nell'ambito di un approccio RAII, dove le risorse le acquisisci tramite
smart pointers e compagnia bella, e' una manna dal cielo, IMHO.
_dave_

 quella più discutibile
  Scusa l'OT ma... 21 righe consecutive perfettamente allineate senza
spazi o altro... ma come hai fatto?!? :)
_dave_

 spazi o altro... ma come hai fatto?!? :)
Sarą la scuola del Serni...
:-)
-- 
Gerolamo

 wrote in news:pan.2003.09.01.13.31.24.150598
@
tin.it
:

Si hai ragione, ci sono casi in cui le eccezioni servono e come.
A me personalmente l'intero meccanismo delle eccezioni non piace affatto, 
pero' non posso certo dire che sia inutile.
Rimango dell'idea che in 9 casi su 10 sia possibile fare a meno delle 
eccezioni, pero' mi rendo conto che, se c'e' chi le usa e le trova comode 
da usare, non vedo xche' dovrebbe farne a meno:-)
W il c++

 :-)
no, soltanto mania dell'ordine :-) Ho iniziato bilanciando la larghezza 
delle righe per tenerle di lunghezza simile ed evitare l'effetto "costa 
frastagliata" (da non confondersi con l'effetto "fiordo", riguardante i 
quoting a livelli multipli - che comunque aggiusto a mano :-). Ho prima 
continuato forzando la stessa lunghezza, poi forzando la lunghezza a 72 
caratteri e infine giustificando anche la signature e l'intestazione di 
reply. Ho considerato i programmi di riformattazione del plain text, ma 
il loro modo di giustificare le righe con la ripetizione di spazi non è 
che mi piaccia tanto
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.3. C, C++ and ASM developers


 spazi o altro... ma come hai fatto?!? :)
pratica :-)
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.3. C, C++ and ASM developers
