Как стать автором
Обновить

Комментарии 24

Была бы версия для ts, купил бы не раздумывая. С++, С#, java на данный момент отложил в ящик.

Интересно, сложно ли будет подключить анализатор к ts? Ту часть правил, что к ts применима.

Спасибо за интересный вопрос.

Сложно. Для этого надо, чтобы все наши анализаторы работали через одно обобщенное внутреннее представление в виде AST (Abstract Syntax Tree). Тогда можно будет запустить какой-то общий набор диагностических правил.

Для каждого языка программирования строятся различные AST, которые учитывают его семантику. К сожалению, обобщить все многообразие AST для целей статического анализа так легко не получится – будет утерян контекст исходного кода.

Фрагмент №18 - это абсолютно проклятая вещь, как по мне.

Согласен, выглядит жутко :D. Даже с подсказкой анализатора мне понадобилось определённое количество времени, чтобы разобраться, что там происходит.

Как по мне, будь у них не boolean, а unsigned, и присваивать не результат сравнения, а сам размер - код был бы полностью работоспособным. Ну, по крайней мере, на тех языках, которыми мне доводилось пользоваться (т.к. не являюсь программистом, синтаксическими особенностями диалектов C не владею)

modulo by 1

“Modulo 1” же.

Насколько мне известно, допустимы оба варианта написания, в данном случае для акцентирования внимания на выполнении деления по модулю использован вариант с предлогом "by".

Оригинальный DOOM был написан не на С++ :)

Да, вы правы, оригинальный DOOM 1993 года был написан на C, но к счастью (или к сожалению) время не стоит на месте, и люди портируют старые игры, используя более высокоуровневые языки.

... и внося новые баги :)

Справедливое замечание с учётом характера статьи :D

к сожалению

чем код компактнее, без завертываний, тем быстрее и эффективнее он работает(из-за современных питонов, библиотек, библиотек библиотек, движков и ста преобразований - получается непомерно разжиревший и тормознутый код, оттого все и тормозит, даже на мощном железе)

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

Я бы сказал всё зависит от области применения. В тех областях, где производительность и эффективность не на первом месте, высокоуровневые языки позволяют сэкономить время программиста, упрощая ему жизнь. Для бизнеса это может оказаться выгоднее, чем писать компактный и эффективный код (надо отметить, что высокоуровневый язык != некомпактный и неэффективный код, зачастую наоборот (например, если речь про C++)). Но всё должно быть в меру и описанная вами ситуация, к сожалению, не редкость и действительно пугает.

вот из-за этих бизнесменов сейчас и имеем то, что имеем - хэлло ворлд в 100 мб

для бизнеса то конечно, быстрее выпуск - быстрее деньги, покупка нового железа

производительность и эффективность должна быть всегда

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

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

сейчас бы минусить за правду опять

заворачивая код в классы - компилятор выделял больше памяти в оперативе и сама программа соответственно становилась жирнее

Я не особо эксперт в C++ и не проверял, чем отличается сгенеренный код для c и c++ в плане структур, но чем больше класс, чем больше методов и различных взаимосвязей, тем сложнее его оптимизировать компилятору, при чем структура в c гораздо проще чем в c++. В c - это способ объединения нескольких полей, а в c++ - структура позволяет использовать абстракции, которые почти всегда будут иметь небольшой (иногда большой) оверхед.

Интереснее почитать про проверку на ошибки оригинального DOOM.

В начале статьи есть упоминание и ссылка на его проверку.

"... and those who tasted the bite of his sword name him the BUGslayer."

Так, а минусы будут? :D
Блог компании PVS-Studio бесплатно находит и расписывает чужие ошибки, предлагая исправленные варианты кода. Как минимум это экономит время и силы разработчиков на поиск и исправление, как максимум обучает других не совершать подобные ошибки в своём коде :)

разве не в этом суть их продукта? Это как про стоматологию написать что их посты копаются во рту пациентов

По Фрагменту N19: а что, если len будет нулевой? Нет, может быть ReverbContainer::Nameинициализируется какими-нибудь константами, но...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий