Найдены возможные дубликаты

Отредактировал Emvoln 2 года назад

IT-юмор

2.7K пост42K подписчиков

Добавить пост

Правила сообщества

Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору

Подробнее
+42

- У меня бы всё получилось, если бы не эти ваши любопытные дизасемблеры!

раскрыть ветку 1
+12

Руби-дуби-ду!

+60
Иллюстрация к комментарию
раскрыть ветку 15
+17

Вместо C++ там можно поставить еще Ruby и Python :)

раскрыть ветку 14
+96

А внутри все равно инструкции J* (JZ/JNZ/JG и т. п.) или LOOP :)

раскрыть ветку 24
+53

А внутри всё равно машинные коды (0x0F8X /0xEX) :)

раскрыть ветку 14
+10
Когда я, не имея профильного образования, пытаюсь освоить программирование и вижу такие комментарии, становится очень грустно.
раскрыть ветку 3
+4

А внутри все равно p-n-p переход

+1

А внутри mov eip, 0x12345678

раскрыть ветку 1
0

О боже, нет, НЕТ

0

Не обязательно.

+9

мммм, пахнуло первыми прогами на бейсике для спеки

раскрыть ветку 5
+6

Это как запах молока матери для прогера.

раскрыть ветку 4
+25
goto или не goto?

В 1968 году, в своей статье «Обоснование пагубности оператора goto», Эдсгер Дейкстра отметил, что качество кода обратно пропорционально количеству goto, используемых в коде. Дейкстра утверждал (это просто его мнение), что:
§ корректность кода без goto доказать легче
§ код с операторами goto трудно форматировать
§ goto влияет на логическую структуру программы
§ применение goto препятствует оптимизации, выполняемой компилятором
§ goto усложняет анализ кода
· На практике применение оператора goto, приводит к нарушению принципа хода алгоритма строго сверху вниз.
· Сторонники goto выступают за осторожное применение оператора, при определенных условиях.
· Большинство аргументов против goto, не говорит о полном отказе от этого оператора, а предостерегает от неразборчивого его использования.
· Хорошее программирование не означает исключение всех goto.
· Стремление к коду без goto не должно быть целью.
· Десятилетия исследований оператора goto не смогли подтвердить его вредоносность, а теоретические и экспериментальные доводы, выдвигаемые против этого оператора, оказались не убедительными.
· И наконец, операторы goto входят во множество современных языков.
· Microsoft чаще использует goto при автогенерации кода, когда этот код не предназначен для восприятия и редактирования человеком. Корректность такого кода определяется корректностью создающего его инструмента.
· Использование goto – это вопрос религии
раскрыть ветку 51
+9

Как неоднократно говорилось: "Дай дураку стеклянный хуй - он и его разобьёт и руки порежет".

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


GoTo - обычный инструмент. Один из.

З.Ы. Да, иногда использую, в cmd-скриптах. И в хранимках TSQL, тоже он в тему иногда.

раскрыть ветку 4
+6

Ох уж эти ваши суеверия i++, ++i

раскрыть ветку 15
+2

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

раскрыть ветку 28
0

в switch/case внутри тот-же goto будет...

* и вообще это уже и не актуально )

** goto просто делает код запутанным, поэтому и считался нежелательным оператором ранее.

+11
JMP
раскрыть ветку 1
+2

BEQ, BNE

+13

Я знаю 2 случая когда goto упрощает код:

1) В функции несколько return и перед каждым нужно освободить память и закрыть дескрипторы. Чтобы не дублировать код, вместо return'ов ставим goto на конец функции и после метки втыкаем весь завершающий код.

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


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

раскрыть ветку 28
+14
Иллюстрация к комментарию
раскрыть ветку 1
+2

Возможно, первое решается использованием using (C#) или RAII.

Второе можно решить вынесением цикла со вложенным циклом в отдельный метод.

0

Во втором случае можно все циклы засунуть в функцию и использовать return. По факту те же яйца только в профиль, но return как то роднее)

0
Никогда не пользовался готу, и на с умею писать только хелловорлды, но объясните, пожалуйста, это не то же, что вызвать метод в той же джаве?
раскрыть ветку 1
0

Первый случай напоминает слишком большую функцию, которую можно и нужно разбить на несколько (в том числе, освобождение памяти и закрытие дескрипторов). Второй решается оборачиванием вложенных циклов в функцию, из которой можно вывалиться return'ом.

0

я бы подумал, что 1 - все фрии и прочее должно делаться неявно в соответствующих деструкторах, но с динамической аллокацией у меня опыта мало,  да и от языка зависит.

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

раскрыть ветку 1
-4

Что 1, что 2 говнокод.

раскрыть ветку 13
-2

Во втором случае - может быть, но я обычно делаю несколько более замудренно. Снаруже цикла объявляю булевскую переменную isComplete = false, когда все посчитали - ставлю ее в true, и на каждом цикле ее проверяю. Если true - то break. Наверное, использовать goto там логичнее - но эстетически это примерно как завершать любой разговор словами "пошел на хуй".


А зачем нужно несколько return'ов? В начале функции создаешь переменную toReturn нужного типа, в конце - ставишь return toReturn, а в самой функции - присваиваешь ей нужное значение. Все. Больше одного return'а в функции - прежде всего, лишняя возможность самому запутаться.

-3

Еще можно использовать goto в некоторых языках, где нет оператора switch. Как-то так:

switch(a) {

case 1:

  print("1");

case 2:

  print("12");

  break;

default:

  print("none");

}


_case_1:

if (a != 1) goto _case_2;

print("1");

_case_2:

if (a != 2) goto _case_default;

print("12");

goto _switch_end;

_case_default:

print("none");

_switch_end:

раскрыть ветку 3
+4

всегда бесило, что преподы твердили "не использовать goto!", а как спрашиваешь почему нельзя, так сразу "нууу... хз, так где то было написано". мозги надо использовать, а не список "правильных" команд

раскрыть ветку 5
+2

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

раскрыть ветку 2
+1

Читаемость кода - самая главная причина отказа от goto. Через неделю офигеешь вспоминать, какой goto куда ведет и почему. А уж если кто другой разбираться в этой свалке будет...

Не очень преподы были, видимо, либо за рамки сложности задач «найти корни диф уравнения» вы с ними никогда не выходили.

раскрыть ветку 1
+4

Сложнааа

+5
,переведите пожалуйста...
раскрыть ветку 23
+49

В академическом программировании очень не любят инструкцию "goto ..." (переход к выполнению указанного участка кода). Отчасти это правильно, потому как её использование может сделать код сложным для восприятия и отладки (что могу подтвердить, так как лично видел и отлаживал подобный код). Зато очень любят конструкцию do ... while (цикл с выходом по условию) и ещё больше for ... (цикл с выходом по условию и итератором). Так вот, автор намекает, что в основе этих конструкций лежит всё тот-же нелюбимый всеми goto, что, в принципе, так и есть. Вот только они облекают goto в такую форму, что даже самый опытный программист не сможет запутать ими код до степени тарелки со спагетти.

раскрыть ветку 9
+18

команда "goto" - злодей для программистов, спрятана под масками while и for циклов

раскрыть ветку 2
-23

Если используешь GOTO - ты не тру программер, тру программеры используют только условные операторы.

раскрыть ветку 9
ещё комментарии
+4

а где foreach?

раскрыть ветку 5
+8

а также do..until или repeat..until

+2

Равносильно for

раскрыть ветку 3
+1

Когда прогаешь на ассемблере

+1
Это единственное, что я запомнил с института.
0
смищные погромиздские щютки уровня GTFO
-6

Шутка от петросяна

ещё комментарий
-1

Какой стаж работы программиста нужен, чтобы понять шутку?

Похожие посты
675

Про юмор в ПО

Показать полностью
3644

Ответ sl3w в «Новый компьютер» 

Ответ sl3w в «Новый компьютер» Процессор, Компьютер, Веб-комикс, Комиксы, SSD, Оперативная память, IT, IT юмор, Программирование, Программа, Видеокарта, Майнинг, Nvidia, Minecraft, Компьютерные игры, Ответ на пост, Повтор
57

Ссылки на полезные ресурсы для изучающих PHP

Ссылки на полезные ресурсы для изучающих PHP PHP, Программирование, Веб-Разработка, Подборка, Ссылка, IT, Длиннопост
Symfony (en) — документация по Symfony, одному из мощнейших PHP-фреймворков. Symfony лежит в основе Laravel.
Показать полностью
77

Ответ на пост «1 из 3» 

Ответ на пост «1 из 3» Программирование, Разработка, Комиксы, IT юмор, Регулярные выражения, Ответ на пост, Длиннопост
Ответ на пост «1 из 3» Программирование, Разработка, Комиксы, IT юмор, Регулярные выражения, Ответ на пост, Длиннопост
Показать полностью 1
1217

Ответ на пост «Отличная психотерапия» 

Ответ на пост «Отличная психотерапия» IT юмор, IT, Программирование, Разработка, Комиксы, Ответ на пост, 1с
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: