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

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

Большинство программных систем используют менее 1% ресурсов современных процессоров

Как опознать теоретика за одну фразу.

У меня в данную минуту открыто 27 окон chrome (более 500 вкладок), 4 окна PowerPoint, 2 окна Excel, Notepad++, IntelliJ IDEA с запущенным внутри сервером Structurizr, Acrobat Reader с тремя документами, клиент MatterMost. И это только моё, операционку не считаю. Общая загрузка процессора - 2-5%. А, еще WinAMP c музыкой

Дак у вас большинство сервисов в таком режиме спят, работает текущее окно ну и фоновое чуток (WinAmp).

А теперь возьмите и запустите архивацию чего-нибудь большого, штук 5 - сразу будет другая картина, характерная для серверной загрузки.

Архивация относится к меньшинству систем. На самом деле перевес ещё больше, потому что самый требовательный к цпу код - библиотечный и активно переиспользуемый.

Я когда запускаю Activity Monitor посмотреть на загрузку процессора, собственно Activity Monitor отжирает 2%. MBP 2023 года, Apple M2 Max.

Это всё не дает нам никаких данных (кучка личного опыта — не данные). Давайте запустим, скажем, Cyberpunk 2077 и посмотрим среднюю загрузку процессора, пока проходим первую миссию. Cyberpunk 2077 это очень типичная программа.

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

А я часто вижу, что в результате наблюдения этой дискуссии люди (особенно неопытные) впадают в очень детское заблуждение:

  • если код чистый, то он автоматически медленный. Поэтому гоните его, насмехайтесь над ним.

  • если код не чистый, то он автоматически не медленный. Поэтому отрицайте эту чепуху Мартина ради перфоманса.

А в реальности средний код он и не чистый и не быстрый, а просто кусок вонючего техдолга. Писать чисто - это скилл, писать оптимально - это тоже скилл. А чаще всего никакого скилла нет, а есть "херак херак и в продакшн". Утверждать, что только на одном из скиллов, полностью отрицая другой, можно вытащить современное приложение на миллионы строк кода - тоже бред какой-то.

Чистый код это вопрос личного вкуса и предпочтений. Для каждого есть своё понятие чистоты. Один считает break в цикле грязным кодом. Другой goto на метку в конце функции - стандартом. Поэтому всегда теряюсь на собесе, когда спрашивают, пишу ли я чистым кодом.

С одной стороны - геймдев, где (грубо говоря) нужно за 10 мс на любом процессоре и с 4 ГБ ОЗУ пересчитать состояние всего игрового мира, а потом ещё и отрендерить его в миллиард полигонов. Потом это дело зарелизить, за 2 месяца выпустить патчи и забыть навсегда.

С другой стороны - кровавый энтерпрайз, где нужно написать процессинг заявки пользователя уложившись хотя бы в 10 секунд, на 96-процессорном сервере с 256ГБ ОЗУ, но ещё нужно, чтобы другой сотрудник через 15 лет не имея документации смог добавить фичу в этот процессинг, а ещё все эти 15 лет надо будет дописывать и переписывать. А ну и ещё текучка джунов, постоянно уходят-приходят и нужно научиться погружать максимально быстро.

Так что ответ очевиден - каждому ПО свои критерии.

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

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

У меня сложилось ощущение что весь их спор - из-за разного подхода к необходимости написания тестов. Мартин изначально пишет под тесты, его подход так и выглядит - много мелких объектов/функций.

PS: больше спасибо за перевод.

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