LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Вобщем, так и быть, я посмотрел источники откуда это всё взялось. Так вот, повторю в очередной раз, ты не прав.

Первоисточник этой идеи тут: https://web.archive.org/web/20180716171336/http://www.fortran.com/fortran/com...

Во-первых, там речь про фортран. Метки в нём не глобальные, как ты пытался заявить.

Во-вторых, работает он именно так, как писал я, за одним исключением. Там действительно может быть сопутствующий if, но этот if, так же как и comefrom, НЕ выполняется в той строчке где он написан. Выполняется он в строчке той метки, которая аргумент comefrom, и при успехе делается goto.

Опустив неудобный фортрановский синтаксис, ситуация такая:

50:    qwe
..............
       if(i==1) comefrom 50
       asd
эквивалентно такому
       qwe
       if(i==1) goto 50a
..............
50a:   asd

Comefrom это не «установить хук когда код дойдёт до comefrom», это именно «указание компилятору вставить goto, возможно условное, в нужную строчку». Условное тут - goto, а не его вставка. Вставка делается всегда.

А реализация на ruby не соответствует спецификации. Соответствующую спецификации сделать, наверно, невозможно.

В-третьих, там в конце («box 2») прямым текстом говорится что это аналог цикла с меткой на конце, про который я выше писал, а этот самый цикл с меткой широко использовался фортран-программистами десятилетиями и ничего странного они в нём не видели.

Исправление firkax, :

Вобщем, так и быть, я посмотрел источники откуда это всё взялось. Так вот, повторю в очередной раз, ты не прав.

Первоисточник этой идеи тут: https://web.archive.org/web/20180716171336/http://www.fortran.com/fortran/com...

Во-первых, там речь про фортран. Метки в нём не глобальные, как ты пытался заявить.

Во-вторых, работает он именно так, как писал я, за одним исключением. Там действительно может быть сопутствующий if, но этот if, так же как и comefrom, НЕ выполняется в той строчке где он написан. Выполняется он в строчке той метки, которая аргумент comefrom, и при успехе делается goto.

Опустив неудобный фортрановский синтаксис, ситуация такая:

50:    qwe
..............
       if(i==1) comefrom 50
       asd
эквивалентно такому
       qwe
       if(i==1) goto 50a
..............
50a:   asd

Comefrom это не «установить хук когда код дойдёт до comefrom», это именно «указание компилятору вставить goto, возможно условное, в нужную строчку». Условное тут - goto, а не его вставка. Вставка делается всегда.

В-третьих, там в конце («box 2») прямым текстом говорится что это аналог цикла с меткой на конце, про который я выше писал, а этот самый цикл с меткой широко использовался фортран-программистами десятилетиями и ничего странного они в нём не видели.

Исправление firkax, :

Вобщем, так и быть, я посмотрел источники откуда это всё взялось. Так вот, повторю в очередной раз, ты не прав.

Первоисточник этой идеи тут: https://web.archive.org/web/20180716171336/http://www.fortran.com/fortran/com...

Во-первых, там речь про фортран. Метки в нём не глобальные, как ты вы пытался заявить.

Во-вторых, работает он именно так, как писал я, за одним исключением. Там действительно может быть сопутствующий if, но этот if, так же как и comefrom, НЕ выполняется в той строчке где он написан. Выполняется он в строчке той метки, которая аргумент comefrom, и при успехе делается goto.

Опустив неудобный фортрановский синтаксис, ситуация такая:

50:    qwe
..............
       if(i==1) comefrom 50
       asd
эквивалентно такому
       qwe
       if(i==1) goto 50a
..............
50a:   asd

Comefrom это не «установить хук когда код дойдёт до comefrom», это именно «указание компилятору вставить goto, возможно условное, в нужную строчку». Условное тут - goto, а не его вставка. Вставка делается всегда.

В-третьих, там в конце («box 2») прямым текстом говорится что это аналог цикла с меткой на конце, про который я выше писал, а этот самый цикл с меткой широко использовался фортран-программистами десятилетиями и ничего странного они в нём не видели.

Исправление firkax, :

Вобщем, так и быть, я посмотрел источники откуда это всё взялось. Так вот, повторю в очередной раз, ты не прав.

Первоисточник этой идеи тут: https://web.archive.org/web/20180716171336/http://www.fortran.com/fortran/com...

Во-первых, там речь про фортран. Метки в нём не глобальные, как ты вы пытался заявить.

Во-вторых, работает он именно так, как писал я, за одним исключением. Там действительно может быть сопутствующий if, но этот if, так же как и comefrom, НЕ выполняется в той строчке где он написан. Выполняется он в строчке той метки, которая аргумент comefrom, и при успехе делается goto.

Опустив неудобный фортрановский синтаксис, ситуация такая:

50:    qwe
..............
       if(i==1) comefrom 50
       asd
эквивалентно такому
       qwe
       if(i==1) goto 50a
..............
50a:   asd

Comefrom это не «установить хук когда код дойдёт до comefrom», это именно «указание компилятору вставить goto, возможно условное, в нужную строчку». Условное тут - goto, а не его вставка. Вставка делается всегда.

В-третьих, там в конце прямым текстом говорится что это аналог цикла с меткой на конце, про который я выше писал, а этот самый цикл с меткой широко использовался фортран-программистами десятилетиями и ничего странного они в нём не видели.

Исходная версия firkax, :

Вобщем, так и быть, я посмотрел источники откуда это всё взялось. Так вот, повторю в очередной раз, ты не прав.

Первоисточник этой идеи тут: https://web.archive.org/web/20180716171336/http://www.fortran.com/fortran/com...

Во-первых, там речь про фортран. Метки в нём не глобальные, как ты вы пытался заявить.

Во-вторых, работает он именно так, как писал я, за одним исключением. Там действительно может быть сопутствующий if, но этот if, так же как и comefrom, НЕ выполняется в той строчке где он написан. Выполняется он в строчке той метки, которая аргумент comefrom, и при успехе делается goto.

Опустив неудобный фортрановский синтаксис, ситуация такая:

50:    qwe
..............
       if(i==1) comefrom 50
       asd
эквивалентно такому
       qwe
       if(i==1) goto 50a
..............
50a:   asd

Comefrom это не «установить хук когда код дойдёт до comefrom», это именно «указание компилятору вставить goto, возможно условное, в нужную строчку». Условное тут - goto, а не его вставка. Вставка делается всегда.