Полагаю, что речь не про MPU, а про МК на которых есть именно прерывание по определенному значению стек поинтера (вроде на PIC такое было) - это именно средство борьбы с переполнением стека. Удивительно, что в кортексах такого нет (хотя мб в более новых моделях появились, я уже не очень слежу).
Ну, раз уж вы сослались на мою статью - отмечусь :)
В целом, способ хороший, но тоже не всеобъемлющий (наверное, ни один из возможных сам по себе таковым не является); так как по сути проверка происходит периодически - то переполнение можно и пропустить, если оно вклинивается в этот период, в смысле, если это уже на финальном изделии выполняется. В этом плане MPU или "мой" хак с HardFault'ом полезнее, т.к. позволит само переполнение перехватить как только мы за границы стека вылезаем. И на этапе отладки это тоже может быть удобнее, когда отладчик просто останавливается ровно на той строке, которая слишком много стека отъедает.
С другой стороны, ваш подход позволяет и статистику собрать и максимум за какое-то время оценить (хоть и не совсем бесплатно). Так что эти подходы друг другу не противоречат, а скорее дополняют друг друга.
Еще из поста не совсем понятно, как вы оценивали сложность разных подходов; на мой взгляд они все достаточно простые - особенно если не делать их с нуля, а брать готовые шаблоны.
А вот канал, с очень странным контентом, который идеально вписывается в идею параллельных вселенных, как разных серверов.
Это человек оказался в Италии и у него множество видео с абсолютно безлюдными мегаполисами. Объяснить можно по-разному. Но на мой взгляд, этот человек - первый пользователь новой версии реальности, запущенной на другом сервере. А как Вы считаете? Напишите в комментариях.
Я считаю, что что в 2023 году видео на ютубе принимать за чистую монету может только человек, который никогда не слышал про компьютерную графику и спецэффекты (или потрясающе наивный).
Убирание предметов на видео - это типовая задача в большинстве фильмов, снятых в городских пейзажах (не могу сказать, что прям тривиальная, но достаточно легко решаемая). Я уж молчу про то, как в этих безлюдных городах продолжает появляться еда, вода, электричество и интернет.
Соответственно, если вы всерьез рассматриваете версию с параллельными мирами, то я вам рекомендую обратиться к врачу.
Ну или хотя бы посмотреть это короткое видео от Captain Disillusion как раз про этот жанр контента.
Но я так же полагаю, что этот абзац в посте был просто троллингом :)
Проблематика в статье интересная, но, как мне кажется, доказательная база слабовата.
Вы приводите примеры ухудшения способности решать математические задачи в уме, и голословно заявляете, что это неизбежно означает ухудшение способности решать любые абстрактные задачи.
При этом в качестве доказательств приводите слова авторитетов вида "один мой знакомый профессор".
Интересно, что ваши личные впечатления не совпадают с моими - я 10 лет преподавал в университете и не заметил какого-то невероятного снижения общего интеллекта, если можно так выразиться. Заметно, что люди, которые росли со смартфонами (а не с настольными компами) не имеют подсознательных навыков обращения с десктопным софтом (не знают горячих клавиш, например), но в целом программировать учаться примерно с тем же успехом.
Если растворить нитрат целлюлозы в спирте и эфире, получится сиропообразный раствор, называемый коллодием, которым хирурги перевязывали раны во времена до Первой мировой.
Перепроходил ПЗ несколько раз и всегда с читами (посколькуо у меня не было времени на проблемы, а сюжет интересный) - собственно, за мага играть было очень удобно - набиваешь себе запредельную ману, сверхбыструю регенерацию маны и во все заклинания вставляешь читерские руны (огорчало, что у них вместо текстуры был просто белый квадратик) - и вуаля, получаются очень удобные заклинания "умри с одного нажатия" (кислотный плевок или молния) и "убей толпу с одного нажатия" (кислотный туман).
Я должен признаться, что совершенно упустил это из виду; я почему-то все это время рассуждал (у себя в голове) о массиве указателей, а не о массиве объектов. Но при удалении массива указателей деструкторы для указываемых объектов вообще не вызываются.
Тогда неясно даже, как оказаться в ситуации, в которой нужен полиморфный delete[]? Взять указатель на массив объектов и скастовать его к указателю на массив объектов другого типа, а потом надеяться на полиморфность?
(Между делом хочу все же отметить, что - по моему мнению - практически на каждую уродливую бородавку в С++ есть логичное объяснение, к сожалению, это не делает язык красивым и консистентным, потому что объяснение это ad hoc и порождают не цельное, так сказать, полотно, а лоскутное одеяло. Это не делает объяснение нелогичным, но порождает фрустрацию из-за необходимости запоминать кучу мелочей)
На "ты" мы вроде не переходили, но окей; меня не задело, с чего бы, я и сам не знал. Просто цитате (с номером пункта) из стандарта лично у меня веры больше, чем комментарию случайного человека.
2 ... In the second alternative (delete array) if the dynamic type of the object to be deleted differs from its static type, the behavior is undefined.
И я не думаю, что это откуда-то "лезет", просто это ну.. _совершенно нелогично_ ведь! Почему один delete полиморфный, а другой - нет?..
Плюс я часто вижу пример "коллекция указателей на BaseItem" как объяснение зачем вообще нужен полиморфизм; очень странно, что обычный массив при этом себя ведет иначе.
Ну и возможно еще в целом от обычных массивов давно людей отговаривают, поэтому столкнуться с этим уже не так-то легко.
Полагаю, что речь не про MPU, а про МК на которых есть именно прерывание по определенному значению стек поинтера (вроде на PIC такое было) - это именно средство борьбы с переполнением стека. Удивительно, что в кортексах такого нет (хотя мб в более новых моделях появились, я уже не очень слежу).
Ну, раз уж вы сослались на мою статью - отмечусь :)
В целом, способ хороший, но тоже не всеобъемлющий (наверное, ни один из возможных сам по себе таковым не является); так как по сути проверка происходит периодически - то переполнение можно и пропустить, если оно вклинивается в этот период, в смысле, если это уже на финальном изделии выполняется. В этом плане MPU или "мой" хак с HardFault'ом полезнее, т.к. позволит само переполнение перехватить как только мы за границы стека вылезаем. И на этапе отладки это тоже может быть удобнее, когда отладчик просто останавливается ровно на той строке, которая слишком много стека отъедает.
С другой стороны, ваш подход позволяет и статистику собрать и максимум за какое-то время оценить (хоть и не совсем бесплатно). Так что эти подходы друг другу не противоречат, а скорее дополняют друг друга.
Еще из поста не совсем понятно, как вы оценивали сложность разных подходов; на мой взгляд они все достаточно простые - особенно если не делать их с нуля, а брать готовые шаблоны.
Иган, Мьевилл?
Вроде висмут вполне себе парит в поле обычных (не сверхпроводящих) магнитов, или я путаю?
Я считаю, что что в 2023 году видео на ютубе принимать за чистую монету может только человек, который никогда не слышал про компьютерную графику и спецэффекты (или потрясающе наивный).
Убирание предметов на видео - это типовая задача в большинстве фильмов, снятых в городских пейзажах (не могу сказать, что прям тривиальная, но достаточно легко решаемая). Я уж молчу про то, как в этих безлюдных городах продолжает появляться еда, вода, электричество и интернет.
Соответственно, если вы всерьез рассматриваете версию с параллельными мирами, то я вам рекомендую обратиться к врачу.
Ну или хотя бы посмотреть это короткое видео от Captain Disillusion как раз про этот жанр контента.
Но я так же полагаю, что этот абзац в посте был просто троллингом :)
Бесконечно удивлен, что кто-то еще вспомнил этот рассказ!
Блин, всегда думал, что у Нео в книжке спрятаны какие-то редкие оптические дискеты - а оказалось просто минидиски в коробках :)
Проблематика в статье интересная, но, как мне кажется, доказательная база слабовата.
Вы приводите примеры ухудшения способности решать математические задачи в уме, и голословно заявляете, что это неизбежно означает ухудшение способности решать любые абстрактные задачи.
При этом в качестве доказательств приводите слова авторитетов вида "один мой знакомый профессор".
Интересно, что ваши личные впечатления не совпадают с моими - я 10 лет преподавал в университете и не заметил какого-то невероятного снижения общего интеллекта, если можно так выразиться. Заметно, что люди, которые росли со смартфонами (а не с настольными компами) не имеют подсознательных навыков обращения с десктопным софтом (не знают горячих клавиш, например), но в целом программировать учаться примерно с тем же успехом.
А, окей; тогда кажется слово "перевязывали" тут не очень подходит
Как можно раствором перевязывать раны?..
Перепроходил ПЗ несколько раз и всегда с читами (посколькуо у меня не было времени на проблемы, а сюжет интересный) - собственно, за мага играть было очень удобно - набиваешь себе запредельную ману, сверхбыструю регенерацию маны и во все заклинания вставляешь читерские руны (огорчало, что у них вместо текстуры был просто белый квадратик) - и вуаля, получаются очень удобные заклинания "умри с одного нажатия" (кислотный плевок или молния) и "убей толпу с одного нажатия" (кислотный туман).
Гуси?!
А как же Федя?..
Есть еще вариант post-mortem отладки, т.е. снятие дампа памяти, который позже можно как-то расковырять (например, загрузить в отладчик)
Я должен признаться, что совершенно упустил это из виду; я почему-то все это время рассуждал (у себя в голове) о массиве указателей, а не о массиве объектов. Но при удалении массива указателей деструкторы для указываемых объектов вообще не вызываются.
Тогда неясно даже, как оказаться в ситуации, в которой нужен полиморфный delete[]? Взять указатель на массив объектов и скастовать его к указателю на массив объектов другого типа, а потом надеяться на полиморфность?
(Между делом хочу все же отметить, что - по моему мнению - практически на каждую уродливую бородавку в С++ есть логичное объяснение, к сожалению, это не делает язык красивым и консистентным, потому что объяснение это ad hoc и порождают не цельное, так сказать, полотно, а лоскутное одеяло. Это не делает объяснение нелогичным, но порождает фрустрацию из-за необходимости запоминать кучу мелочей)
Допускаю, но я лично не на MSVC "воспитан"
На "ты" мы вроде не переходили, но окей; меня не задело, с чего бы, я и сам не знал. Просто цитате (с номером пункта) из стандарта лично у меня веры больше, чем комментарию случайного человека.
Имхо это скорее обычная практика С/С++ - перекладывать оверхед на программиста; я просто хотел убедиться, что причина именно в этом.
Для сомневающихся - цитата из стандарта С++11:
5.3.5 Delete...2 ... In the second alternative (delete array) if the dynamic type of the object to be deleted differs from its static type, the behavior is undefined.Я честно признаюсь, что просто не знал. Спасибо!
И я не думаю, что это откуда-то "лезет", просто это ну.. _совершенно нелогично_ ведь! Почему один delete полиморфный, а другой - нет?..
Плюс я часто вижу пример "коллекция указателей на BaseItem" как объяснение зачем вообще нужен полиморфизм; очень странно, что обычный массив при этом себя ведет иначе.
Ну и возможно еще в целом от обычных массивов давно людей отговаривают, поэтому столкнуться с этим уже не так-то легко.
Разве не актуально? Мне казалось, никакой разницы в этом смысле не должно быть