Автор Тема: Форыч зло  (Прочитано 18797 раз)

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Форыч зло
« Ответ #30 : Ноябрь 22, 2013, 10:00:03 am »
Вспоминается старый добрый FoxPro, у которого во всех циклах, включая аналог форыча SCAN были LOOP и EXIT и никто по этому поводу проблем не испытывал.

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
Re: Форыч зло
« Ответ #31 : Ноябрь 22, 2013, 12:02:29 pm »
some_loop(...)
{
    statement1;
    if (condition) continue;
    statement2;
}
эквивалентноsome_loop(...)
{
    statement1;
    if (!condition)
    {
        statement2;
    }
}
Ну и зачем, спрашивается, нужен continue? Только для того, что бы уменьшить вложенность у statement2 (ценой ухудшения понятности кода)?
Очевидно, что он был введён для этого:
some_loop(...)
{
    statement1;
    if (!condition1)
    {
        statement2;
        if (condition2)
             continue;
    }
}
А 1-й легкозаменимый вариант просто неизбежное следствие наличия ненужных конструкций в языке
« Последнее редактирование: Ноябрь 22, 2013, 12:04:20 pm от kkkk »

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
Re: Форыч зло
« Ответ #32 : Ноябрь 22, 2013, 12:06:22 pm »
Моё упущение, надо было так:
some_loop(...)
{
    statement1;
    if (!condition1)
    {
        statement2;
        if (condition2)
             continue;
    }
    statement3;
}

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Форыч зло
« Ответ #33 : Ноябрь 22, 2013, 12:39:45 pm »
Вспоминается старый добрый FoxPro, у которого во всех циклах, включая аналог форыча SCAN были LOOP и EXIT и никто по этому поводу проблем не испытывал.
Ага. Проблемы испытывали/испытывают те, кто теперь в этих поделках пытается разобраться.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Форыч зло
« Ответ #34 : Ноябрь 22, 2013, 12:52:39 pm »
Ага. Проблемы испытывали/испытывают те, кто теперь в этих поделках пытается разобраться.

Гы. Фокспро вообще легендарная вещь в плане создания несопровождаемых программ. Циклы - лишь одно из средств...

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Форыч зло
« Ответ #35 : Ноябрь 22, 2013, 02:30:47 pm »
Вспоминается старый добрый FoxPro, у которого во всех циклах, включая аналог форыча SCAN были LOOP и EXIT и никто по этому поводу проблем не испытывал.
Ага. Проблемы испытывали/испытывают те, кто теперь в этих поделках пытается разобраться.
А это проблема та же, что сейчас в 1С - код, написанный профессиональными программистами, легко понимается и сопровождается, а остальные поделки, написанные наспех обученными школьниками, анализу не поддаются )))
К тому же, языковые конструкции здесь не причём  - если в голове бардак, то ничто не спасёт, об этом уже 100500 раз говорилось.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Форыч зло
« Ответ #36 : Ноябрь 22, 2013, 02:40:02 pm »
Думаю(вернее надеюсь), что если запретить форыч, бряки и контины, то многие говнокодеры внезапно станут профнепригодны.... Ну или им придется таки повышать свою квалификацию.  :)

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Форыч зло
« Ответ #37 : Ноябрь 23, 2013, 09:45:07 am »
Они перестанут писать циклы вообще ))
В до-синт-сахарные времена так и было - говнокодеры дико боялись писать сколь-нибудь непримитивный цикл и бежали искать библиотеку/компонент.
Если для Delphi не находилось готового компонента - шли к начальству и докладывали, что задача неразрешима на данной фазе научно-технического прогресса.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Форыч зло
« Ответ #38 : Ноябрь 23, 2013, 10:24:30 am »
Они перестанут писать циклы вообще ))
В до-синт-сахарные времена так и было - говнокодеры дико боялись писать сколь-нибудь непримитивный цикл и бежали искать библиотеку/компонент.
Если для Delphi не находилось готового компонента - шли к начальству и докладывали, что задача неразрешима на данной фазе научно-технического прогресса.

Сейчас также. И дело не в циклах.
Y = λf.(λx.f (x x)) (λx.f (x x))

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Форыч зло
« Ответ #39 : Ноябрь 23, 2013, 11:58:50 am »
Сейчас также - это ясно ))

Я про другое - что в своём коде старались не писать циклов вообще, кроме самых тупых for.
Даже всерьёз давались советы: "Если вы видите, что вам требуется цикл сложнее, чем for, поищите библиотечную функцию и не изобретайте велосипед".

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Форыч зло
« Ответ #40 : Ноябрь 23, 2013, 12:13:10 pm »
Сейчас также - это ясно ))

Я про другое - что в своём коде старались не писать циклов вообще, кроме самых тупых for.
Даже всерьёз давались советы: "Если вы видите, что вам требуется цикл сложнее, чем for, поищите библиотечную функцию и не изобретайте велосипед".

У функциональных программистов этот совет актуален и сейчас: если вы видите, что у вас получилась рекурсия, попробуйте переделать функцию с использованием стандартных map/reduce/filter/zip.  :P
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Форыч зло
« Ответ #41 : Ноябрь 23, 2013, 01:16:04 pm »
Сейчас также - это ясно ))

Я про другое - что в своём коде старались не писать циклов вообще, кроме самых тупых for.
Даже всерьёз давались советы: "Если вы видите, что вам требуется цикл сложнее, чем for, поищите библиотечную функцию и не изобретайте велосипед".

У функциональных программистов этот совет актуален и сейчас: если вы видите, что у вас получилась рекурсия, попробуйте переделать функцию с использованием стандартных map/reduce/filter/zip.  :P

Это вообще очень хороший совет - по возможности использовать более узкоспециализированные высокоуровневые вещи вместо чуть причесанного синтаксически goto. Просто потому, что в этом случае при чтении кода лучше будет понятна суть происходящего.
Y = λf.(λx.f (x x)) (λx.f (x x))

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Форыч зло
« Ответ #42 : Ноябрь 23, 2013, 06:57:40 pm »
Знаешь, глядя на вызов какой-то специализированной функции (допустим, коих в каком-нибудь быдло-скрипте типа PHP сотни), я должен гадать, что она делает, хотя это могло быть записано 3-5 строками кода, про который ничего не нужно гадать :)

Не напастись стандартных решений на все нестандартные ситуации. При динамичном перемещении в пространстве Проще получить права (научиться грамотно программировать) и купить автомобиль (использовать инструменты-языки универсальной категории, а не высокозасахаренные), чем пытаться покрыть все свои потребности общественным транспортом или заказом такси :)