Как связаны C++, goto и обезьяны

Судя по неожиданно бурной реакции некоторых пользователей DTF на мои предыдущие посты, они очень хотят защитить меня от применения goto в C++. И даже готовы ради этого меня побить, лишь бы не случилось немыслимое и в программах на C++ не появилось бы goto. Реальных аргументов в пользу того чтобы не учиться пользоваться goto они привести не в состоянии, но их ведь учили что goto использовать совсем нельзя, иначе небо упадет на землю, а горы превратятся в пепел и улетят по ветру как осенние листья.

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

Посадили ученые в клетку стаю обезьян, подключили к клетке землю, а с потолка свесили банан в проволочной сетке, на которую подали фазу. Обезьяны банан увидели и полезли по прутьям его добывать. Схватится обезьяна за банан, а ее током как долбанет. Обезьяна, ясное дело страдает, остальные над ней ржут, ученые тоже с интересом наблюдают…

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

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

0
12 комментариев
Написать комментарий...
Kristaller

Чувак, goto реально не нужен. Он снижает уровень читаемости кода и не даёт буквально никаких преимуществ. В нормальных языках программирования такого оператора вообще нет, и хорошо.

Ответить
Развернуть ветку
Huldra
Автор

Я считаю нормальными языками только C++, C и C#, причем последний в меньшей степени. Выходит, во всех нормальных языках есть goto.

Ответить
Развернуть ветку
Kristaller

О, ну ТЫ то конечно, непонятный сумрачный гений современного программирования, вся эта мелочная индустрия - чих по сравнению с величиной ума великого ТЕБЯ.

Ответить
Развернуть ветку
Huldra
Автор

Тем временем все крутые игровые движки написаны на С++, все ядра ОС написаны на С, топовые игры написаны на С++ и иногда на C#, компилятор C# написан на C++, софт для микроконтроллеров пишут в основном не на ассемблере а на C и C++, но нормальные языки при этом какие-то другие, на которых нельзя написать ОС, топовый игровой движок, компилятор и код для микроконтроллера

Ответить
Развернуть ветку
Kristaller

А тем временем весь ML и Data Science написан на python, весь веб на JavaScript, весь энтерпрайз на java, мне продолжать? Компиляторы, кстати, не от хорошей жизни на С/С++ пишут, нормальные компиляторы нынче пишут на самих же языках, смотри C#, Go, Python (Nuitka), TS. C++ - плохой язык. Он перегружен, у него ужасная документация, куча рудиментарных фич, нулевая связь с комьюнити, очень слабая кроссплатформенность, высокий порог вхождения, плохое ручное управление памятью.

Ответить
Развернуть ветку
Huldra
Автор

Весь ML вообще возможен только потому что на python удобно вызывать код написанный на C++, который на самом деле и выполняет все вычисления.

Ответить
Развернуть ветку
Kristaller

Всё остальное мы проигнорируем?

Ответить
Развернуть ветку
Huldra
Автор

Веб это странички с текстом и гиперссылками. Показывает странички браузер. Все браузеры написаны на C++. Чтобы странички выглядели поприятнее, на них запускают простенькие кусочки кода на простеньком языке, интерпретатор которого написан на.. напомни, C# или C ?

Ответить
Развернуть ветку
Kristaller

Много ты за свою жизнь браузеров и высокоэффективных интерпретаторов написал?) Кстати, в той же мазиле вон на rust переходят, в ядро Linux тоже код на. Rust уже принимают, в хромиуме недавно разрешили. Как тебе такая перспектива?

Ответить
Развернуть ветку
Huldra
Автор

За последнюю неделю - всего один, а ты?

Ответить
Развернуть ветку
realavt

Тот самый неловкий момент, когда не знал или напрочь забыл, что во всех этих Сях вообще есть goto, ибо последний раз пользовался им 30 лет назад при написании программ для Спектрума на Бейсике... О_о

Ответить
Развернуть ветку
gg ff

Ждем 11-мерный движок для игр со всем что только можно только из goto и if. Банан-то все забыли почему трогать нельзя, может уже самое то начать попытки его съесть. Без функций, разумеется - зачем они?

Ответить
Развернуть ветку
Читать все 12 комментариев
null