Польза goto в C++

TL;DR: Дейскстра учился писать код с goto, научился, раскритиковал применение goto, учебные программы усложнили т.к. “так сказал великий Дейкстра”, учить детей программированию стало сложнее.

Польза goto в C++
1212

Если это не на 1 апреля то:
1) То есть Дийкстра и другие воспарили из-за goto ? А может вопреки?

2) Каким образом это помогает понять на интуитивном уровне? Очень удобно наверное понимать как и куда прыгает что-то верно? При том что прыгнуть оно может вообще куда угодно?

3) Нет плохих языков. Язык это инструмент. Он решает задачи. Ненужно говорить что болгарка это плохой молоток. И у С++ хватает проблем причем их на столько много что диву даешься и авторы стандартов уже головы ломают как эту мусорку чинить оставляя обратную совместимость

4) Вы так отлично говорите о быстрых языках программирования что забываете что сами себя облапошили с goto. А теперь давайте вместе угадывать на сколько удобно будет процессору предиктить куда же прыгнет goto и при этом заранее положить в кеш или стэк даже не говоря о том чтобы прям в конвеере иметь инструкции дальнейшие. Там может быть все на столько неожидано что придется обращаться к хипу и тогда замечательно побежит ваша производительность. Просто шикарно!

При этом ваши разговоры о том что сейчас это десятки строк с циклами и тд...вы серьезно? А вы не думали что циклы отлично параллелятся на процессоре например? А как параллелится ваш не предиктивный goto для компилятора?

4
Ответить
Автор

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

1
Ответить
Автор

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

Ответить
Автор

Процессору максимально удобно предсказывать куда прыгнет goto, это связано с тем, что место перехода известно не только во время выполнения, оно известно на этапе компиляции и явно указано в результирующем машинном коде. Безусловный переход предсказывается со 100% точностью, ведь заранее известно что он произойдёт и процессор может начать спекулятивное выполнение кода расположенного после точки перехода.

Ответить
Автор

Есть плохие языки. Язык это инструмент, созданный для решения определенных задач. Как отвертка. Хорошая отвертка сделана из высокопрочного сплава и ее передают из поколения в поколение, от деда внукам, а плохая сделана из незакаленного железа и деформируется еще до того как ей закрутят первую гайку. Так и плохие языки сделаны для того же, для чего и хорошие, но сделаны плохо: программы на них работают медленно, многие вещи вообще нельзя написать, в процессе развития между версиями 2 и 3 одного языка возникает полная несовместимость.

Ответить