Talk:Jump anywhere: Difference between revisions
Content added Content deleted
No edit summary |
(It depends on the language) |
||
Line 21: | Line 21: | ||
::: That would normally involves unwinding the stack, then, because if you are going out of a proc or function and not coming back, you have to clean up what's already allocated for your current scope, or everyone gets confused -- unless your language doesn't have a stack concept, which is rare. --[[User:Ledrug|Ledrug]] 08:39, 11 June 2011 (UTC) |
::: That would normally involves unwinding the stack, then, because if you are going out of a proc or function and not coming back, you have to clean up what's already allocated for your current scope, or everyone gets confused -- unless your language doesn't have a stack concept, which is rare. --[[User:Ledrug|Ledrug]] 08:39, 11 June 2011 (UTC) |
||
:::: Yeah. It depends on the language. A local jump within the same procedure would probably not need an unwind. A global jumb could need an unwind, and the unwind may be done at source, prior to the jump or at destination following the jump. Jumping out of a procedure (following a call) is not usually a good idea, although it may be for a critical reason, such as an abort. I would just stick a note saying "the stack will need to be unwound, before this jump is performed" and cross reference to the stack unwinding task. Some languages may have a garbage collector, which removes the need to unwind the stack. Maybe it would be tidier to split the task into Jumps/Local, Jumps/Global and Jumps/With stack unwinding. --[[User:Markhobley|Markhobley]] 10:20, 11 June 2011 (UTC) |
Revision as of 10:20, 11 June 2011
Draft task
My new task description might not match my intent. I have a short Ruby example, but I want to add more Ruby code, and some C code. --Kernigh 02:41, 19 May 2011 (UTC)
- OK, I'll monitor and ask about changes needed for the Python as things develop :-)
--Paddy3118 02:54, 19 May 2011 (UTC)
- Tcl (8.6) has pretty much the same capabilities as Python in this area. (When people ask for general jump anywhere capabilities, we tend to be somewhat brusque in our dismissals; it's totally against nice structured programming as well as being evil.) I'll keep an eye on the evolution of the page to see whether I want to omit or implement. Generally, should continuations be a solution of this task? Or is it more about setjmp/longjmp? –Donal Fellows 17:51, 19 May 2011 (UTC)
- Just to be clear, this is not to diss having a task on continuations. It's just they're not simple jumps; if we split, we can easily justify another task specifically for them. –Donal Fellows 19:09, 19 May 2011 (UTC)
- Tcl (8.6) has pretty much the same capabilities as Python in this area. (When people ask for general jump anywhere capabilities, we tend to be somewhat brusque in our dismissals; it's totally against nice structured programming as well as being evil.) I'll keep an eye on the evolution of the page to see whether I want to omit or implement. Generally, should continuations be a solution of this task? Or is it more about setjmp/longjmp? –Donal Fellows 17:51, 19 May 2011 (UTC)
Demonstrate a local jump and a global jump
It might be better for the task to be demonstrate a local jump and a global jump. (Currently the requirement appears to be for a global jump, requiring a new task to be created for a local jump).
Markhobley 14:19, 19 May 2011 (UTC)
I propose that unwinding of the call stack is moved to a separate task, and rename this task to "Demonstrate local and global jumps". Keeping the tasks separated, enables the solutions to remain simple, and separates aspects. --Markhobley 16:40, 6 June 2011 (UTC)
- What is a "global jump"? Continuation? Longjump (which involves stack)? --Ledrug 03:04, 11 June 2011 (UTC)
- I assumed that a local jump is to a label within the same procedure (or block of procedures), whereas a global jump is to anwhere within the program. --Markhobley 08:12, 11 June 2011 (UTC)
- That would normally involves unwinding the stack, then, because if you are going out of a proc or function and not coming back, you have to clean up what's already allocated for your current scope, or everyone gets confused -- unless your language doesn't have a stack concept, which is rare. --Ledrug 08:39, 11 June 2011 (UTC)
- Yeah. It depends on the language. A local jump within the same procedure would probably not need an unwind. A global jumb could need an unwind, and the unwind may be done at source, prior to the jump or at destination following the jump. Jumping out of a procedure (following a call) is not usually a good idea, although it may be for a critical reason, such as an abort. I would just stick a note saying "the stack will need to be unwound, before this jump is performed" and cross reference to the stack unwinding task. Some languages may have a garbage collector, which removes the need to unwind the stack. Maybe it would be tidier to split the task into Jumps/Local, Jumps/Global and Jumps/With stack unwinding. --Markhobley 10:20, 11 June 2011 (UTC)