|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#41 | ||
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
e ad ogni modo ammettendo anche l'if oltre al jump del goto l'allocazione di un blocco di heap e chiamata al costruttore dell'eccezione su Windows costa comunque di più (tra chiamate a funzioni varie del runtime di Visual C++, chiamate della Heap API di Win32, eventuali chiamate al Virtual Memory Manager con conseguente switch in kernel mode se necessario, ritorno all'user mode, chiamata al costruttore, e chi più ne ha più ne metta). Quote:
|
||
|
|
|
|
|
#42 | ||||||
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Quote:
), ma Windows le eccezioni le ha eccome: usa un meccanismo che si chiama SEH (Structured Exception Handling).Quote:
Quote:
Quote:
Quote:
|
||||||
|
|
|
|
|
#43 | ||
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
de gustibus
Quote:
Codice:
VOID main(VOID)
{
__try
{
__try
{
RaiseException(1, // exception code
0, // continuable exception
0, NULL); // no arguments
}
__finally
{
printf("2 "); // this is printed second
}
}
__except ( FilterFunction() )
{
printf("3\n"); // this is printed last
}
}
Quote:
Ciao |
||
|
|
|
|
|
#44 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
no, non si tratta di gusti... i segnali fanno proprio oggettivamente schifo
![]() Quote:
2) certo se poi tu dichiari il main come void, anzi VOID... 3) sbaglio o ci mancava una printf("1 ") ?
|
|
|
|
|
|
|
#45 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Mi sembrava di aver capito però che Microsoft non ne consigliasse l'uso in C++. |
|
|
|
|
|
|
#46 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
|
|
|
|
|
#47 |
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
|
|
|
|
|
|
#48 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Che ci debba essere ALMENO un if / condizione è cosa naturale: deve accadere, nel normale flusso dell'elaborazione, che da qualche parte qualcuno deve accorgersi che una richiesta non possa andare a buon fine. Il problema è: come gestire questa condizione d'errore? La prassi con C & affini è quella della catena di if, dal primo che l'ha rilevata fino all'ultimo che la deve poi gestire. Tutti if condizionali, che, come sai, sono i peggiori da trattare per un processore. In C++ la prassi sarebbe: al primo if sollevo una precisa eccezione, che viene intercettata dal primo handler "utile". Quindi un solo if condizionale e basta. Il guadagno mi sembra evidente: a parte il primo if che è comune a entrambi, nel primo caso c'è la penalizzazione di effettuare SEMPRE controlli sul risultato, mentre nel secondo non c'è nessun if e tra l'altro l'eccezione viene costruita soltanto quando si verifica. Questo a livello teorico, raffrontando un approccio tradizionale a uno basato sulle eccezioni. Poi se nella pratica abbiamo sistemi che sono basati esclusivamente sul primo, oppure che sono un misto fra il primo e il secondo, ne prendo atto, non c'è problema.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
|
#49 |
|
Bannato
Iscritto dal: May 2001
Città: Versilia
Messaggi: 1503
|
è bello notare (almeno ai miei tempi) come questo costrutto :
http://en.wikipedia.org/wiki/Spaghetti_code Codice:
10 i = 0 20 i = i + 1 30 PRINT i; " squared = "; i * i 40 IF i < 10 THEN GOTO 20 50 PRINT "Program Completed." 60 END anche in pascal... ora mi chiedo, se una cosa è "sbagliata" o è meglio non usarla per tanti motivi...non sarebbe meglio non insegnarla nemmeno, specialmente nelle classi inferiori, e trattarlo solamente come "distinguo" nei corsi superiori?? oddio magari ora è cosi... spero ps per quanto riguarda torvalds, io non ne capisco una mazza di queste cose a questo livello, quindi non uccidetemi... il costrutto goto avrà qualche pregio? tipo la velocità di esecuzione? forse linus è convinto di gestire tutti i problemi del goto a livello di ingegnerizzazione del kernel, e "beneficiare" di qualche pregio di goto?? altrimenti perchè lo fa?? Ultima modifica di guyver : 13-03-2008 alle 09:17. |
|
|
|
|
|
#50 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mai fatto il goto alle superiori...sia in C che in Pascal
|
|
|
|
|
|
#51 |
|
Bannato
Iscritto dal: May 2001
Città: Versilia
Messaggi: 1503
|
beato... vallo a dire alla mia professoressa che non sapeva neanche accenderlo il pc eh eh... una volta mi pare in 4, ci ritrovammo a disegnare un coniglio in codice ascii in pascal
mooolto utile....cosa? il c? mai visto ah che mondo...
Ultima modifica di guyver : 13-03-2008 alle 09:26. |
|
|
|
|
|
#52 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Monza
Messaggi: 2073
|
l'ho usato una volta .... voto -> 2, da quel momento ho capito ... goto-> BRUTTO
__________________
In Omnia Paratus - Improvvisare, Adattarsi, Raggiungere lo scopo XboxLive: WhiteWolf56933, PSN: WhiteWolf056933, Steam:WhiteWolf056933 |
|
|
|
|
|
#53 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#54 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
da noi se qualcuno si azzardava a usare il goto il prof gli staccava un braccio a morsi
stessa cosa per le variabili globali comunque per dire la mia.. il goto forse (e dico forse) è utilizzabile quando si ha a che fare con codice di basso livello (OS, driver ecc..) dove il più delle volte abbiamo rinunciato alla leggibilità molto prima di avere introdotto un banalissimo goto. se parliamo di tutti gli altri casi è un costrutto assolutamente inutile. il problema è che meno LOC non implica necessariamente che il codice sia più leggibile, anzi io mi aspetterei che oltre una certa soglia diventi meno leggibile. in ogni caso secondo me il framework .NET è un pochino offuscato da qualche software.. oppure la mente di chi l'ha scritto è offuscata o magari semplicemente si tratta di ottimizzazioni create in automatico a partire dal sorgente originale |
|
|
|
|
|
#55 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Mai vista una label in C#, su nessuno dei miei e degli altrui programmi. Neanche se ne sente la necessita'. Quoto praticamente tutto tranne il fatto che sia un costrutto assolutamente inutile. Per me e' addirittura dannoso (non per la velocita' chiaro, ma per la leggibilita'). Si possono fare grandi "danni" anche senza il goto comunque.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#56 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
esatto
|
|
|
|
|
|
#57 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Monza
Messaggi: 2073
|
quoto & aggiungo: oltre alla leggibilità ne perde molto anche la manutenzione e ls sicurezza. I salti incondizionati sono SEMPRE pericolosi.
L'unica eccezione IMHO la si può concepire quando si scrive un driver ... in quel caso le performance sono il punto n°1 ... in tutti gli altri casi: CROCEFISSO IN SALA MENSA !!!
__________________
In Omnia Paratus - Improvvisare, Adattarsi, Raggiungere lo scopo XboxLive: WhiteWolf56933, PSN: WhiteWolf056933, Steam:WhiteWolf056933 |
|
|
|
|
|
#58 |
|
Bannato
Iscritto dal: May 2001
Città: Versilia
Messaggi: 1503
|
allora se un programmatore ha i cosiddetti OO
può usare il goto per velocizzare il codice (vedi linus) se riesce a non fare casini e anche se si perde di leggibilità e manutenzione, in alcuni casi, dove la performance viene prima di tutto può essere accettato..? una specie di tricks da usare con coscenza e metodo... |
|
|
|
|
|
#59 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
Quote:
|
|
|
|
|
|
|
#60 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 1278
|
Quote:
Anche a distanza di tempo dubito che una persona si ricordi il perchè di un salto...(incondizionato)
__________________
Non esistono grandi uomini, solo grandi ambizioni , realizzate da qualcuno che si è alzato dalla sedia per realizzarle! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:37.












), ma Windows le eccezioni le ha eccome: usa un meccanismo che si chiama SEH (Structured Exception Handling).
mooolto utile....








