1. 7 мес. назад

    Почему оператор goto считается быдлокодингом?

    Ответы: (2) (26) (93)
  2. ‹ Ранее
  3. 7 нед. назад

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

    Одним из хороших способов использования goto является выход из нескольких уровней вложения. Например:

    for(...) {
    for (...) {
    while (...) {
    if (...) goto stop;
    ...
    }
    }
    }
    printf("error in program\n");

    Уничтожение goto приведет к необходимости выполнения дополнительных проверок. Простой оператор break здесь не работает, поскольку он может выйти только из самого нижнего цикла.

    Если проверяется каждый цикл, то код будет выглядеть следующим образом:

    done = 0;
    for(...) {
    for(...) {
    while (...) {
    if (...) {
    done = 1;
    break;
    }
    ...
    if(done) break;
    }
    if(done) break;
    }
    http://www.c-cpp.ru/books/metki-i-goto

    Как раз мой случай.
    Так что те "программисты", которые безапелляционно назвали мой код говнокодом идут на ... курсы программирования и становятся настоящими программистами

    Ответы: (403) (405) (421)
  4. Эльниньо «Качество программистов — это уменьшающаяся функция плотности использования операторов goto в программах, которые они пишут» © Эдсгер Дейкстра

    Deprecated. Со времен Дейкстры появилось много новых, прогрессивных способов производить говнокод. Кое-какие из них уже затрагивались в этой ветке.

    Ответы: (402)
  5. ТеньД Deprecated. Со времен Дейкстры появилось много новых, прогрессивных способов производить говнокод. Кое-какие из них уже затрагивались в этой ветке.

    Какие именно?

    Ответы: (404)
  6. (400)

    Уничтожение goto приведет к необходимости выполнения дополнительных проверок.

    Меньшее зло в сравнении с безусловным переходом.

    Если проверяется каждый цикл, то код будет выглядеть следующим образом:

    done = 0;
    for(...) {
    for(...) {
    while (...) {
    if (...) {
    done = 1;
    break;
    }
    ...
    if(done) break;
    }
    if(done) break;
    }
    http://www.c-cpp.ru/books/metki-i-goto

    Как раз мой случай.

    У меня для тебя плохие новости. Так писать не надо. Нормальные сишники знают, что условие выхода прекрасно помещается в объявлении for, отдельными операторами это делать не нужно.

    Ответы: (405)
  7. (402)

    Какие именно?

    ООП, функциональщина, декларативные языки. По каждому направлению свои способы выстрелить себе в ногу и украсить govnokod.ru

  8. 07.02.2020 15:52:40 отредактировано Эльниньо

    ТеньД (400)
    У меня для тебя плохие новости. Так писать не надо. Нормальные сишники знают, что условие выхода прекрасно помещается в объявлении for, отдельными операторами это делать не нужно.

    Может ты перепишешь, как надо (138) на зависть всем, а не станешь прятаться за кучей умных слов, как парочка местных "программистов"?
    "Так писать не надо" может сказать любой.
    Ты покажи, как надо

    Ответы: (409) (413)
  9. Эльниньо Сдрысни [...] гавно с профветки.

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

    Про алгоритм свой расскажи. Он тебе приснился или роды были трудными?

    Ответы: (407)
  10. Луч света не волнуйся ты так.
    внушили тебе что стальной бидон это летящая ракета, мало ли таких внушаемых как ты, не принимай близко к сердцу.
    Про алгоритм свой расскажи. Он тебе приснился или роды были трудными?

    [...]. Ты чё такой тугой?
    Тебе же сказано - сдрысни с профветки и решай свои проблемы с юношескими комплексами в другой ветке.

    Ответы: (408) (411)
  11. (407) ты все равно в теме [...] не понимаешь, копипастишь и самолюбованием занимаешься :)

    Ответы: (411)
  12. (405) Примерно так, запускать студию и чекать мне лениво
    Finish = 0;
    for (i1 = 1; i1 <= d1 || Finish; i1++)
    {
    for (i2 = 1; i2 <= m1[i1] || Finish; i2++)
    {
    for (i3 = 1; i3 <= m2[i1,i2] || Finish; i3++)
    {
    for (i4 = 1; i4 <= m3[i1,i2,i3] || Finish; i4++)
    {
    if m4[i1,i2,i3,i4] == Yes
    {
    cout << "Координаты " << Yes << " = " << i1,i2,i3,i4;
    Finish = 1;
    }
    }

    }

    }
    }

    Ответы: (413)
  13. Эльниньо Я вирусы писал на ассемблере и на Си. Попробовал на Паскале. Нунах. Про С++ молчу
    Максимум подменить прерывание 26

  14. Луч света (407) ты все равно в теме [...] не понимаешь, копипастишь и самолюбованием занимаешься :)

    Полудурок. Я в тему привёл свой код с goto в расчёте на обсуждение профи. Как оказалось, тут профи нет, есть только стучальщики пятками в грудь.
    А потом и вообще прибежал местный полудурок и засрал всю ветку

    Ответы: (412) (422)
  15. 07.02.2020 16:11:20 отредактировано Луч света

    Эльниньо Я в тему привёл свой код с goto в расчёте на обсуждение профи. Как оказалось, тут профи нет

    почему ты решил что это твой код?

    Ответы: (414)
  16. 07.02.2020 16:15:16 отредактировано Эльниньо

    ТеньД (405) Примерно так, запускать студию и чекать мне лениво
    Finish = 0;
    for (i1 = 1; i1 <= d1 || Finish; i1++)
    {
    for (i2 = 1; i2 <= m1[i1] || Finish; i2++)
    {
    for (i3 = 1; i3 <= m2[i1,i2] || Finish; i3++)
    {
    for (i4 = 1; i4 <= m3[i1,i2,i3] || Finish; i4++)
    {
    if m4[i1,i2,i3,i4] == Yes
    {
    cout << "Координаты " << Yes << " = " << i1,i2,i3,i4;
    Finish = 1;
    }
    }

    }

    }
    }

    Ну наконец-то конкретно хоть что-то.
    Теперь скажи, почему это лучше? Потому, что умные дяди сказали, что goto это плохо или ?

    Ответы: (415) (416)
  17. Луч света почему ты решил что это твой код?

    Ты думаешь, что ты троллишь, а на самом деле свою дурь светишь

  18. (413) Да, использовать goto в C без очень веской причины дурной тон. В твоем примере я достаточно веской причины не вижу. Страдает, как минимум, читаемость кода. Скорее всего просядет быстродействие.

    Если перейти от теории к практике, то подобный кусок кода вызовет вопрос на ревью. С последующим указанием переделать как надо. Если автор кода упрется и разведет дискуссию о хорошем стиле кода, вопрос будет решен в административной плоскости.

    Ответы: (416) (432)
  19. ТеньД (413) Да, использовать goto в C без очень веской причины дурной тон. В твоем примере я достаточно веской причины не вижу. Страдает, как минимум, читаемость кода. Скорее всего просядет быстродействие.

    Если перейти от теории к практике, то подобный кусок кода вызовет вопрос на ревью. С последующим указанием переделать как надо. Если автор кода упрется и разведет дискуссию о хорошем стиле кода, вопрос будет решен в административной плоскости.

    Спасибо за высказанное мнение.
    Может ты скажешь, какую задачу решает этот код? А то местные "гуру" слились, только один 3.14зда почти угадал

    Ответы: (417) (426) (429)
  20. Эльниньо Может ты скажешь, какую задачу решает этот код?

    твой же вроде бы код, забыл что он решает?

    Ответы: (418)
  21. Луч света твой же вроде бы код, забыл что он решает?

    Иди уже куда я тебя послал, жалкое [...]

    Ответы: (419)
  22. (418) ты напряжен, отдохнуть тебе надо

  23. Эльниньо Да ни кого ты не заборол. Ты спалился.

    Так ты согласился со мной или все еще споришь? Я что-то не понял. Определись уже. Если споришь, то уточни с чем конкретно не согласен, я поясню.

  24. Эльниньо Одним из хороших способов использования goto является выход из нескольких уровней вложения. Например:

    Это яркий пример, сколько боли доставляет использование оператора FOR. Что даже GOTO приходится использовать. Жесть

    Ответы: (438)
  25. Эльниньо Как оказалось, тут профи нет

    Ты так говоришь, потому что твой код обоссали со всех сторон. Понимаю, тебе обидно, но настоящий мужик должен принимать критику с достоинством, а не кидаться какашками

    Ответы: (423)
  26. webdev Ты так говоришь, потому что твой код обоссали со всех сторон. Понимаю, тебе обидно, но настоящий мужик должен принимать критику с достоинством, а не кидаться какашками

    Ты обоссал со всех сторон?
    Ради чего так старался?
    Ты не обижайся, но и из тебя программист, как из говна пуля

    Ответы: (424) (425)
  27. Эльниньо Ты не обижайся, но и из тебя программист, как из говна пуля

    лучи поноса подчас разрезают унитаз на части
    если чо, вебдев это не я

    Ответы: (463)
  28. Эльниньо Ты обоссал со всех сторон?

    Не только я. Вообще никому твой код не понравился.

    Эльниньо Ты не обижайся, но и из тебя программист, как из говна пуля

    Я не обижаюсь на твои слова. Я понимаю что ты не можешь оценить мой уровень программиста со своего уровня, и просто пишешь гадости от обиды.

  29. (416) Не люблю телепатировать бесплатно. Навскидку поиск перебором чего-то там в многомерном массиве

    Ответы: (429)
  30. sda553 Ну давайте что ли найдем в тыще строк наибольшую общую подстроку. У кого оптимальнее выйдет

    Размер строк одинаковый?

    Ответы: (428) (430)
  31. (427) неа

    Ответы: (430)
  32. ТеньД (416) Не люблю телепатировать бесплатно. Навскидку поиск перебором чего-то там в многомерном массиве

    Именно так, всё просто, как три копейки. А для местных "гуру" это оказалось непосильной задачей

  33. sda553 (427) неа

    Для начала проверим вхождение самой маленькой строки в остальные строки

    Ответы: (431)
  34. Эльниньо Для начала проверим вхождение самой маленькой строки в остальные строки

    Напиши это в виде программы. И что будешь делать если она не входит в остальные строки.

    Ответы: (433)
  35. ТеньД Страдает, как минимум, читаемость кода. Скорее всего просядет быстродействие.

    По быстродействию ровно наоборот.
    Возьмём небольшой массив 1000,1000,1000,1000
    Сколько лишних проверок выполнит твой код?
    около 1000000000000 в случае, если необходимое значение окажется в конце.
    А значит применение goto просто необходимо при больших массивах

    Ответы: (453)
  36. webdev что будешь делать если она не входит в остальные строки.

    Возьму бубен

    Ответы: (435)
  37. webdev по какому критерию оптимальнее? По памяти или быстродействию или красоте кода?

    sda553 на этот вопрос еще не ответил

    Ответы: (437)
  38. Эльниньо Возьму бубен

    Напиши программу

    Ответы: (436)
  39. webdev Напиши программу

    Это твой подход - не продумав, не составив ТЗ, сходу начать ваять?
    И почему я не удивлён?

    Ответы: (446)
  40. 07.02.2020 19:55:28 отредактировано sda553

    (434) хотелось бы, чтобы сложность алгоритма была О(n).
    По крайней мере я знаю такое решение.
    Но если что, могу сделать скидку до O(n^3)

    Ответы: (447)
  41. webdev Это яркий пример, сколько боли доставляет использование оператора FOR. Что даже GOTO приходится использовать. Жесть

    Напиши поиск нужного значения в четырёхмерном массиве без For

    Ответы: (449)
  42. 07.02.2020 20:06:35 отредактировано sda553

    Если что О(n) означает, что алгоритм выполнит задачу за один обход данных. (Или константное количество обходов, тк такое можно свести к одному обходу)
    О(n^2) потребуется обход данных, внутри которого будет еще один вложенный обход тех же данных. И тд

    Ответы: (441) (471)
  43. Бывают алгоритмы О(log(n)) где даже не требуется обходить все данные. Например алглритм поиска значения в отсортированном списке

    Ответы: (444)
  44. sda553 Если что О(n) означает, что алгоритм выполнит задачу за один обход данных. (Или константное количество обходов, тк такое можно свести к одному обходу)
    О(n^2) потребуется обход данных, внутри которого будет еще один вложенный обход тех же данных. И тд

    С рекурсией скорее всего можно и в один обход

    Ответы: (442) (443)
  45. (441) сам понял чо написал?

    Ответы: (443)
  46. Курильщик (441) сам понял чо написал?

    А ты?
    Слово незнакомое?
    Рекурсия - вызов функцией самой себя до достижения нужного результата.

    Ответы: (445)
  47. sda553

    string.find() используем?

  48. Эльниньо Рекурсия - вызов функцией самой себя до достижения нужного результата.

    та ты ЧО!

  49. Эльниньо Это твой подход - не продумав, не составив ТЗ, сходу начать ваять?

    Нет, ты снова ошибся.

    Эльниньо И почему я не удивлён?

    Потому что своим собственным фантазиям обычно не удивляются

  50. sda553 хотелось бы, чтобы сложность алгоритма была О(n).

    n - это длина строки?

    Ответы: (448) (451) (467)
  51. (447) количество действий и тп.

  52. Эльниньо Напиши поиск нужного значения в четырёхмерном массиве без For

    Уже давно написал и выложил сюда. У тебя с памятью что-то?

  53. 1 #include <stdio.h>
    2 #include <stdlib.h>
    3
    4 int main(void)
    5 {
    6 unsigned long long i;
    7 for (i = 1; i < 100000000000; i++){
    8 unsigned long long j;
    9 for (j = 1; j < 100000000000; j++){
    10 unsigned long long k;
    11 for (k = 1; k < 10000000000; k++){
    12 if (k == (10000000000 - 1)) {
    13 goto end;
    14 }
    15 }
    16 }
    17 }
    18 end:
    19 printf("This is the End.");
    20 }

    r2d2@darkstar:~/test$ time ./1
    This is the End.
    real 0m23,907s
    user 0m23,907s
    sys 0m0,000s
    r2d2@darkstar:~/test$ time ./1
    This is the End.
    real 0m23,891s
    user 0m23,892s
    sys 0m0,000s

  54. 07.02.2020 21:26:11 отредактировано sda553

    (447) не суть важно. Ну пусть для определенности это будет суммарная длина строк

    Ответы: (467)
  55. 1 #include <stdio.h>
    2 #include <stdlib.h>
    3 #include <stdbool.h>
    4
    5 int main(void)
    6 {
    7
    8 unsigned long long l = 0;
    9 unsigned long long i;
    10 bool need_leave = false;
    11 for (i = 1; !need_leave && i < 10000000000; i++){
    12 unsigned long long j;
    13 for (j = 1; !need_leave && j < 10000000000; j++){
    14 unsigned long long k;
    15 for (k = 1; k < 10000000000; k++){
    16 l++;
    17 if (k == (10000000000 - 1)) {
    18 need_leave = true;
    19 break;
    20 //goto end;
    21 }
    22 }
    23 }
    24 }
    25 end:
    26 printf("This is the End.");
    27 }

    r2d2@darkstar:~/test$ time ./2
    This is the End.
    real 0m25,883s
    user 0m25,832s
    sys 0m0,048s

    r2d2@darkstar:~/test$ time ./1
    This is the End.
    real 0m24,725s
    user 0m24,721s
    sys 0m0,004s
    r2d2@darkstar:~/test$ time ./1
    This is the End.
    real 0m26,676s
    user 0m26,640s
    sys 0m0,032s

    Ответы: (454)
  56. Эльниньо По быстродействию ровно наоборот.
    Возьмём небольшой массив 1000,1000,1000,1000
    Сколько лишних проверок выполнит твой код?
    около 1000000000000 в случае, если необходимое значение окажется в конце.
    А значит применение goto просто необходимо при больших массивах

    я ответил на твой вопрос?
    нет разницы по быстродействию что с гото что без него

    Ответы: (456) (468)
  57. Курильщик r2d2@darkstar

    Правильно: r2d2@deathstar

    Ответы: (455)
  58. (454) правильно для кого?

  59. Курильщик нет разницы по быстродействию что с гото что без него

    Ясное дело. Потому что на 10000000000 итераций происходит только одна проверка.

    Ответы: (457) (466)
  60. (456) и?

  61. Какого продолжения ты ждешь?

  62. Эл просил сравнить 2 разных обхода циклов, с гоуту и с брэйком. Я сравнил. Результаты выше.

    Ответы: (461)
  63. И да r2d2@deathstar неправильно

    Ответы: (462)
  64. Курильщик Эл просил сравнить 2 разных обхода циклов, с гоуту и с брэйком. Я сравнил. Результаты выше.

    А я написал что и без того было очевидно что результат будет одинаковый. Ты сравнил как будто для тупого. Все. Продолжения никакого не требуется.

    Ответы: (464)
  65. Курильщик И да r2d2@deathstar неправильно

    Значит ты не понял о чем я. Даже не интересно узнавать твои аргументы. Я не для этого написал.

    Ответы: (465)
  66. jsmith82 если чо, вебдев это не я

    :)

  67. (461) не всем это очевидно, Эл - не очевидно.

  68. webdev Значит ты не понял о чем я.

    Нет я не понял о чем ты.
    Даркстар это дефолтовое имя хоста на слаке есичо.

  69. webdev Ясное дело. Потому что на 10000000000 итераций происходит только одна проверка.

    ?

  70. sda553 (447) не суть важно. Ну пусть для определенности это будет суммарная длина строк

    Ты говорил кол-во обходов.
    На ходу условие менять не комильфо

    Ответы: (469) (470)
  71. Курильщик я ответил на твой вопрос?
    нет разницы по быстродействию что с гото что без него

    Пятничный коньячок не позволяет внимательно посмотреть твой код.
    А так вроде ты прав

    Ответы: (481)
  72. 07.02.2020 23:39:22 отредактировано Курильщик

    (467) O(n) не обозначает что то конкретное, лишь тенденцию стоимости алгоритма от количества элементов/итераций и т.п.

  73. Эльниньо Ты говорил кол-во обходов.
    На ходу условие менять не комильфо

    Это курильшик писал. Но он наверное не понял о чем вопрос.

  74. sda553 Если что О(n) означает, что алгоритм выполнит задачу за один обход данных. (Или константное количество обходов, тк такое можно свести к одному обходу)
    О(n^2) потребуется обход данных, внутри которого будет еще один вложенный обход тех же данных. И тд

  75. https://tproger.ru/articles/computational-complexity-explained/amp/

    Ответы: (473)
  76. sda553 https://tproger.ru/articles/computational-complexity-explained/amp/

    Косячище!!! Ячейка 30 : 2^n в таблице должна быть желтого цвета, а она черного.

  77. sda553 Ну давайте что ли найдем в тыще строк наибольшую общую подстроку. У кого оптимальнее выйдет

    Лес рук

  78. Есть мысль как это сделать О(н) по операциям, но по памяти выходит не оптимально. Времени запрограммировать пока не было.
    Твой вариант сколько использует памяти?

    Ответы: (476)
  79. 6 нед. назад
    12.02.2020 07:27:44 отредактировано sda553

    (475) o(n) по памяти так же

  80. Прочитал сейчас утверждение: "Python постепенно вытесняет JavaScript".
    Ваше мнение, гуру?
    А то я начал игрушку на JS писать

    Ответы: (478) (485)
  81. Эльниньо Прочитал сейчас утверждение: "Python постепенно вытесняет JavaScript".
    Ваше мнение, гуру?
    А то я начал игрушку на JS писать

    Спасибо. Ты сделал мой день.

    Ты бы сначала канал немчинского посмотрел бы.

    Ответы: (479)
  82. stackoverflow Спасибо. Ты сделал мой день.

    Там был вопрос. Прочитай ещё раз 5 внимательно.
    Ах да - вопрос был к гуру. Извини

  83. Ты сейчас сравнил яблоко с грушей.

    На тебе кейсы питона:

    Про кейсы жабаскрипта тебе напомнить?

  84. Эльниньо Пятничный коньячок не позволяет внимательно посмотреть твой код.
    А так вроде ты прав

    Выпей боярочки, узбагойся, и пойми наконец разницу между питоном и жо есом.

    Ответы: (482)
  85. stackoverflow Выпей боярочки, узбагойся, и пойми наконец разницу между питоном и жо есом.

    Нормально ответить может кто-нибудь, [...]?

    Ответы: (483)
  86. Эльниньо Нормально ответить может кто-нибудь, [...]?

    Тебе ответа немчинского с комментариями математиков мало?

    Ответы: (484)
  87. Мой опыт подсказывает, что чем больше [...], тем больше слово "Быдло" перед "кодер"

    stackoverflow Тебе ответа немчинского с комментариями математиков мало?

    Это мнение Немчинского. Есть ещё [...] туча мнений других спецов.
    Я ваше мнение спросил. Отвечать не хочете. Жопой виляете

    Ответы: (488)
  88. Эльниньо Прочитал сейчас утверждение: "Python постепенно вытесняет JavaScript".
    Ваше мнение, гуру?
    А то я начал игрушку на JS писать

    В каких-то мизерных кейсах может кто-то и перешел с JS на Питон. На общей статистике никак не отражается. Продолжай писать на том, на чем писал.

  89. Нет профессии Программист Питон.

    Его используют люди различных профессий - девопсы, дата сайнтисты, специалисты по ML, автоматизаторы.

    JavaScript же из другой оперы - его используют фронтендеры и специализированные бекендеры для микросервисов : извлечь из базы NoSql отдать клиенту.

  90. -image-

  91. Эльниньо Мой опыт подсказывает, что чем больше [...], тем больше слово "Быдло" перед "кодер"
    Это мнение Немчинского. Есть ещё [...] туча мнений других спецов.
    Я ваше мнение спросил. Отвечать не хочете. Жопой виляете

    Ты долбоеб что ли? Какое мнение? Он тебе рассказал, зачем нужен питон. Я тебе повторил. Иди гугли, что скажут другие. Тоже самое.

    И да, что за срашкинский тренд переходить с . на.. ?

    Обычно ценятся спецы, которые и то, и другое умеют.

    Уйти можно только с пыха.

    Ответы: (489)
  92. stackoverflow Ты долбоеб что ли? Какое мнение? Он тебе рассказал, зачем нужен питон.

    Тебя, тупой укроп, не спрашивали зачем какой язык. Спросили твоё мнение, по поводу, что Питон обогнал Жавускрипт по востребованности.

    Ответы: (490)
  93. Эльниньо Тебя, тупой укроп, не спрашивали зачем какой язык. Спросили твоё мнение, по поводу, что Питон обогнал Жавускрипт по востребованности.

    [...], ты лох. Востребованы спецы, умеющие и то, и другое. Точка.

    Ответы: (491)
  94. stackoverflow [...], ты лох. Востребованы спецы, умеющие и то, и другое. Точка.

    Ещё один "гуру" жопой виляет интенсивно вместо ответа на простой вопрос.
    Ты тоже будешь сейчас пафосно утверждать, что применение if - признак быдлокода, как твой земляк вебдев?

    Ответы: (492)
  95. Эльниньо Ещё один "гуру" жопой виляет интенсивно вместо ответа на простой вопрос.
    Ты тоже будешь сейчас пафосно утверждать, что применение if - признак быдлокода, как твой земляк вебдев?

    Ну да, настоящая программа не должна содержать ни одного if. Только while.

    Ответы: (494) (501)
  96. Сам ты земляк этого лоха, лох! Охренел чтоли меня называть его земляком! Сучий потрох

    Ответы: (495)
  97. Эльниньо похоже вы с ним земляки. while бляха муха :))))

    stackoverflow Только while.

  98. webdev Сам ты земляк этого лоха, лох! Охренел чтоли меня называть его земляком! Сучий потрох

    Тебя сегодня [...] угощало сгущенкой?

    Ответы: (496) (497)
  99. stackoverflow Тебя сегодня [...] угощало сгущенкой?

    Не знаю что это значит на вашей мове. Пиши нормально.

    Ответы: (498)
  100. stackoverflow [...]

    Это путин или эльниньо?

  101. 14.02.2020 23:16:36 отредактировано stackoverflow

    webdev Не знаю что это значит на вашей мове. Пиши нормально.

    Нет, я тебе написал на языке рашгензгих блатняков.

    Ответы: (500)
  102. Вообщем профессионального разговора не будет. И эту ветку засрали, засранцы

  103. Новее ›

или зарегистрируйтесь чтобы ответить!