Как связаны C++, goto и обезьяны
Судя по неожиданно бурной реакции некоторых пользователей DTF на мои предыдущие посты, они очень хотят защитить меня от применения goto в C++. И даже готовы ради этого меня побить, лишь бы не случилось немыслимое и в программах на C++ не появилось бы goto. Реальных аргументов в пользу того чтобы не учиться пользоваться goto они привести не в состоянии, но их ведь учили что goto использовать совсем нельзя, иначе небо упадет на землю, а горы превратятся в пепел и улетят по ветру как осенние листья.
Это все напомнило мне одну замечательную историю про обезьян. Я не помню всех деталей, поэтому расскажу ее как помню, а как было на самом деле вы можете найти в интернете и написать в комментариях.
Посадили ученые в клетку стаю обезьян, подключили к клетке землю, а с потолка свесили банан в проволочной сетке, на которую подали фазу. Обезьяны банан увидели и полезли по прутьям его добывать. Схватится обезьяна за банан, а ее током как долбанет. Обезьяна, ясное дело страдает, остальные над ней ржут, ученые тоже с интересом наблюдают…
И вот через пару дней обезьяны уже все поняли про этот банан и даже смотреть на него перестали. Тогда ученые одну обезьяну из клетки выселили а вместо нее другую заселили. Она банан увидела и хотела за ним полезть, но обезьяны очень умные и заботливые, они все сразу поняли что сейчас эту новенькую обезьяну током ударит, поэтому они ее стали от этого оберегать как умеют: держать, махать руками, даже побили как следует — в общем, все для ее блага сделали, лишь бы ее током не ударило. Очень они заботливые были, добились того, чтобы новая обезьяна к банану не притронулась.
Шло время, ученые по одной заменили всех старых обезьян, которые знали что будет если потрогать банан. Обезьяны исправно заботились друг о друге, выбивая из новоприбывших всякое желание трогать бананы, которые вывешивали ученые. И вот уже ни одна обезьяна не знала, почему банан трогать нельзя. Из новых обезьян исправно выбивали всяческое желание трогать банан, потому что трогать банан нельзя никогда, в точности как с goto вышло у них там.
Чувак, goto реально не нужен. Он снижает уровень читаемости кода и не даёт буквально никаких преимуществ. В нормальных языках программирования такого оператора вообще нет, и хорошо.
Я считаю нормальными языками только C++, C и C#, причем последний в меньшей степени. Выходит, во всех нормальных языках есть goto.
О, ну ТЫ то конечно, непонятный сумрачный гений современного программирования, вся эта мелочная индустрия - чих по сравнению с величиной ума великого ТЕБЯ.
Тем временем все крутые игровые движки написаны на С++, все ядра ОС написаны на С, топовые игры написаны на С++ и иногда на C#, компилятор C# написан на C++, софт для микроконтроллеров пишут в основном не на ассемблере а на C и C++, но нормальные языки при этом какие-то другие, на которых нельзя написать ОС, топовый игровой движок, компилятор и код для микроконтроллера
А тем временем весь ML и Data Science написан на python, весь веб на JavaScript, весь энтерпрайз на java, мне продолжать? Компиляторы, кстати, не от хорошей жизни на С/С++ пишут, нормальные компиляторы нынче пишут на самих же языках, смотри C#, Go, Python (Nuitka), TS. C++ - плохой язык. Он перегружен, у него ужасная документация, куча рудиментарных фич, нулевая связь с комьюнити, очень слабая кроссплатформенность, высокий порог вхождения, плохое ручное управление памятью.
Весь ML вообще возможен только потому что на python удобно вызывать код написанный на C++, который на самом деле и выполняет все вычисления.
Всё остальное мы проигнорируем?
Веб это странички с текстом и гиперссылками. Показывает странички браузер. Все браузеры написаны на C++. Чтобы странички выглядели поприятнее, на них запускают простенькие кусочки кода на простеньком языке, интерпретатор которого написан на.. напомни, C# или C ?
Много ты за свою жизнь браузеров и высокоэффективных интерпретаторов написал?) Кстати, в той же мазиле вон на rust переходят, в ядро Linux тоже код на. Rust уже принимают, в хромиуме недавно разрешили. Как тебе такая перспектива?
За последнюю неделю - всего один, а ты?
Тот самый неловкий момент, когда не знал или напрочь забыл, что во всех этих Сях вообще есть goto, ибо последний раз пользовался им 30 лет назад при написании программ для Спектрума на Бейсике... О_о
Ждем 11-мерный движок для игр со всем что только можно только из goto и if. Банан-то все забыли почему трогать нельзя, может уже самое то начать попытки его съесть. Без функций, разумеется - зачем они?