Domanda

Nello spirito della ultima podcast di cui Joel detto che gli piacerebbe alcune semplici domande con risposte possibilmente interessanti ...

Negli ambienti che abbiamo per il programma di oggi non si può fare affidamento su l'ordine di esecuzione delle nostre affermazioni langauage. È vero? Dovremmo essere preoccupati?

Will 30 GOTO 10 sempre andare a 10? *

* non ho usato 20 di proposito;)

[modifica] per le quattro persone che votano per la chiusura di questa domanda ...

"compilatori Runtime informazioni di profilo per ottimizzare il codice in fase di compilazione. La JVM è consentito l'uso di informazioni specifiche per l'esecuzione al fine di produrre codice migliore, il che significa che il metodo di compilazione M in un programma può generare il codice diverso da quello compilazione M in un altro "

(da Java concorrenza in pratica, del 2006, Goetz et al)

.. dare un'occhiata alla "chiamata monomorfa trasformazione"

[modifica]

e un altro modificare, il processore è permesso di scambiare l'ordine di esecuzione delle istruzioni ...

È stato utile?

Soluzione

No, non lo farà. Ma sarà sempre si comportano , come se lo facesse. Una delle regole fondamentali nella progettazione del compilatore è il "come se" regola. Il compilatore può fare qualunque cosa cambia che vuole, a patto che il risultato si comporterà come se che ci si seguito le regole della lingua.

GOTO 10 può decidere di passare a qualche altro posto, a patto che il compilatore può garantire che non cambierà l'esito del programma.

Quindi no, non dovrebbe ti preoccupi.

Altri suggerimenti

No, se hai

40 COMEFROM 30

da qualche parte nel codice.

alt text

Bene, non sarà se non eseguire, ad esempio, se c'è un 20 GOTO 40.

In BASIC, sì. In altre lingue, verrà generato un errore di compilazione.

Che cosa stai cercando di dire? Chiunque sostenendo di essere un programmatore dovrebbe sapere (soprattutto dopo il suggerimento) che dipende da ciò che è sulle linee 10 e 20, e chi è stato su SO per più di una settimana dovrebbe rendersi conto che questa domanda non sembra aggiungere molto.

Dovremmo fare affidamento sul codice di fare esattamente quello che ci diciamo a. Se diciamo a GOTO 10 sulla linea 30, ma anche dire che per saltare la linea 30, che non dovrebbe essere l'ultima sorpresa quando è saltata la linea 30. Abbiamo detto che il programma.

È vero, se si considera le CPU multi-core l'esecuzione di un programma BASIC, uno dei core potrebbe perdere accidentalmente il GOTO (suggerimento: "TLB Bug"). E continuare come se non ci fosse

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top