реклама
разместить
Польза 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 даст лучше выразить эквивалентный алгоритм? Да что за дичь я читаю гсоподи. Да иногда goto удобен но это крайне иногда в большинстве алгоритмов goto ненужен при этом без потери выразительности и при этом с большей читабильностью. При этом нормальный код это не "умно сделанный" код а баланс между быстротой и поддерживаемостью и читабильностью. С goto ты в лучшем случае чуть чуть выйграешь в компактности кода и потеряешь во всем остальном.

Сколько дней ты изучал с++ и писал hello world прежде чем сумел написать на нем простенькую 2д игру и сколько тебе было тогда лет?

недели 2-3 и было лет 17-18

А вот было бы круто, если бы ты смог сделать это за 1 день и было тебе тогда лет 6-8

1

Но вопрос некорректен так как у меня был базис паскаля

То есть целых 2-3 недели ты изучал язык чтобы понять этот самый широкий базис, вместо того чтобы изучить минимальный базис и получить безграничные возможности, а далее лишь изучать способы улучшить читаемость и сопровождаемость кода?

Я и так получил безграничные возможности изучив базис языка делав при том нормальные игры с читабильным кодом котоырй я смогу поддерживать. Делая играбильную игру а не те ссылки что ты кидал. Которые особенно для 6-8 летнего не интересны абсолютно. Где что-то прыгает в терминале

Как раз наоборот, 6-8 летним все равно, прыгает там буква или 3д Марио, у них воображение работает на полную катушку, и это я из опыта обучения 5-8 летних детей говорю а не выдумываю

Ты работал с 6-8 летними? Я да. Им похер. Ладно в мои 6-8 лет там было бы мне весело. Потмоу что тогда и технологии и все остальное были далеко позади. Мне было весело тогда что что-то прыгает в терминале. Но сегодняшним 6-8 летним далеко плевать. Им даже в майнкрафте механизмы будет интереснее собирать из поршней и редстоуна.

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

Ничего глупее не слышал. С++ один из самых комплексных мейнстримных языков а ты мне говоришь что создание чего-то из редстоуна сложнее?

Да. Именно так.

Понимаю. Тогда разговор можем не продолжать)

С++ один из самых комплексных мейнстримных языковПочему ты (и не только ты) сравниваешь весь С++ с Майнкрафт, а не ту часть, что предлагает автор на начальных этапах обучения?

Потому что детям это весело. Потому что детям не весело смотреть как просто текст в консоли сложными путями выходит. Им интереснее когда просто и эффектно. А дальше можно заинтересовать

Разве в Майнкрафте не приходится собирать из блоков И и ИЛИ? Т.е. это уровень даже ниже, чем ассемблер. Или там есть и скриптовый язык?

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

Ниже ассемблера - это когда из блоков собираешь процессор в Майнкрафте, я про это. Видел, как кто-то собирал элементы И и ИЛИ и сделал из них калькулятор.

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

Вот представь, ребенок тратит сотни часов, в совершенстве овладевает созданием механизмов в майнкрафте, а теперь перед ним возникает новая задача: взять какой-нибудь нормальный язык программирования и написать на нем игру. Хотя бы тетрис. И вот тут оказывается, что все эти часы в майнкрафте плохо ему не помогают. Перед ним книжки, которые нужно прочесть до 200-ой страницы прежде чем получится вывести на экран строку текста через cout и ввести другую строку через cin, что все еще бесконечно далеко от тетриса... тогда вменяемый ребенок смотрит на игровые движки типа unity и оказывается, что нужно не просто уметь писать код, но и понимать как работает движок, а сделать на нем тетрис настолько сложно, что лучше даже не начинать, и ребенок не начинает, он берет unreal engine и делает на нем шутер, ну то есть расставляет врагов по сгенерированному уровню. Итак, потрачены сотни часов, программировать человек как не умел так и не научился.

Ему они и не должны помогать. Они должны заинтересовать. Программист всегда учится. На твоем примере можно сказать "представь что ребенок учится делать игры и учит С++ а это ему нифига не помогает так как надо научится еще и шейдеры писать научится понимать тот же директХ алгоритмы и структуры данных и так далее". И для того чтобы написать тетррис и взять юнити даже кодить уметь ненадо. Есть визуальный язык программирвоания что в юнити что в анрил. Не говоря уже о всяких гейм мейкерах. Важно заинтересовать ребенка чтобы ему было интересно этому ХОТЕТЬ обучится.

И не важно сколько часов потратит человек. Важно чтобы ему было интересно. Если тебе не интересно то даже простые вещи будут длится те же самые сотни часов. Вспомни как ты чему-то учился в школе. Как быстро ты понимал что-то и изучал когда был хороший учитель или интересная тебе тема и когда было то что тебе не интересно?

Вот в том и дело, что заинтересовать недостаточно, это лишь необходимо

как-то у меня не укладывается....не достаточно но необходимо. Ну как бы да...да? Все верно. Но только это необходимо. Все верно. Если не заинтересуешь то все - пиши пропало.

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

Это достаточно чтобы заинтересовать и продолжить дальше. Например взять гейм мейкер или тот же годот. В котором есть и блочное программирование и скриптовый язык доволньо простой. А не С++ в терминале

То есть ты тратишь сотню часов в майнкрафте чтобы заинтересовать и потом этот опыт выбрасываешь и снова тратишь сотню часов в гейм мейкере, чтобы потом сказать, что в нем нельзя сделать ни 3д шутер типа Doom ни стратегию типа старкрафта ни рпг типа Skyrim ? Ок, и потом все равно выбросить все и начать изучать что?

Да все так. Так и работает обучение. Ты идешь по ступенькам не возвращаясь назад. А ты решил сразу Unreal Engine изучать? Удачи братан.

Не что-то простое можно вот в юнити набросать там тоже визуальный скриптинг есть.

Да и 3д шутер можно сделать в целом в геймейкере. Да и в одно рыло ты ни шутер как дум не сделашеь ни стратегию как старкрафт ни скайрим.

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

Вот смотри, после майнкрафта программировать не умеют люди и игру сделать не могут. После написания первых 3-4 программ на C++(музыка/рисование, синтезатор, игра) люди могут программировать и уже сделали одну игру. После 100 часов майнкрафта они умеют играть в майнкрафт, но не умеют делать игры и им это сложно. После 100 часов программирования на С++ они умеют делать разные игры и им это легко.

1. Я сказал заинтересовать майнкрафтом тем же и работать как с программированием а не делать на нем игру

2. Написание вышеперечисленных программ (музыка/рисование/синтезатор/игра) займет у тебя пару лет если изучать все это с нуля. Ну или если ты уже увлечен и сидишь сам занимаешься не меньше полу года. И это будет максимально простые вещи а не что-то серьезное. Но это если ты сам уже увлечен и заинтересован.

3. После 100 часов программирования на С++ ты уверен что ты сможешь хотябы одну игру написать? Не говоря уже про то чтобы делать "разные игры" и чтобы "им это было легко"?

Какую-то фантастику ты рассказываешь

Ого! 2 года! Хорошо, что мы не спрашивали тебя, а просто брали и писали код и у нас ушло 2 вечера вместо 2 лет.

2 вечера на игру в терминале? Или что это за игра? И что это за музыка/минтезатор/рисование? Если это максимально простые фигни то да вопросов нет можно взять библиотечку и нажать play. Но это не я тут в пример приводил дум, скайрим и так далее

Так в этом вся разница: из майнкрафта дум не делается никак. А из простой 2д игры - выйдет, можно сначала сделать игру в 2д, изучить 3д графику и поменять тип графики в игре, при этом 2д изображение даже останется в игре в качестве карты. Разница именно в том что начав делать игру на C++ ее возможно доделать, независимо от того что это за игра. Нет таких игр которые в принципе возможно сделать и при этом нельзя сделать на С++

1

Я хз претворяешься ты или как. Ты по кругу ходишь. Прочитай выше я уже об этом все говорил. Буквально на все такие же вопросы все уже ответил. А ты по кругу идешь

Вопросы? В сообщении на которое ты ответил вопросов не содержится

Но вопрос вообще непонятен к чему это? Для начала выучи базовые вещи языка а затем уже бери движок и изучай

Верно. Базовые вещи языка - int, if и goto. Это базис. Выучивается за 3 минуты. И дальше изучай библиотеку.

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

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

Telegram заблокировал канал RuTracker

За нарушение авторских прав.

Telegram заблокировал канал RuTracker
107107
3030
1414
33
22
22
11
11
11
11
реклама
разместить
Появились первые распаковки GeForce RTX 5090 FE

Видеокарту сравнили с RTX 4090, консолями и небольшой собакой.

Появились первые распаковки GeForce RTX 5090 FE
1919
66
33
22
11
Лучше распаковку собачки показали бы
Уральские разработчики представили Machine Mind — экшен-RTS о выживании после ядерной войны

Игрокам предстоит конструировать собственные боевые роверы и автоматизировать базы.

130130
1111
66
22
22
11
11
О, в закладки.
Джефф Грабб: Bluepoint и Bend узнали об отмене своих сервисных игр в тот же момент, когда об этом сообщил Bloomberg

Обе команды прямо сейчас решают, что делать дальше.

Джефф Грабб: Bluepoint и Bend узнали об отмене своих сервисных игр в тот же момент, когда об этом сообщил Bloomberg
145145
2424
1010
44
33
22
11
11
За Bluepoint сердце болит, я думал они там ремейк бладика уже доделывают
NVIDIA о генерации кадров: «Мы посмотрим, что можно выжать из предыдущих поколений RTX»

Возможно, даже владельцы серии RTX 30 что-то получат.

NVIDIA о генерации кадров: «Мы посмотрим, что можно выжать из предыдущих поколений RTX»
8787
5858
1010
44
11
Мыло и дегенерацию в каждый дом!
Яша Хаддажи о цене Switch 2 в России: «Если бы продажи начались сегодня, то стоимость достигла бы 65 тысяч рублей»

Ритейлеры планируют запустить продажи консоли в стране вскоре после её выхода.

Яша Хаддажи о цене Switch 2 в России: «Если бы продажи начались сегодня, то стоимость достигла бы 65 тысяч рублей»
194194
2323
1212
1010
55
33
33
33
22
11
Достигла бы 65к, но мы накиним ещё столько же
Даниэль Вавра о содержании Kingdom Come: Deliverance II: «Нас никто ни к чему не принуждал»

Разработчик настаивает, что всё показанное соответствует времени и локации игры.

Даниэль Вавра о содержании Kingdom Come: Deliverance II: «Нас никто ни к чему не принуждал»
276276
117117
55
44
33
22
11
11
11
его игра шо хочет то и делает и человек еволюцинирует когда развивается и меняет мнение
[]