(no subject)

Wednesday, 7 September 2011 17:11
gns_ua: (Default)
[personal profile] gns_ua
то что ты сейчас пытаешься сделать (использовать ассемблер в программах на Delphi) — ошибка. Генетическая. Российская. Всей образовательной системы страны. Таких преподов надо увольнять сразу же. Если выжигать эту дурь из мозгов каленым железом не получается. Правильно им копейки платят. Они это заслужили.

http://lurkmore.ru/Pascal#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B_.D0.9F.D0.A0.D0.90.D0.92.D0.94.D0.AB_.D0.BF.D1.80.D0.BE_Delphi

А я говорил!

2011-09-07 21:54 (UTC)
- Posted by [identity profile] ctype.livejournal.com
использование нескольких returnов в одной функции - еще более расово неверно, чем goto

2011-09-08 16:03 (UTC)
- Posted by [identity profile] ctype.livejournal.com
потому что нарушает "линейность" логики, как и goto

2011-09-08 16:04 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
O_o

2011-09-08 16:34 (UTC)
- Posted by [identity profile] st-archer.livejournal.com
Ничуть. Вы блок-схемку простую нарисуйте для такой процедуры.

2011-09-08 17:16 (UTC)
- Posted by [identity profile] ctype.livejournal.com
goto в блок-схемках также хорошо выглядит :)

2011-09-08 17:18 (UTC)
- Posted by [identity profile] st-archer.livejournal.com
Ненене. В случае return концовка-то у всех будет общая :)

2011-09-08 17:25 (UTC)
- Posted by [identity profile] ctype.livejournal.com
это в случае goto EndOfFunction концовка будет общая :)
а в случае return мы получаем несколько семантически несвязных концовок

2011-09-08 17:37 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
o_0

Смысл существования функции - вернуть результат. Она его возвращает. В зависимости от разных условий, результат может возвращаться разный.

def mod(a):
    if a > 0:
        return a
    else:
        return -a

Ну давай на стеке поднимать int res, присваивать его в двадцати местах делать, а потом извращаться с готой либо управляющими конструкциями чтобы оказаться в конце и вернуть res. Правда, где этот res образовался потом хуй отследишь, но кого это волнует, лишь бы ретурнили его в одном месте.

Бывает конечно, иногда, что надо не просто ретурн а ещё и финалайзить, снимать мутексы какие-нибудь и всё такое. Решается return finalize([мойтекущийрезультат]). Где финалайз - ЛОКАЛЬНАЯ субфункция.

2011-09-08 17:55 (UTC)
- Posted by [identity profile] ctype.livejournal.com
так я не спорю. я и к goto спокойно отношусь, если оно по месту. да что уж там, ассемблерные вставки и то, редко-редко но нужны

но с точки зрения "расовой чистоты" return нарушает линейность flow , вместе со всем комплексом проблем goto - т.е. в последующем сопровождении ведет к ошибкам исполнителя

2011-09-08 18:00 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Да нет никакой линейности флоу.

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

Давай, взорву мозг :

def myfunc(a,b):
return someotherfunc

myfunc(a,b)(args)

Расскажи про линейность флоу, неподдерживаемый спагетти и ошибки исполнителя %)

2011-09-08 18:04 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Проблема гото не в том что они нарушают линейность. Проблема в том, что они не нужны. Вообще :)

2011-09-08 18:40 (UTC)
- Posted by [identity profile] ctype.livejournal.com
множественные ретурны это частный случай гоуту , эквивалентный, со всеми вытекающими.
не понимаю как можно ругать одно из них и защищать другое

2011-09-08 20:15 (UTC)
- Posted by [identity profile] v-l-a-d.livejournal.com
операторы циклов и вызовы подпрограмм/методов - это в какой-то степени тоже частный случай гоуту

2011-09-08 17:54 (UTC)
- Posted by [identity profile] st-archer.livejournal.com
Эм, ну да, оди фиг, вощимто. Просто блок-схема то подразумевает понятя "начало"и "конец", а оно таки конец :) Вопрос в том, что все ретурны сходятся в одной точке - и соответственно, спагетти-кода не будет. Впрчоем, как и в случае использования гото. Тут - вопрос вкуса.

2011-09-08 17:30 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Хлопцы, что вы курили и где такое дают ?

Какие, в жопу, блоксхемы? На блок-схеме вот это говно совершенно идентично вот этой питонятине:

def test(a):
    if a > 30:
        print "a>30"
    elif a > 20:
        print "A>20"
    elif a > 10:
        print "A>10"
    else:
        print "A TOO SMALL!"
        return False
    # maybe something more
    print "DONE"

2011-09-08 17:54 (UTC)
- Posted by [identity profile] st-archer.livejournal.com
Ээээ, ну да, действительно. С гото просто почти не работал :)

2011-09-08 16:05 (UTC)
- Posted by [identity profile] ctype.livejournal.com
это еще со времен обструкции goto

2011-09-08 16:06 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
жж0шь.

Profile

gns_ua: (Default)
gns_ua

April 2017

M T W T F S S
     12
3456789
10111213141516
17181920212223
24252627282930

Expand Cut Tags

No cut tags