Ответы слабы и не уверены как пишется

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

Не устаю повторять, что вот РФ и ОРДЛО, существуют исключительно для нашего самообразования на примерах как нельзя жить, как нельзя делать. Это наше «черное зеркало», в которое мы должны смотреть, ужасаться и стараться, чтобы на нашем лице не было ни одной гримасы, ни одной похожей на русский мир морщины. Если мы не вынесли уроков из жизни в гетто СССР, вот вам, ОРДЛО, вот вам РФ, вот вам Беларусь, товарищи, учите матчасть!

Не перестаю удивляться этому прекрасно созданному кем-то миру. Не захотел развития и деградировал — вот тебе историческая карусель и бег по кругу, при чем, этот бег будет по голоду, минным полям, оккупации, мародерству, насилию, уничтожению нации, обыдлячиванию, где вечный матрос Железняк на бронивичке будет копировать своего великого Ленина, а народ будет под одеялом писать доносы на удачливых соседей, алчно облизывая губы «прошу расстрелять».

Видео дня

Я бы сделала рубрику «черное зеркало» и показывала в нем все прелести жизни по-русски, на РФ, в гетто, в ОРДЛО. Ведь, знаете, а народ-то до сих пор верит в Деда Мороза, чудо и кино. Ему и показывают российский сериал с добрыми миллионерами, которые одаривают народ особняками и счетами в банках, добрых судей с народом, справедливую милицию с народом. Русский народом.

На Донбассе в 2014-м году вздыхали «эх, пожить бы по-русски, на России-матушке», здесь, в мирных территориях, этого «добра» не меньше. «От при СССР було краще», — звучит и во Львове, и в Каневе, ив Полтаве. И в Мариуполе с Харьковом. Когда спрашиваешь «как это, по-русски», получаешь ответ — «а вот в кино показывали», «пабагатому», «там все для людей».

Именно поэтому я пишу и про ОРДЛО, и про РФ. Что бы знали, как это «у людей, для людей, с русскими людьми». Да, вот еще, главное. Русский человек везде, в былинах, сказках, мультфильмах, сериалах представлен таким себе «добрым молодцем»: честен, обаятелен, правдив, искренне, добр, широкой души, обогреет, защитит, русский не даст в обиду… Что там еще из клише? — забыла.

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

На РФ и россиян на Донбассе возлагали такие надежды, которые верующие не возлагают даже на Господа Бога. И, ожидая от россиян благ земных и небесных, легко предавали, легко убивали. Никто из хотящих пожить по-русски реально не знал о реальности РФ и самих русских. Сейчас донбасяне разочарованы, но…

Так как фронт «пожить по-русски, Путин все делает для простых людей», все еще нуждается в обороне, предлагаю очередную социальную историю.

Особенно полезны для изучения изменения в российском законодательстве. Ведь «жить по-русски», это жить по российским законам. Да, кстати, вот донбасяне были уверены, что их жизнь не изменится после того, как «референдум, назад в СССР, Россия нас заберет к себе».

Пыталась понять как это и объяснить, что так не бывает. Будут рубли (они сразу же появились в ОРДЛО), не будет Конституции Украины, а будет Конституция РФ (ну, здесь промахнулась — в ОРДЛО «конституция республик»), будут законы РФ (в ОРДЛО их «законы», это калька с законов РФ), будут отменены все украинские льготы, субсидии, соцпакеты (здесь все реализовалось, в ОРДЛО нет даже бытового бесплатного угля шахтерам).

Таким как я не верили. «Ты шо, Россия ж даст, будет еще лучше». Ну-ну, пожить по-русски Донбасс хлебнул по самое горлышко. Россию на Донбассе идеализировали настолько, что это была кристаллизированная идеализация. Некий символ всего лучшего в энной степени.

И вот помыслы русских, и стремления, и мораль, и честь, и совесть русского человека была настолько героизирована и идеализирована, что жители ОРДЛО в критическом их большинстве слепо доверяли русским во всем. И погибли!

Пишу я об этом много, часто и нудно. Потому что страшно. Страшна любая идеализация: страны, партии, политика, ЛОМа, блогера. Каждый кумир — шаг в ад. Кумиров выбирают по образу и подобию своему. В кумирах находят частичку себя. Кумирам прощают все, так как оправдывают все, даже насилие.

Сталин был кумир миллионов. И миллионы убивали миллионы ради своего кумира, так как находили в нем реализацию своего эго, себя. Коллективный Сталин, коллективный Ленин, коллективный Путин, коллективный Лукашенко.

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

Лидеру простят все: танцы на костях, пьянку в Голодомор, любую насмешку над обществом, любое хамство, цинизм, мракобесие, булинг, нивелирование морали и национальной идеи. Чем жестче лидер — тем сильнее преклонение, чем больше хамства и насилия — тем выше порог обожания. Посмотрите, кто несет в себе идеи русского мира, и вы увидите настоящий русский мир.

А теперь социальная история из жизни «идеально моральных русских людей»

Четыре года с хвостиком следователи разбирались в массовом отравлении сотрудников таганрогского завода. Этот завод режимный объект, один из важнейших военных объектов РФ, он выпускает самолеты-амфибии и самолеты для МЧС и Минобороны. То есть, уровень охраны и подбора сотрудников вы представляете?

В декабре 2017 года несколько сотрудников одновременно пожаловались врачам на странные симптомы — у юристов, экономистов, инженеров начали выпадать волосы, ломаться ногти. Когда пришли результаты анализов народ подписал «не разглашение» и дело получило графу «секретно». У сотрудников все больше проявлялись симптомы, количество пострадавших росло, чтобы не вызвать паники, людям ставили «диагноз» «ОРВИ, остеохондроз, гастрит».

«Утром почувствовала резкую боль в груди и пояснице, чего раньше никогда не было. Подумала: продуло. Наклеила перцовый пластырь и пришла на работу, — рассказывала одна из сотрудниц завода. — На похожие симптомы в тот день жаловались и другие сотрудники нашего отдела. И ситуация с каждым днем усугублялась. Каждый лечился, как мог».

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

«Мы решили, что подцепили какое-то сезонное вирусное заболевание. Шутили, что возрастное. А потом началось облысение. Пучки волос выпадали, это было ужасно», — продолжает другой сотрудник завода.

Это был декабрь, врачи молчаливо ставили «ОРЗ» и люди «лечились» мочой и травками. После новогодних праздников количество заболевших выросло до 34 человек. Люди лысели, как после химиотерапии. Сотрудники слабели, у них ухудшалось зрение.

Первые заболевшие были в таком тяжелом состоянии, что их отправили на лечение в Москву, в НИИ имени Склифосовского, лишь бы скрыть ситуацию. Ведь уже пошли разговоры про радиационное загрязнение территории, и «упаковке» снарядом для «укро-хунты» радиоактивными веществами.

Когда врачи столицы провели больше исследований (то есть медицина в Ростове, вы понимаете в каком состоянии), выяснилось, что все эти люди отравились токсичным металлом таллием.

Сразу объявили: на режимном предприятии с таллием не работают, яд занесен извне. Насколько это правда, я не знаю. Это РФ, детка. Здесь могут написать и нарисовать, что угодно, где угодно, на кого угодно. Но, если верить следствию, которое шло 4 года, оказалось, что таллий попал в организм сотрудников завода с едой или питьем. Столовая была под полным контролем, брали пробы из всего: вода, продукты, готовые порции, и все же пришли к выводу, что это вода, которую пострадавшие брали из 19-литровых бутылей с помпой, стоявших в коридоре в общем пользовании. В них нашли остатки таллия. Здесь смешно. Следствие шло по факту отравления в декабре 2017-го, а талий нашли через 3 года следствия. Хотя новых заболевших уже не было. Ну, то такэ, просто показатель следствия на РФ.

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

Виновного нашли быстро. 35-летний инженер Владислав Шульга поскандалил с юристом завода Сагилем Махмудовым. Вопрос скандала был прост: инженер на своей «Волге» снес во время неловкого маневра зеркало иномарки юриста и уехал. Махмудов раздобыл (!) на военном режимном объекте (!) записи камер видеонаблюдения и, увидел, что зеркало повредил на своей машине Шульга, потребовал 20 тысяч рублей компенсации.

Еще раз: отравление на военном режимной заводе, куда проносят яд и добавляют в воду для общего пользования, без допуска «достают» по блату записи с видеокамер.

Виновник ДТП отказался платить и попал в «герои» соцсетей, куда слили запись с видеокамер военного режимного завода (!). Ну, и, проиграл суд. Шульгу лишили водительских прав за оставление места ДТП. И инженер затаил в себе зло, обиду вселенскую из-за такой несправедливости. Он же русский. А тут его уделал какой-то Махмудов.

Обиды инженера росли, и премию ему не начисляли, и по службе не двигали, и «чурок» вокруг много, и талантливых русских обижают.

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

Что в этом деле интересно, так это вот, именно «охрана» военного объекта. А вот то, как задержали и получили показания «подозреваемого» это чисто по-русски, как и все в этой истории.

В апреле 2018 года (а массовое отравление случилось в декабре 2017-го) Шульгу отправили в СИЗО с улицы, за мелкий конфликт с его знакомым, который спровоцировал этот конфликт, видимо, по приказу ФСБ. В СИЗО Шульга во всем сознался, как проносил на режимный объект бутылочку с ядом, как подливал яд в воду.

На суде Шульга от своих показаний отказался. Сказал, что угрожали убить мать, оперативники обещали подбросить наркотики и обвинить его мать в их продаже. «Дело против меня сфабриковано», — заявил инженер перед началом заседания.

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

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

Приговор судьи основывался не на анализах воды и здоровья людей, не на расследовании «режима» венного завода, а на взаимоотношениях в коллективе. Все пострадавшие охарактеризовали Шульгу, как «постоянного раздражителя, вечно боролся за правду, считал копейки в зарплате, придирался к неправильному начислению».

Вообще, таллий на РФ популярен. Солями таллия в 2012 году убили самарского банкира Дмитрия Пузикова. Яд нашли в его порции картофельного пюре, а также на посуде и руках гостей вечеринки. Тогда быстро посадили вдову банкира, обвинив ее в алчности. Она странно быстро погибла после суда, не оставив наследников.

Поэтому сколько раз его применяли россияне к россиянам, остается тайной. Пострадавшие заводчане до сих пор работают. Более того, как оказалось, вот те самые с кем конфликтовал Шульга, не пострадали вообще, мол, не пили воду из общего «котла».

Вот тот факт, что халатность сотрудников, отвечающих за безопасность завода, не была предметом ни одного рассмотрения, и они все работают в охране до сих пор, наводит на странные мысли.

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

Тем, кто не знает, особенно жителям Донбасса, расскажу о симптомах отравления таллием: первоначальные симптомы отравления таллием можно сначала принять за другие заболевания, поэтому сложно диагностировать такое отравление. Оно сопровождается сильными болями в животе, тошнотой, рвотой, диареей. Спустя примерно неделю появляются признаки поражения центральной и периферической нервной системы: мышечная слабость, тахикардия, проблемы со зрением. Воздействие зависит от индивидуальных особенностей каждого человека, того, что он ест, пьет, и, естественно, дозы таллия, попавшей в организм. Яд накапливается в головном мозге, мышцах, легких, почках, печени, селезенке. Высокие дозы смертельны для человека. Выпадение волос свидетельствует о высокой концентрации таллия и остром отравлении им.

Знакомо?

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

Из этой статьи вытекает очень много выводов. Но, я оставлю это читателям. Скажу лишь, что признаки, описанные, как симптомы отравления, наблюдались и наблюдаются в ОРДЛО массово.

И все же, я бы хотела спросить: неужели вам хочется жить вот в таком по-русски, с доносами, обвинениями, заговорами, фабрикованием дел, запугиванием свидетелей, с такой судебной и правоохранительной системой, с такой моралью «мочи, козла, он требует правильно начислять зарплату»? Мне, нет!

Поэтому я буду держать свой информационный фронт до последнего живого русского на нашей территории. Отойдут за свой поребрик, пусть там и бесятся в своем русском мире!

disclaimer_icon

Важно: мнение редакции может отличаться от авторского. Редакция сайта не несет ответственности за содержание блогов, но стремится публиковать различные точки зрения. Детальнее о редакционной политике OBOZREVATEL поссылке…

У российских банкиров опять на слуху слово «геймификация» — так профессионалы называют игровую «обертку», в которую заворачивают банальные рекламу и маркетинг. Полезно или нет?

Если зайти утром в плотно заполненный общественный транспорт и внимательно осмотреться, легко понять: играм все возрасты покорны. «Прыгалки», «стрелялки», «лопалки» — в каждом втором телефоне, у самых разных людей. «Ага!» — подумали маркетологи и придумали геймификацию — использование игровых механик, чаще всего начисление «фантиков», чтобы заставить пользователя делать что-либо полезное для создателей продукта.

Таким нехитрым образом разработчики игр могут продать свой опыт не только на рынке собственно игр, но и в массе других индустрий — образовании, картографии и, наконец, банкинге. Банкам при этом кажется, что они становятся не только менее скучными, но и смогут наконец научить клиентов пользоваться всеми бесчисленными дополнительными функциями, которые в противном случае будут пылиться в глубине приложения и не принесут дохода.

Тактике геймификации в мировой практике уже почти 20 лет. В российском банкинге она также появилась не вчера — достаточно вспомнить про СберБанк, который с 2017 года уже несколько раз разыгрывал миллион бонусов «Спасибо» в браузерных игрушках, или Альфа-Банк, который попытался решить действительно важную задачу, встроив в мобильное приложение симулятор мошенника и разыграв между правильно отбившимися пользователями миллион уже вполне настоящих рублей. Упомянем про два подобных проекта, вышедших совсем недавно.

«ЮVillage»

«ЮMoney» (экс-«Яндекс.Деньги», теперь входит в экосистему СберБанка) разработали свой новый игровой проект «ЮVillage» по концепции «строим город в чистом поле» — получилось что-то, что должно напоминать о Sims и немного о Farmville. Механика проста: требуется строить здания разного типа, заходить в них и выполнять задания.

Со зданиями и заданиями все интересно — в самом начале, только после запуска «ЮVillage», игроку разрешали построить только одно здание и сразу же нагружали заданиями, связанными с тратой денег. В последних и заключается смысл игры: участникам предлагают пополнить кошелек и потратить суммарно несколько тысяч рублей в магазинах разных категорий — продуктовых, интернет- («Алиэкспресс», «Литрес»), аптеках, вещевых и т. д. Первые доступные в игре задания подразумевают трату 5 200 рублей только по тем категориям, где обозначены минимальные суммы. Вдобавок там хватает заданий на покупку товаров, например, в магазинах брендированной одежды, что не может быть дешево.

Выполнение этих заданий дает внутриигровую валюту, которая нужна для развития виртуального города и строительства новых зданий с новыми заданиями. Саму валюту нельзя потратить вне игры, но можно выиграть баллы «ЮMoney», а их впоследствии потратить в некоторых интернет-магазинах.

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

«Тинькофф-Монополия»

«Монополия» — пожалуй, самая известная финансовая игра, которую брендируют все подряд. Механика тиньковской версии также покажется знакомой всем, кто хоть раз играл в обычную: бросай кубик, делай ходы, покупай здания и компании. Но теперь в зданиях также содержатся задания, связанные с тратой заметных сумм денег в разных категориях магазинов. Их нужно выполнять в обмен на игровые баллы, которые дают игроку новые возможности для развития, — звучит знакомо, правда? Отличие игры «Тинькофф» в стратификации — каждый пользователь попадает в свою «лигу», из которой может повышаться или понижаться в классе.

Что же до заданий, то их сначала нужно добыть, покупая клетки на игровом поле, при этом они имеют ограниченный срок действия — в конце недели все задания «сгорают», и чтобы заработать больше баллов, нужно будет добыть новые задания. В отличие от «ЮVillage», они связаны не только с тратами, но и с открытием новых, дополнительных продуктов. Среди первых восьми заданий в эксперименте было два с суммой от 1 000 рублей, а остальные заключались, например, в открытии накопительного счета, обмене валюты без указания суммы или даже просмотре «историй» в приложении банка. Таким образом, игра не очень подходит давним клиентам, у которых уже все открыто, — они маркетологов «Тинькофф», понятное дело, не слишком интересуют.

Что думают профессионалы?

Мы решили поинтересоваться мнением профессионала игровой индустрии, который не раз сталкивался в работе с тактикой геймификации. «Проблема геймификации в банках в том, что заказчики, похоже, уверены, будто ничего сложного в этом нет — тяп-ляп, ачивки, бонусные баллы, готово. Но судя по тому, что такие проекты возникают и потом исчезают, эффекта от них каждый раз немного. На рынке в принципе сейчас тяжело найти грамотных разработчиков игр — в самой игровой индустрии спрос настолько высок, что остальным, по сути, ничего не остается. Если можно пойти на интересный проект настоящей игры, зачем писать «веселую ферму» для банка? — недоумевает он. — Скорее разработчики игровых вселенных обвесят внутриигровые криптовалюты всеми финансовыми услугами, чем банки научатся делать по-настоящему увлекательные игры».

Выбор пользователей Банки.ру

У маркетологов банков свои задачи, но перед пользователями стоит два простых вопроса:

  1. Неужели банковские игры интереснее тех, что можно скачать в App Store или Google Play?
  2. Достаточно ли дешево их время, чтобы потратить его (и некоторые суммы денег) на набор виртуальных фантиков, по сути, внутри рекламного ролика?

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

Антон НЕХАЕНКО, Banki.ru

Язык Си — один из наиболее влиятельных языков программирования за всю историю. Он стал незаменимым инструментом разработки операционных систем, сместив с этого пьедестала языки ассемблера. Изучение Си обязательно для любого уважающего себя программиста. Этот язык любим за свою внешнюю простоту и ненавидим за беспощадность к ошибкам. Благодаря ему у нас есть ядро Linux и тысячи уязвимостей в нём же в придачу. Попробуем понять, что же такое этот противоречивый язык Си — благословение или проклятие?

История языка Си берёт свое начало в недрах американской компании Bell Labs и тесно связана с судьбой операционной системы UNIX. Ее создатели, Кен Томпсон и Деннис Ритчи, разрабатывали свой проект для компьютеров PDP-11, и первые два года их основным инструментом был язык ассемблера. Трудоёмкость написания машинного кода вынуждала искать ему замену, которой в конечном итоге и стал язык Си. С его помощью было полностью переписано ядро операционной системы и большая часть утилит. Язык Си позволял создавать эффективные низкоуровневые программы на PDP-11, практически не используя при этом язык ассемблера.

Со временем встал вопрос портирования UNIX на новые аппаратные платформы. Использование языка Си значительно упростило эту задачу. Ведь если бы в разработке применялся только язык ассемблера, то тогда операционную систему пришлось бы переписывать под каждую компьютерную архитектуру. С другой стороны, исходники UNIX все еще содержали немало кода, созданного специально для компьютера PDP-11. Да и сам язык Си далеко не всегда точно отражал особенности и детали той или иной аппаратной платформы. Последнее еще больше затрудняло процесс переноса и лишало язык одного из его главных достоинств — прозрачной и понятной генерации машинного кода. Чем больше компьютерных архитектур захватывал Си, тем менее очевидной становились его связь с низким уровнем.

В процессе миграции UNIX на новые аппаратные платформы обнаружилась ещё одна проблема. Портированные программы на языке Си исполнялись медленнее, нежели можно было от них ожидать. Чем сильнее отличалась целевая компьютерная архитектура от PDP-11, тем менее эффективным был получаемый код. Чтобы скомпенсировать этот недостаток, разработчики компиляторов всё чаще стали применять неявные оптимизации. И хотя такое решение и улучшало производительность самих программ, Си всё больше отдалялся от низкого уровня. Теперь приходилось не только понимать, как именно определялись конструкции языка для каждой из компьютерных архитектур, но также и то, как они оптимизировались. Разумеется, любой компилятор самостоятельно решал, как именно транслировать исходный код для каждой аппаратной платформы. В итоге написать на языке Си низкоуровневую программу, независящую от используемого компилятора, стало практически невозможно.

Необходимо было понять, как эффективно реализовать высокоуровневые конструкции языка Си, сохранив при этом его низкоуровневые свойства. Попыткой решить эту проблему стала публикация в 1989 году первого стандарта языка. Его принято называть «ANSI C» или «C89», и именно на него мы будем ссылаться в дальнейшем. Создатели стандарта решили окончательно разорвать связь Си с архитектурой PDP-11 и сделать язык полностью высокоуровневым. Была введена так называемая «абстрактная машина» — воображаемый исполнитель кода на языке Си (раздел 2.1.2.3, «Program execution»):

Семантические описания в этом Стандарте описывают поведение абстрактной машины, в которой вопросы оптимизации не имеют значения.

Это означает, что оптимизации компилятора не будут влиять на работу программы, пока её исходный текст согласуется со стандартом. Абстрактная машина должна была решить две проблемы одновременно. Во-первых, следование стандарту давало возможность создавать легко переносимые программы на языке Си. Во-вторых, абстрактная машина могла предоставить компиляторам свободу для оптимизаций. Вот только возникает вполне резонный вопрос — а чем тогда язык Си отличается от любого другого компилируемого языка высокого уровня? Ответ кроется в тексте стандарта. Чтобы всё-таки дать теоретическую возможность программистам писать низкоуровневые процедуры, а значит непереносимые, было введено ещё одно понятие — неопределённое поведение (undefined behavior, раздел 1.6, «DEFINITIONS OF TERMS»):

Неопределённое поведение — поведение при использовании непереносимой или ошибочной программной конструкции, ошибочных данных или объектов с неопределёнными значениями, для которых стандарт не накладывает никаких требований. Возможное неопределённое поведение варьируется от полного игнорирования ситуации с непредсказуемыми результатами, поведения во время трансляции или выполнении программы задокументированным образом, характерным для среды (с выдачей диагностического сообщения или без него), до прекращения трансляции или выполнения (с выдачей диагностического сообщения).

Проще говоря, неопределённое поведение — это специально оставленные дыры в описании абстрактной машины языка Си. Они позволяют компиляторам самим решать, как поступать с теми или иными конструкциями языка, о поведении которых текст стандарта намеренно умалчивает. В том числе они могут быть восприняты как недопустимые в тексте программы. Давайте подробнее разберем неопределённое поведение на конкретном примере.

Возьмём следующий фрагмент кода на языке Си:

int x = 1;
x = x << sizeof(int) * 8;

Попробуем предположить, какой результат у нас получится. Допустим, мы скомпилировали этот код для процессоров архитектуры ARM. Инструкция битового сдвига в рамках этой аппаратной платформы определена так, что итоговым значением переменной «x» должен быть «0». С другой стороны, мы можем транслировать нашу программу в машинный код архитектуры x86. И уже там битовый сдвиг реализован таким образом, что значение «x» не изменится и останется равным «1». Мы могли бы сделать вывод, что результат работы данного фрагмента кода зависит от того, для какой аппаратной платформы мы его скомпилировали. Но на самом деле это не так.

В действительности данный фрагмент кода может быть обработан компилятором любым возможным и невозможным образом. Причина в следующем: согласно тексту стандарта языка Си битовый сдвиг на величину, большую или равную размеру выражения в битах, является неопределённым поведением. Получается, нет никакой гарантии, что этот кусок кода вообще будет работать. В действительности, даже в рамках одной архитектуры один и тот же компилятор может сгенерировать совершенно разные исполняемые файлы. Приведём примеры компиляции и запуска программы с печатью значения переменной «x». В обоих случаях мы используем компилятор gcc версии 10.2.1 для целевой архитектуры x86-64.

$ cat test.c
#include <stdio.h>

int main()
{
    int x = 1;
    x = x << sizeof(int) * 8;
    printf("%dn", x);
    return 0;
}
$ gcc test.c -o test
$ ./test
1
$ gcc -O test.c -o test
$ ./test
0

Флаг «-O» разрешает компилятору gcc использовать оптимизации исходного кода. То, какие именно механизмы оптимизации могут быть применены, а также какие флаги за них отвечают, зависит от конкретного компилятора. В общем случае невозможно узнать, каким образом будет обработано неопределённое поведение в программе при трансляции исходного кода. Поэтому единственный способ написания переносимых программ на языке Си — это полное избегание неопределённого поведения при разработке.

Рассмотрим чуть более сложный пример. Ещё одной разновидностью неопределённого поведения является разыменование нулевого указателя. Его тривиальным вариантом будет следующий фрагмент кода:

* (char *) 0;

Разумеется, никто в здравом уме не станет писать что-то подобное в своей программе. Однако совсем необязательно делать разыменование нулевого указателя явным образом, чтобы вызвать неопределённое поведение. В цикле статей «What Every C Programmer Should Know About Undefined Behavior» на сайте blog.llvm.org приводится фрагмент кода, подтверждающий это:

void contains_null_check(int *p)
{
    int dead = *p;
    if(p == 0)
        return;
    *p = 4;
}

Пример может показаться надуманным, но он позволяет немного лучше понять работу компилятора языка Си. Последний использует различные механизмы оптимизации, но здесь нам интересны лишь два. Один из них удаляет лишний, «мертвый» код, а второй вычёркивает бесполезные проверки на нулевой указатель. Если к вышеописанному фрагменту кода будет применён первый механизм оптимизации, то он преобразует функцию следующим образом:

void contains_null_check(int *p)
{
    if(p == 0)
        return;
    *p = 4;
}

Затем второй механизм не обнаружит лишних проверок на нулевой указатель, и исходный код функции примет свой итоговый вид. Однако в действительности порядок оптимизаций может быть и другим. К примеру, компилятор вправе первым делом исключить лишние проверки на нулевой указатель, и тогда функция будет преобразована уже следующим образом:

void contains_null_check(int *p)
{
    int dead = *p;
    if(0)
        return;
    *p = 4;
}

Так как мы разыменовываем указатель до его проверки, то компилятор спокойно решает, что сам указатель никогда не будет нулевым. Благодаря этому сравнение «p == 0» заменяется на выражение, всегда возвращающее ложь. Затем компилятор запускает первый механизм оптимизации и убирает «мертвый» код:

void contains_null_check(int *p)
{
    *p = 4;
}

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

Предположим, вы случайно допустили в своей программе неопределённое поведение. В лучшем случае вы сразу же обнаружите ошибку и исправите её. В не столь удачном — сделаете это не сразу. Однако гораздо вероятнее ситуация, что компилятор не станет использовать вашу оплошность себе на пользу. В таком случае неопределённое поведение останется в исходном коде программы до тех пор, пока не объявится в самый неподходящий момент. А такой момент может наступить при смене: целевой компьютерной архитектуры, компилятора или даже его версии, флагов оптимизации или вообще каких угодно флагов. Проще говоря, неопределенное поведение — это бомба замедленного действия. Когда она рванет — непонятно, но можно только догадываться, сколько интересных сюрпризов хранят в себе исходные коды тысяч программ.

Оптимизации компилятора могут затрагивать также и функции стандартной библиотеки языка Си, в том числе, к примеру, memset. Она широко и печально известна за обилие ошибок, которые допускают программисты при её вызове. Заголовок функции выглядит следующим образом:

void *memset(void *ptr, int value, size_t num);

memset записывает «num» байтов со значением «value» по адресу «ptr». Несмотря на то, что параметр «value» имеет тип int, в действительности используется лишь его младший байт. Функция активно применяется для обнуления больших массивов данных, однако компилятор и сам частенько любит вставить её вызов туда, где это нужно и не очень. Так, любопытный случай обсуждался 15 апреля 2018 года на форуме osdev.org. Пользователь под ником ScropTheOSAdventurer создал тему, в которой рассказал о процессе разработки собственной учебной операционной системы. На свою беду он разрешил компилятору оптимизировать исходный код проекта, в результате чего последний перестал работать. В процессе отладки программист обнаружил ошибку в следующем фрагменте кода:

void *memset(void *ptr, int value, size_t num)
{
    unsigned char *ptr_byte = (unsigned char *) ptr;
    for(size_t i = 0; i < num; ptr_byte[i] = (unsigned char) value, i++);
    return ptr;
}

Для своей операционной системы разработчик решил использовать собственную реализацию функции memset. Но он не учёл, что в процессе трансляции компилятор gcc обнаружит в этом коде весьма заманчивую возможность для оптимизации. Фактически функция была в итоге преобразована к следующему виду:

void *memset(void *ptr, int value, size_t num)
{
    return memset(ptr, value, num);
}

Вполне вероятно, что среди разработчиков компилятора gcc были непревзойденные мастера софистики. В любом случае способности компилятора к оптимизациям явно превосходят все доступные человеческому разуму пределы.

Приведем еще один пример с функцией memset. Компилятор способен не только создавать её вызовы на пустом месте, но и выкидывать их из исходного кода по собственному желанию. Так, в криптографических программах зачастую бывает полезно стирать все данные из памяти после того, как они перестают быть нужными. Обычно такое поведение является избыточным, однако представим себе следующую ситуацию. Ваша программа работает с базой данных пользователей, хранящей их имена и пароли, и вы описали примерно такую функцию:

int check_password(const char *pwd)
{
    char real_pwd[32];
    get_password(real_pwd);
    return !strcmp(pwd, real_pwd);
}

Есть лишь одна проблема — после вызова check_password в стеке останется строка с настоящим паролем пользователя. Если в вашей программе есть хотя бы одна уязвимость, позволяющая читать данные из памяти, то существует реальная вероятность украсть пароль из стека. Примером подобной уязвимости стал печально известный баг «Heartbleed». Чтобы снизить возможные риски, проще всего очистить содержащий пароль фрагмент стека:

int check_password(const char *pwd)
{
    int result;
    char real_pwd[32];
    get_password(real_pwd);
    result = !strcmp(pwd, real_pwd);
    memset(real_pwd, 0, sizeof(real_pwd));
    return result;
}

Казалось бы, решение найдено, однако не все так просто. Искушённый в вопросах оптимизации компилятор может решить, что вызов memset здесь лишний, и спокойно удалит его из тела функции. Действительно, для работы самой программы это действие абсолютно бесполезно. Что ещё хуже, компилятор может сгенерировать код, в котором пароль окажется в одном из регистров процессора. В таком случае получить его, используя уязвимость в программе, может оказаться еще проще. И у вас даже не получится заставить компилятор очистить содержимое регистра. Более подробно о данной проблеме можно прочитать по ссылке.

Одной из наиболее коварных разновидностей неопределённого поведения является strict aliasing. Термин может быть переведён как «строгое наложение», однако традиционного названия на русском языке у него не существует. По этой причине мы будем использовать оригинальный английский термин. Текст стандарта дает такое описание для strict aliasing (раздел 3.3, «EXPRESSIONS»):

Значение объекта должно быть доступно только с помощью lvalue-выражения одного из следующих типов:

— объявленный тип объекта,

— квалифицированная версия объявленного типа объекта,

— знаковый или беззнаковый тип, соответствующий объявленному типу объекта,

— знаковый или беззнаковый тип, соответствующий квалифицированной версии объявленного типа объекта,

— тип массива, структуры или объединения, который включает в себя один из вышеупомянутых типов среди своих членов (включая, рекурсивно, член внутренней структуры, массива или объединения),

— символьный тип.

Проще всего strict aliasing проиллюстрировать на конкретном примере:

int x = 42;
float *p = &x;
*p = 13;

Чтобы вызвать неопределенное поведение, достаточно обратиться к какой-либо переменной по типу, несовместимому с объявленным. Это ограничение можно обойти, применив символьный тип (char), на который не распространяются правила strict aliasing:

int x = 42;
char *p = &x;
*p = 13;

Вот только расчленение переменной на символы может оказаться трудоемкой задачей. Придется учитывать размер данных, а также используемый порядок байтов. Избежать неопределённого поведения можно также с помощью объединений (union):

union u { int a; short b };
union u x;
x.a = 42;
x.b = 13;

Впрочем и этот метод не лишён недостатков — объединение должно содержать члены со всеми возможными типами, которые будут использованы программой. Все это серьёзно осложняет применение «type punning» или так называемого каламбура типизации — намеренного нарушения системы типов. Эта техника необходима для более гибкого низкоуровневого управления памятью машины.

Чтобы проиллюстрировать пользу каламбура типизации, разберем небольшой пример. Допустим, вы прочитали содержимое файла с изображением в память программы. И теперь вам требуется написать функцию, которая возвращает цвет пикселя по указанным координатам. Для простоты будем считать, что размер типа int совпадает с размером пикселя, как и порядок байтов у обоих:

int get_pixel(const char *buf, int width, int x, int y)
{
    buf += get_header_size(buf);
    return ((const int *) buf)[y * width + x];
}

При вызове функции ей передается адрес области данных с содержимым файла, включая его заголовок, ширину изображения, а также координаты пикселя, цвет которого следует вернуть. Вместо типа int мы могли бы выбрать любой другой с известным нам размером. Но все это неважно, потому что функция get_pixel абсолютно неверна с точки зрения стандарта, так как нарушает правила strict aliasing. Чтобы использовать каламбур типизации, придется переписать весь код, связанный с используемым буфером, в том числе и тот, который ответственен за чтение файла.

Существует огромное количество примеров программ, не удовлетворяющих правилам strict aliasing. В их число входит знаменитая функция вычисления быстрого обратного квадратного корня из игры Quake 3:

float FastInvSqrt(float x)
{
    float xhalf = 0.5f * x;
    int i = *(int *) &x;
    i = 0x5f3759df - (i >> 1); /* What the fuck? */ 
    x = *(float *) &i;
    x = x * (1.5f - (xhalf * x * x));
    return x;
}

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

Остается один вопрос — зачем вообще нужен этот strict aliasing? Все дело в том, что он позволяет создателям компиляторов применять крайне агрессивные оптимизации исходного кода. Правила strict aliasing распространяются на обращения к любой памяти, в том числе и динамической. Так комитет стандартизации отметил, что следующий фрагмент кода (источник):

void f(int *x, double *y)
{
    *x = 0;
    *y = 3.14;
    *x = *x + 2;
}

может быть преобразован таким образом:

void f(int *x, double *y)
{
    *x = 0;
    *y = 3.14;
    *x = 2;
}

Согласно правилам strict aliasing указатель y не может содержать адрес того же участка памяти, что и указатель x. Именно этот факт и позволяет заменить выражение «*x = *x + 2» на «*x = 2». Активное использование компиляторами подобных оптимизаций сломало огромное количество старого кода. Так, в письме от 12 июля 1998 года один из разработчиков компилятора gcc Jeff Law, отвечая на вопросы по strict aliasing и связанными с ним ошибками, пишет (источник):

> Существует очень много кода, который нарушает правила strict aliasing. Одним из таких примеров является «переносимая» универсальная функция контрольной суммы IP, которая содержится в исходных кодах BSD для работы с сетями.

ИМХО, такого кода становится все меньше и меньше — современные компиляторы уже какое-то время используют strict aliasing в анализе, в результате чего люди были вынуждены исправлять свой код. Безусловно, это не относится к Linux и некоторым другим свободным проектам, так как они используют только gcc.

> Если мы начнем говорить о том, что такой код неверный, то нам лучше было бы иметь какой-то план на случай, если люди начнут спрашивать, почему их код, который работал много лет, теперь сломался.

Укажите им на стандарт языка Си :-) :-)

Правила strict aliasing для компилятора gcc можно разрешить, используя флаг «-fstrict-aliasing», и запретить флагом «-fno-strict-aliasing». Последний рекомендуется применять, если вы не уверены, нарушаете ли вы текст стандарта — скорее всего, нарушаете. Говоря об упомянутом в письме ядре Linux, его автор Линус Торвальдс также дал свою оценку strict aliasing в частности и работе комитета в целом. Так, критикуя желание одного из разработчиков операционной системы лишний раз перестраховаться от нарушения стандарта, Линус написал такое письмо (источник):

Честно говоря, все это кажется мне сомнительным.

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

Дело в том, что использование объединений для реализации каламбура типизации — это обычный и СТАНДАРТНЫЙ для этого способ. В действительности он является документированным для gcc, и используется в том случае, если вы, будучи не слишком умным (оригинал: «f*cking moron»), применили «-fstrict aliasing», и теперь вам необходимо избавиться от всего того ущерба, который навязывает этот мусорный стандарт.

Энди, что послужило причиной для всего этого идиотизма? И не надо говорить мне, что текст стандарта «недостаточно ясный». Текст стандарта, совершенно ясно, является дерьмовой чушью (см. выше о правилах strict aliasing), и в таких случаях его нужно игнорировать. Для этого необходимо использовать средства компилятора, чтобы избежать ущерба. Аналогично нужно поступать и в ситуациях, где нет полной ясности.

Это то, почему мы используем «-fwrapv», «-fno-strict-aliasing» и другие флаги.

Я уже говорил об этом раньше и повторю еще раз: когда текст стандарта противоречит реальности — он является обычным куском туалетной бумаги. Он не имеет абсолютно никакой важности. В действительности, вместо него я лучше возьму рулон настоящей туалетной бумаги — так хотя бы я не испачкаю свою задницу чернилами (оригинал: «won’t have splinters and ink up my arse»).

Видимо, Линус Торвальдс плохо изучил язык Си — настоящему программисту на Си такое в голову бы не пришло.

Впрочем, одним лишь strict aliasing стандарт не полон. Чтобы вызвать неопределённое поведение, необязательно даже разыменовывать указатель:

void f(int *p, int *q)
{
    free(p);
    if(p == q) /* Undefined behaviour! */
        do_something();
}

Использование значения указателя после того, как память по нему была освобождена, запрещено текстом стандарта (раздел 4.10.3, «Memory managment functions»):

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

Программисту важно понимать, что указатели в Си не являются низкоуровневыми. Стандарт постарался полностью искоренить какую-либо связь языка с реальным миром. Даже сравнение указателей, ссылающихся на разные объекты, объявлено неопределённым поведением (раздел 3.3.8, «Relational operators»):

При сравнении двух указателей результат зависит от относительного расположения в адресном пространстве объектов, на которые они указывают. Если указанные объекты не являются членами одной и той же структуры, массива или объединения, то результат не определён.

Вот небольшой фрагмент кода, демонстрирующий некорректное с точки зрения стандарта сравнение:

int *p = malloc(64 * sizeof(int));
int *q = malloc(64 * sizeof(int));
if(p < q) /* Undefined behaviour! */
    do_something();

Однако наиболее интересным примером здесь будет служить исходный код следующей программы:

#include <stdio.h>

int main()
{
    int x;
    int y;
    int *p = &x + 1;
    int *q = &y;
    printf("%p %p %dn", (void *) p, (void *) q, p == q);
    return 0;
}

Если транслировать приведенный выше текст компилятором gcc, передав ему флаг «-O», то полученный исполняемый файл при запуске выдаст примерно следующую строку:

0x1badc0de 0x1badc0de 0

Остается большой тайной, по какой причине два указателя, содержащие одинаковые значения, оказались не равны. Возможно, ранее уже отмеченные нами разработчики компилятора gcc не менее искусны в трактовке текстов стандарта, чем в вопросах софистики. Проникнуться утончённой герменевтикой можно в обсуждении этого вопроса на официальном сайте организации GNU.

Большая часть примеров, связанных с работой указателей, была взята с сайта kristerw.blogspot.com. На нём вы сможете найти больше информации о текстах стандарта языка Си, а также загадочных оптимизациях компиляторов.

Может показаться, что в случае выключенных оптимизаций все вышеописанные проблемы обойдут вас стороной. Просто не передавайте компилятору флаг «-O», и вы получите тот результат, на который рассчитываете. Но на самом деле это не так. В январе 2007-ого года на сайте gcc.gnu.org пользователь под ником felix-gcc выложил исходный код следующей программы:

#include <assert.h>

int foo(int a) {
  assert(a + 100 > a);
  printf("%d %dn",a + 100, a);
  return a;
}

int main() {
  foo(100);
  foo(0x7fffffff);
}

Функция foo проверяет на переполнение сумму поданного знакового числа и константы «100». Как известно, на подавляющем большинстве компьютерных архитектур отрицательные числа задаются в виде дополнительного кода. В случае переполнения такое число меняет знак на противоположный, благодаря чему проверка «a + 100 > a» возвращает ложь. В теле функции main felix-gcc дважды вызывает foo. Сначала он подает на вход число, которое не приведёт к переполнению. Затем, исходя из того, что размер типа данных int равен четырем байтам, felix-gcc вызывает foo с наибольшим положительным числом данного типа. Логично предположить, что в таком случае сравнение вернёт ложь, и assert прервёт работу программы. Однако вот какой вывод получил felix-gcc после запуска исполняемого файла:

200 100
-2147483549 2147483647

Фактически gcc решил удалить проверку на переполнение, и это при том, что никаких флагов компилятору передано не было. И что еще интереснее, ранние версии gcc при тех же условиях не убирали проверку, в результате чего получаемая программа вела себя иначе. На резонную просьбу felix-gcc исправить неожиданный баг компилятора ответил пользователь под ником Andrew Pinski. Будучи разработчиком gcc, Andrew Pinski заметил, что данное поведение не является ошибочным. Более того, он сам оказался автором изменения в коде компилятора, которое и создало столь странный результат. Далее приводится фрагмент диалога felix-gcc и Andrew Pinski. Комментарии излишни:

Andrew Pinski
Переполнение знакового числа — это неопределённое поведение в тексте стандарта языка Си, используйте беззнаковый тип или флаг «-fwrapv».

felix-gcc
Вы должно быть шутите?
Различные проблемы безопасности вызваны переполнениями чисел, и вы просто так говорите мне, что в gcc 4.1 я больше не могу тестировать их для знаковых типов? Вы явно чего-то не понимаете. ДОЛЖЕН быть способ обойти эту проблему. Существующее программное обеспечение использует знаковые числа, и я не могу просто поменять тип на беззнаковый — мне все равно нужно проверить переполнение! Не похоже, что я мог бы использовать какой-нибудь обходной путь для этого. Что вы хотите от меня — чтобы я привел тип к беззнаковому, сдвинул вправо на один, затем сложил или что вообще?!
ПОЖАЛУЙСТА, ОТМЕНИТЕ ЭТО ИЗМЕНЕНИЕ. Оно создаст СЕРЬЁЗНЫЕ ПРОБЛЕМЫ БЕЗОПАСНОСТИ во ВСЕВОЗМОЖНЫХ ПРОГРАММАХ. Меня не волнует, что ваши стандартизаторы говорят о том, что gcc исправен. ВСЕ ЭТО ПРИВЕДЁТ К ТОМУ, ЧТО ЛЮДЕЙ ВЗЛОМАЮТ. Я обнаружил эту проблему, так как одна из проверок безопасности, которая предотвращает взлом, провалилась.
ЭТО НЕ ШУТКА. ИСПРАВЬТЕ ЭТО! СЕЙЧАС ЖЕ!

Andrew Pinski
Я не шучу, стандарт языка Си прямо говорит, что переполнение знакового числа — это неопределённое поведение.

felix-gcc
Так, послушайте, Эндрю, вы что, действительно думаете, что эта проблема исчезнет, если вы продолжите закрывать баги достаточно быстро? Проверка, которую я написал, покрывала все возможные ситуации. Не требуется даже уточнения того, что за тип используется — указатель, беззнаковое или знаковое число. Ну, указатели вы тоже сломали, но ваши изменения были исправлены. Парень, который сделал это тогда, должен появиться здесь, нам нужен кто-то с трезвой головой и видением ситуации как у него.
Давайте посмотрим правде в глаза — вы облажались по полной (оригинал: «fucked up this royally»), и теперь вы пытаетесь прикрыть все ошибки как можно скорее, чтобы никто не заметил, сколько ущерба вы нанесли. Вы, сэр, непрофессиональны и позорите команду разработчиков gcc. Эта ошибка останется открытой до тех пор, пока вы не вернёте все обратно или не сделаете упомянутый вами флаг по умолчанию. Пока вы будете ломать программы, чьи авторы по глупости включили оптимизации, мне всё равно. Но я не позволю вам делать моё окружение менее безопасным только потому, что ваш непрофессионализм не позволяет вам разобраться с оптимизациями после того, как было показано, что они наносят больше вреда, чем пользы. Сколько еще доказательств вам необходимо предоставить? Боже мой, да autoconf считает, что ваши «оптимизации» нужно отключать повсеместно. Вы вообще замечаете взрывы вокруг самих себя?

Andrew Pinski

http://c-faq.com/misc/sd26.html

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

felix-gcc
МОЙ КОД НЕ СЛОМАН.
Попытки обесценить проблему или оскорбить меня ничего не решат.

Andrew Pinski
Вы написали ошибку, поэтому я и решил, что ваш код сломан.

felix-gcc
Итак, скажите мне, какая часть моей аргументации вам непонятна? Я мог бы использовать слова попроще, чтобы вы смогли меня понять на этот раз.
Ребята, ваша задача — это не просто реализовать стандарт Си. Вы также обязаны не нарушать работу программ, которые зависят от вас. А от вас зависит МНОГО программ. Когда вы нарушили точность вычислений с плавающей точкой, то вы сделали это доступным с помощью флага (-ffast-math). Когда вы добавили strict aliasing, вы так же сделали эту функцию доступной через флаг (-fstrict-aliasing). Если я правильно помню, вы тогда тоже цитировали текст стандарта, пока люди с более адекватным пониманием мира вас не остановили. И я собираюсь оставить эту ошибку открытой до тех пор, пока не повторится та же история.

Andrew Pinski
Я думаю, нам не следовало делать это необязательным, но меня не было в тот момент, когда было принято это решение. Также помните, что у нас был релиз, когда strict aliasing был включен, но затем нам пришлось его отключить по умолчанию. За это время люди исправляли свои программы, пока оптимизация была активна. И мы уже сделали оптимизацию знакового переполнения опциональной с помощью «-fwrapv». Я не понимаю, к чему вы приводите свои аргументы.

felix-gcc
Вы не можете просто так потенциально сломать кучу свободного ПО лишь потому, что изменили свое мнение по поводу того, какую свободу вам дает стандарт.
Повзрослейте или уйдите, позволив более ответственным людям заниматься вашими делами.

Andrew Pinski
Подождите, но эта оптимизация была еще с 1994-ого года, и если какой-либо код, начиная с этого момента, использовал знаковое переполнение, то авторы этих программ сами напросились.

felix-gcc
Знаете ли вы, что ракета Ариан-5 взорвалась (и могла убить людей!) из-за ошибки переполнения? Что если люди погибнут из-за того, что вы решили, что стандарт позволяет вам выкидывать проверки безопасности, написанные людьми?

Andrew Pinski
Я уже показал вам, как проверять знаковое переполнение до того, как оно произойдет, а не после. Вы можете научить других специалистов по безопасности тому, как писать этот код.

felix-gcc
Еще раз: НЕ ИМЕЕТ ЗНАЧЕНИЯ ТО, ЧТО ГОВОРИТ СТАНДАРТ. Вы сломали программы, и люди пострадали от этого. Теперь верните все обратно. Меньшее, что вы можете, это сделать «-fwrapv» по умолчанию. Вам все еще придётся заставить его работать правильно (я слышал, что он неверно работает в определенных ситуациях), но это уже другая история.

Andrew Pinski
Он будет по умолчанию в тех языках, где определено именно такое поведение. Я дал вам способ написания проверок переполнения, и если вам не нравится то, что говорит стандарт языка Си, то это не моя вина.
Запомните: компилятор gcc также является оптимизирующим компилятором, и если вам нужны оптимизации, то вы должны следовать правилам того языка, на котором вы пишете, вместо создания неверных программ, что и происходит с Си и Си++ в целом.

felix-gcc
В ранних версиях компилятора такое поведение происходило только в случае включённых оптимизаций. Если немножко присмотреться, то окажется, что все ваши аргументы ничего не стоят.
Потому как gcc 4.1 выкидывает этот код уже без включённых оптимизаций. Вот и все ваши аргументы.
Пожалуйста, сделайте «-fwrapv» по умолчанию, и я заткнусь.

Andrew Pinski
Попробуйте проверить время исполнения программы с «-fwrapv» и без него. Вы увидите, что без него код работает быстрее.

Пытаясь уйти в обсуждение оптимизаций компилятора, Andrew Pinski решил тем самым оправдать свою позицию. В процессе он, однако, упомянул куда более «интересную» аргументацию:

Тот факт, что человек написал проверку переполнения неверным образом, не является основанием для наказания людей, которые на самом деле сделали это правильно, используя способ, описанный в документации. Это моя позиция — вы пытаетесь наказать людей, которые написали свои проверки так, как это предполагает стандарт языка Си.

А в самом конце обсуждения Andew Pinski заявил следующее:

Я бы принял вашу идею о включении «-fwrapv» по умолчанию, если бы не существовало способа для проверки переполнения до того, как оно случилось, но он есть. Да, мы сломаем код, который был написан, исходя из предположения о том, что знаковое переполнение возможно. Но я думаю, что это та цена, которую мы можем принять.

В заключение хочется привести еще одну цитату Линуса Торвальдса:

Разработчики gcc больше заинтересованы в попытках выяснить, что еще им позволяет делать стандарт, чем в том, как заставить вещи действительно работать.

И в этом, похоже, заключена главная проблема языка Си. Но подобное не могло произойти на пустом месте — в конечном итоге мы сами позволили этому случиться. Язык Си уже очень давно перестал выполнять возложенные на него функции и превратился в уродливую пародию на самого себя. Но мы этого не заметили, потому что смирились с тем, что наши программы не работают. Мы, как программисты, настолько привыкли к ошибкам, что они стали неотъемлемой частью нашей жизни. Зачастую на отладку и тестирование программ уходит больше времени, чем на проектирование и написание самого кода. И ведь это немудрено — людям свойственно ошибаться. Большую часть багов и уязвимостей программисты вносят случайно, совершенно не задумываясь, и мы ничего не можем с этим сделать. Однако неизбежность ошибок не оправдывает их существование. Задача программиста в том, чтобы писать код, который работает. Даже если это неочевидно, трудно и невозможно, мы не имеем права делать ошибки. Потому что иначе все бессмысленно, и мы перестаем понимать, что можно делать, а что нельзя, что красиво, а что уродливо. В погоне за эффективностью разработчики компиляторов забыли о том, для чего на самом деле нужен язык Си. Он инструмент программиста, а плохим инструментом нельзя написать хорошую программу. Эта история — показательный пример того, что не всякая деятельность плодотворна, и не каждое изменение ведет к лучшему результату. Стараниями комитета стандартизации и разработчиков компиляторов мы в конечном итоге потеряли язык Си. Как инструмент разработки он стал абсолютно бесполезен и даже вреден, и мы обязаны признать это. В противном случае наши программы никогда не будут работать. Пренебрежительное отношение к ошибкам должно уйти в прошлое, а вместе с ним должен умереть и язык Си.

P.S. Если вы все ещё верите, что язык Си можно спасти, ознакомьтесь по ссылке со следующей выдержкой за авторством одного из двух редакторов текста стандарта языка Си:

Мы позволим компилятору лгать вам. Мы будем лгать вашему коду. И когда дела пойдут плохо — ошибка, «обосратушки», утечка памяти — мы торжественно покачаем головами.

Авторы выражают благодарность Андрею Викторовичу Столярову за его критику и комментарии, благодаря которым эта статья приобрела настоящий вид, и без которых, быть может, её и вовсе не было бы.

Соавтор статьи: @aversey

Изначальная публикация: cmustdie.com

Ответы слабы и не уверены как пишется

06:41 2 декабря

Никакая культура немыслима без книг, и никаких книг не появится на свет, если будет некому их издавать. Именно этой истиной руководствуются профсоюзные активисты из числа преподавателей Академии управления городской средой, градостроительства и печати (АУГСГиП), борьба которых за сохранение своего учебного заведения ведется более пяти лет.

Теперь на повестке дня – сохранение специальности «издательское дело». В противном случае в Ленинграде, напомним – культурной столице России, будет просто-напросто некому печатать новые книги, газеты, журналы…

О том, что произошло с Санкт-Петербургским издательско-полиграфическим техникумом, писалось в средствах массовой информации не раз. Вопреки здравому смыслу и потребностям отрасли, вопреки протестам студентов и преподавателей, которых поддержали депутаты-коммунисты, ленинградские комсомольцы, социальные активисты из Движения гражданских инициатив, профсоюзы «Учитель» и «Дискурс», в 2017 году это старейшее и уникальное учебное заведение, ведущее свою историю с 1930 года, было объединено с Санкт-Петербургским колледжем строительной индустрии и городского хозяйства в новое учреждение – АУГСГиП. При этом чиновники из смольнинского комитета по науке и высшей школе пытались успокоить учащихся, преподавателей и общественность заявлениями о том, что специальности «полиграфическое производство» и «издательское дело» будут сохранены и в стенах АУГСГиП, что для абитуриентов по ним будут сохранены бюджетные места. Как выяснилось через четыре с половиной года после «слияния», свои обещания чиновники выполнять не намерены.

Граждане начальники утверждают, что специальности, связанные с полиграфическим производством, являются-де «неэффективными» и «невостребованными». Вот так, ни много ни мало! По словам руководителя первичного отделения профсоюза «Учитель» в АУГСГиП Юлии Викторовны Марковой, «в письме, адресованном обеспокоенным педагогам, администрация Петербурга указывает на невостребованность специальности». Граждане чиновники утверждают, что «прогноз потребности в кадрах приоритетных отраслей экономики Санкт-Петербурга по видам трудовой деятельности на текущий год и на последующие два года, предоставленный Комитетом по труду и занятости Санкт-Петербурга… не показал востребованности специалистов по издательскому делу». И это пишется, заметим, в условиях, когда только в Санкт-Петербурге действует 1000 типографий и 50 издательств. Выпускники профильного техникума на протяжении 90 лет успешно работают в издательствах и типографиях не только города, но и всей страны. До 2017 года обучающих издательскому делу учебных заведений было всего три: на берегах Невы, в Москве и в Самаре.

Не согласные с антигосударственным подходом чиновников преподаватели АУГСГиП подготовили обращение к президенту РФ, где, в частности, говорится: «…Санкт-Петербургский издательско-полиграфический техникум (ИПТ) был присоединен к непрофильному Колледжу строительной индустрии и городского хозяйства. Новая организация получила название «Академия управления городской средой, градостроительства и печати». В период реорганизации сотрудники, студенты, родители неоднократно подавали обращения в разные инстанции, выступая за сохранение ИПТ как самостоятельного юридического лица, опасаясь, что впоследствии будут закрыты востребованные специальности «полиграфическое производство» и «издательское дело»… Ежегодно техникум выполнял госзадание по обучению студентов по данным специальностям. В частности, конкурс на специальность «издательское дело» в последние несколько лет составлял 4 человека на место, что позволило учреждению дополнительно открыть 3 группы по платной форме обучения.

На многочисленные обращения за сохранение уникальных специальностей были получены ответы из администрации Санкт-Петербурга, что все бюджетные места ИПТ (то есть бюджетные места на специальности «полиграфическое производство» и «издательское дело») после реорганизации будут сохранены. Однако в 2021–2022 учебном году в АУГСГиП отменен прием студентов на специальность «издательское дело» как на бесплатной, так и на платной основе. Востребованная у работодателей и абитуриентов специальность оказалась под угрозой уничтожения».

Справедливые требования профсоюзных активистов из АУГСГиП неизменно находили понимание у депутатов фракции КПРФ в законодательном собрании Санкт-Петербурга, с их помощью немало сделано для успешной защиты социально-трудовых прав профсоюзных активистов. С новой проблемой – сохранения преподавания полиграфических специальностей – представители первичной организации МПРО «Учитель» в АУГСГиП уже обратились к руководителю фракции КПРФ в законодательном собрании Санкт-Петербурга Роману Игоревичу Кононенко. На недавнем заседании совета представителей общественных объединений при фракции КПРФ в городском парламенте товарищ Кононенко твердо пообещал преподавателям и студентам АУГСГиП всяческую поддержку со стороны депутатов-коммунистов. Интересы отечественной культуры, отечественного образования, отечественной промышленности были и остаются в числе наших приоритетов. Борьба за сохранение преподавания полиграфических специальностей – наше общее дело. Мы уверены в победе!

Ленинград

В декабрьском прошлогоднем выпуске я написал: «2020 год, заканчивайся уже побыстрее! Вы можете зайти на сайт любого компьютерного магазина, и увидите, что видеокарты AMD и NVIDIA тотально исчезают из продажи». Прошел целый год, но видеокарты по-прежнему в дефиците. В дополнение к неадекватным ценам на игровые ускорители графики в 2021 году мы столкнулись с заметным подорожанием оперативной памяти, жестких дисков и вместительных SSD. Наблюдаются проблемы и с доступностью центральных процессоров — особенно чипов AMD. На этом безрадостном фоне в начале каждого месяца, без заминок, выходил очередной выпуск «Компьютера месяца», в котором я со своей колокольни рассуждал о том, как собрать системный блок в такое непростое время. Скажу честно: некоторые выпуски давались очень тяжело.

Назло обстоятельствам в этом году была проделана большая работа. Помимо регулярных выпусков «Компьютера месяца», на нашем сайте вышло много статей, так или иначе связанных с постоянной рубрикой:

  • Компьютер месяца. Спецвыпуск: собираем системный блок под будущий апгрейд видеокарты.
  • Компьютер месяца. Спецвыпуск: на что способны самые быстрые игровые системы 2021 года.
  • Что купить, если очень нужен компьютер дома: игровой ноутбук или системный блок за те же деньги?
  • Как собрать игровой ПК с кастомной системой жидкостного охлаждения: выбор комплектующих, ошибки, тестирование.
  • Компьютер месяца. Спецвыпуск: определяемся с мощностью блока питания в игровом ПК.
  • Компьютер месяца. Спецвыпуск: апгрейд игровых системных блоков 3-4-летней давности — есть ли смысл?
  • Куда лучше установить радиатор жидкостной системы охлаждения в игровом ПК.
  • Расцвет и крах народных видеокарт: тестирование разных поколений игровых ускорителей средней ценовой категории.
  • Время попробовать что-то новое: тестируем видеокарты в разных играх в ультрашироком формате 21:9.

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

Компьютер месяца — декабрь 2021 года

Очередной выпуск «Компьютера месяца» вышел при поддержке интернет-магазина X-Com Shop, который имеет отделения в Москве и Санкт-Петербурге. При этом магазин осуществляет доставку товаров во все уголки страны, сотрудничая с «Почтой России» и транспортными компаниями.

X-Com Shop — партнер рубрики, поэтому в «Компьютере месяца» мы ориентируемся на продукцию, которая продается именно в этом магазине. Любая сборка, описанная в «Компьютере месяца», — это всего лишь ориентир. Ссылки в «Компьютере месяца» ведут на соответствующие категории товаров магазина. Кроме того, в таблицах указаны актуальные на момент написания статьи цены, округленные в большую сторону до значения, кратного 500 рублям. Естественно, за время «жизненного цикла» материала (один месяц со дня публикации) стоимость определенных товаров может как увеличиться, так и уменьшиться.

Для новичков, которые все никак не решаются самостоятельно «смастерить» себе ПК, вышло подробное пошаговое руководство по сборке системного блока. Получается, что в «Компьютере месяца» я рассказываю, из чего собрать компьютер, а в руководстве — как это сделать.

⇡#Стартовая сборка

Сборка подходит для современных ААА-игр с использованием преимущественно среднего качества графики в разрешении Full HD. Однако такие системы в большинстве случаев превосходно справляются с играми 5-7-летней давности.

Стартовая сборка. Игровой ПК здесь и сейчас
Процессор AMD Ryzen 3 1200, 4 ядра, 3,1 (3,4) ГГц, 8 Мбайт L3, AM4, BOX 8 500 руб.
Intel Core i3-10100F, 4 ядра и 8 потоков, 3,6 (4,6), 6 Мбайт L3, LGA1200, BOX 7 500 руб.
Видеокарта* NVIDIA GeForce GTX 1650, 4 Гбайт GDDR6 35 000 руб.
Материнская плата AMD B450
Пример:
• GIGABYTE B450M DS3H V2
5 500 руб.
Intel H510 Express
Пример:
• ASUS PRIME H510M-K
6 000 руб.
Оперативная память 16 Гбайт DDR4-3000/3200
Пример:
• Kingston FURY KF430C15BB/8
6 000 руб.
Накопитель SSD, 500-512 Гбайт, PCI Express
Пример:
• Kingston SNVS/500G
4 500 руб.
Корпус Корпус Midi-Tower
Пример:
• Eurocase MA02
2 000 руб.
Блок питания Пример:
• Cougar VTE 500, 500 Вт
3 500 руб.
Итого AMD — 65 000 руб.
Intel — 64 500 руб.

* В графе «Видеокарта» для всех сборок «Компьютера месяца» ссылки на каталог X-Com Shop не указаны — это все еще бесполезно из-за малого количества предложений. В этом месяце используются данные портала e-katalog (регион — Москва), так как в данной ситуации очень тяжело адекватно оценить наличие товара, используя всего один магазин.

Стартовая сборка за прошедший месяц практически не изменилась: 6-ядерный Ryzen 5 1600 в дефиците; на другие чипы AMD без слез смотреть невозможно; вся надежда на Ryzen 3 1200 — модель с четырехлетним «сроком годности». Со всеми переживаниями на этот счет вы можете познакомиться в ноябрьском выпуске «Компьютера месяца». Приятно, что хотя бы бюджетные видеокарты перестали дорожать — этот год приучил радоваться даже таким мелочам.

В сборке Intel четырехъядерный Core i3-10105F сменился очень схожей моделью Core i3-10100F — первого не было в продаже на момент написания статьи.

Про суровую реальность

И это — абсолютная правда. Вы даже не представляете, как тяжело предлагать сборку за 65 тысяч рублей, в которой используются Ryzen 3 1200 и GeForce GTX 1650. А потом выслушивать критику уровня «Рубрику лучше закрыть до лучших времен». Обидно, что даже при желании сэкономить на второстепенных комплектующих не получится «ужать» цену системного блока хотя бы тысяч на 10 — мы и так экономим на всем, на чем только можно. Остальное же «кромсание» сборок (уменьшение ОЗУ вдвое, покупка двухъядерников) приведет к заметному падению производительности — в некоторых случаях даже к критичному, я бы сказал. Подробнее об этом написано в статье «Компьютер месяца. Спецвыпуск: на чем можно сэкономить при покупке дешевого игрового ПК в 2020 году (и можно ли вообще)» — со временем она не потеряла своей актуальности.

Про альтернативу — игровой ноутбук

Один из самых популярных комментариев, встретить который в той или иной форме можно практически в каждом выпуске «Компьютера месяца». В том числе и поэтому была написана статья «Что купить, если очень нужен компьютер дома: игровой ноутбук или системный блок за те же деньги?».

Небольшое сравнение показало, что игровые ноутбуки стоимостью до 100 000 рублей действительно способны заменить системный блок в нынешнее время. Лэптоп с мобильной GeForce GTX 1660 Ti практически не отстает от системного блока с GeForce GTX 1660 при схожей цене. А вот в сегменте High-end, когда речь заходит о ноутбуках с графикой GeForce RTX 3070 и GeForce RTX 3080, ситуация другая. Даже в условиях дефицита игровых видеокарт в этом году самосборный системный блок по-прежнему оказывается заметно быстрее при сравнимой цене.

И такую картину мы наблюдаем на протяжении всего года. В декабре за 94 999 рублей можно взять модель ASUS TUF Dash F15 с 4-ядерным Core i5-11300H, 16 Гбайт памяти стандарта DDR4-3200, GeForce RTX 3060, работающей на минимальной мощности, и SSD объемом 512 Гбайт. Собрать схожий, но более быстрый вариант с Core i3-10105F окажется не очень сложно.

Про альтернативу — консоль

Еще один комментарий-рекордсмен по появлению в «Компьютере месяца» — это совет взять вместо игрового ПК игровую же консоль. Совет — правильный, как мне кажется, но покупка Xbox или PlayStation все равно не отменяет потребности в домашнем компьютере.

Вопрос выбора игрового инструмента (ПК или приставки) из разряда вечных и постоянно обсуждается на нашем сайте. Да, сейчас современные консоли смотрятся гораздо предпочтительнее того, что можно собрать из новых комплектующих. Но ведь так было всегда — с меньшей разницей в цене, но было. Так, в декабре 2013 года PlayStation 4 вышла в продажу с рекомендованной ценой в 400 долларов США. Столько же стоила 2-гигабайтная версия GeForce GTX 770, а за GeForce GTX 780 пришлось бы отдать уже 650 долларов. Или вот еще пример из недавнего прошлого: год назад PS4 Slim стоила в среднем 28 000 рублей, а Pro-версия — 34 500 рублей. Простенькая сборка с Core i3-9100F, 16 Гбайт DDR4 и GeForce GTX 1650 SUPER обошлась бы нам в 41 тысячу. Столько же в ноябре стоила одна GeForce RTX 2070 SUPER, например.

Про нерациональную экономию

В декабре разница в цене между GeForce GTX 1050 Ti и GeForce GTX 1650 составляет 3 500 рублей. В нашем обзоре от 2019 года было показано, что более современная видеокарта оказалась на 25 % быстрее (в разрешении Full HD). Сейчас же продаются преимущественно версии GeForce GTX 1650 с GDDR6-памятью — а значит, разница в производительности будет еще больше. Плюс мы знаем, насколько тяжело микроархитектуре Pascal даются новые игры — и вот в Cyberpunk 2077 модель GTX 1650 опережает GTX 1050 Ti уже на 64 % при использовании низкого качества графики, в Far Cry 6 — на 32 %.  Со средним качеством в ААА-проектах GeForce GTX 1050 Ti уже давно не справляется.

Про HDD в сборках

Последний раз я рекомендовал жесткий диск в паре с SSD еще в 2018 году. Как видите, прошло очень много времени, но вопросы касательно моей нелюбви к этому типу запоминающих устройств все не заканчиваются. На самом деле никакой нелюбви к HDD у меня нет. К такому решению я пришел, потому что организация дискового пространства в ПК — это сугубо индивидуальный вопрос. Вот посоветуешь в сборке какой-нибудь терабайтный HDD в дополнение к SSD — так одному он попросту не нужен, а у другого от прошлой системы осталась куча жестких дисков. Третьему мало одного терабайта, а четвертому — и трех!

Пару лет эти же мысли посещают меня и при выборе типа SSD, так как постоянно в комментариях возникают споры о надобности/ненадобности твердотельных накопителей c интерфейсом PCI Express. Какой бы стороны в этом вопросе вы ни придерживались, виноват все равно будет автор — поделом ему, не угодил читателю! Тем не менее без накопителя системный блок будет считаться незаконченным продуктом, и в «Компьютере месяца» я руководствуюсь простым правилом: в сборки начального уровня — стартовую и оптимальную — рекомендуются SSD попроще; в продвинутую и максимальную конфигурации — «пожирнее». Как поступите вы, уважаемые читатели, решать уже не мне.

Про оперативную память для сборок

Платы на базе чипсета H510 Express не поддерживают разгон оперативной памяти — в том числе и средствами профиля XMP. Если вы установите Core i5, Core i7 или, не дай бог, Core i9 11-го поколения, то максимальная эффективная частота ОЗУ для сборки составит 3200 МГц. Если Core i7 или Core i9 10-го поколения — 2933 МГц. В остальных же случаях память будет работать в режиме DDR4-2666 — это максимальный показатель для подобной связки процессора и платы. И с Core i3-10100F память будет работать с эффективной частотой 2666 МГц.

Однако даже для стартовой сборки я все равно рекомендую комплект DDR4-3000. Во-первых, доступных и распространенных модулей DDR4-2666 с низкими таймингами нет в продаже. Во-вторых, разница в цене между DDR4-2666 и DDR4-3000 оказывается незначительной. Например, модуль Kingston FURY KF430C15BB/8 с таймингами 15-17-17-32 стоит 3 000 рублей, а планка Crucial CB8GU2666 с задержками 19-19-19-43 — 2 500 рублей. Если повезет, при снижении частоты с 3000 до 2666 МГц основные, вторичные и третичные тайминги комплекта Kingston можно дополнительно «поджать», но это уже тема для отдельной статьи.

⇡#Сборка под апгрейд

Система рассчитана под установку видеокарты уровня GeForce RTX 3060 или Radeon RX 6600 XT. В таком составе сборка позволит играть во все современные игры с использованием максимального или близкого к таковому качества графики в разрешении Full HD.

ПК под апгрейд видеокарты
Процессор AMD Ryzen 5 5600G, 6 ядер и 12 потоков, 3,9 (4,4) ГГц, 16 Мбайт L3, AM4, OEM 24 500 руб.
Intel Core i5-11500, 6 ядер и 12 потоков, 2,7 (4,6) ГГц, 12 Мбайт L3, LGA1200, OEM 18 500 руб.
Процессорный кулер Башенный кулер
Пример:
• ID-Cooling SE-224-XT Basic
2 000 руб.
Материнская плата AMD B550
Пример:
• MSI B550M PRO-VDH
8 000 руб.
Intel B560 Express
Пример:
• MSI B560M PRO-VDH
10 000 руб.
Оперативная память 16 Гбайт DDR4-3000/3200
Пример:
• Crucial BL8G32C16U4B
7 000 руб.
Накопитель SSD, 500-512 Гбайт, PCI Express
Пример:
• Samsung MZ-V8V500BW
6 500 руб.
Корпус Корпус Midi-Tower
Пример:
• AeroCool Aero One Mini-G-WT-v1
3 500 руб.
Блок питания Примеры:
• Cooler Master MWE Bronze V2 600 Вт;
• Enermax MaxPro II 600 Вт;
• Be quiet! SYSTEM POWER 9 600 Вт
4 500 руб.
Итого AMD — 56 000 руб.
Intel — 52 000 руб.

Давайте по сложившейся традиции посмотрим, сколько стоят сейчас видеокарты (цены взяты на сайте e-katalog.ru):

Динамика изменения цен на видеокарты
Название видеокарты Сентябрь Ноябрь Декабрь
GeForce GTX 1650 29 000 руб. 36 500 руб. 35 000 руб.
GeForce GTX 1650 SUPER 34 500 руб. 40 000 руб. 39 500 руб.
GeForce GTX 1660 46 500 руб. 55 000 руб. 52 000 руб.
GeForce RTX 2060 64 000 руб. 62 500 руб. 59 000 руб.
GeForce RTX 3060 LHR 77 000 руб. 76 000 руб. 81 500 руб.
GeForce RTX 3060 Ti LHR 94 000 руб. 87 000 руб. 96 500 руб.
GeForce RTX 3070 LHR 119 000 руб. 106 000 руб. 114 000 руб.
GeForce RTX 3070 Ti 129 000 руб. 130 000 руб. 136 500 руб.
GeForce RTX 3080 LHR 173 000 руб. 159 500 руб. 172 000 руб.
GeForce RTX 3080 Ti 195 000 руб. 190 000 руб. 201 500 руб.
GeForce RTX 3090 290 000 руб. 286 000 руб. 303 000 руб.
Radeon RX 6600 Еще не вышла в продажу 62 000 руб. 62 000 руб.
Radeon RX 6600 XT 70 000 руб. 70 000 руб. 72 500 руб.
Radeon RX 6700 XT 105 000 руб. 108 500 руб. 115 500 руб.
Radeon RX 6800 Не было в продаже Не было в продаже 136 500 руб.
Radeon RX 6800 XT 150 000 руб. 140 000 руб. 140 000 руб.
Radeon RX 6900 XT Нет данных 182 000 руб. 186 500 руб.

Если в списке нет какой-то видеокарты — она либо отсутствует в продаже, либо неинтересна нам. Мы видим, что цены на игровые видеокарты, активно использующиеся в майнинге, уже не так рьяно реагируют на курсы криптовалют. Устройств в продаже становится все больше, но за последний месяц их цены скорее выросли, чем упали. Подешевели разве что условно бюджетные модели, такие как GeForce GTX 1650 и GeForce GTX 1660.

А вот карты, активно использующиеся в майнинге, только подорожали — естественно, это связано с ноябрьским ростом курса криптовалют, ведь монеты BTC и ETH этой осенью обновили свои рекорды. Видимо, мы так и будем дрейфовать от месяца к месяцу, констатируя то небольшое снижение цен, то возврат к прежним показателям — до тех пор, пока AMD, NVIDIA и их технические партнеры не наладят выпуск продукции в нужном количестве.

Про плохой выбор процессора для сборки под апгрейд

Почти весь год в сборке под апгрейд AMD рекомендовалась связка «Ryzen 5 3600 + GeForce GT 710», так как 6-ядерник не имеет встроенной графики. Конечно же, такой тандем не подходит для игр, хотя даже с GeForce GT 710 можно поиграть в какие-нибудь «нетленки» класса третьих «Героев», Disciples II, первого Макса Пейна. Конечно же, варианты чипов AMD с интегрированным iGPU, в том числе и обозначенный в комментарии выше Ryzen 3 3200G, в играх смотрятся предпочтительнее. Только вот «Ryzen 5 3600 + GeForce GT 710» стоил меньше, чем в свое время просили за один только Ryzen 5 PRO 4650G. В играх же с использованием дискретной графики уровня GeForce RTX 3060 вариант сборки под будущий апгрейд видеокарты с Ryzen 5 3600 опережал аналогичную систему с Ryzen 5 PRO 4650G в среднем на 8 % при меньшей цене, но есть приложения, в которых разница доходит и до 25 %. Подробно этот момент был разобран в статье «Компьютер месяца. Спецвыпуск: собираем системный блок под будущий апгрейд видеокарты». Конфигурация же с 4-ядерным Ryzen 5 3350G, который заметно опережает Ryzen 3 3200G, и вовсе оказывается медленнее в среднем на 14-16 % в разрешении Full HD при использовании далеко не самой быстрой видеокарты.

Сейчас же самый дешевый Ryzen со встроенной графикой стоит в «Икскоме» 14 000 рублей с учетом округления. Речь идет про 4-ядерный Ryzen 3 PRO 2200GE.

Про GeForce GT 710

Кстати, этот комментарий, опубликованный в январском выпуске, стал в какой-то степени пророческим. Действительно, к концу года такие «затычки», как GeForce GT 710 и GeForce GT 730, стали исчезать из продажи. Сейчас, судя по данным «е-каталога», за них просят от 5 500 рублей, но средняя цена за модель MSI N730-2GD3V2 держится в районе 7 000 рублей.

Собственно говоря, именно поэтому уже второй месяц подряд в сборке под апгрейд рекомендуется чип Ryzen 5 5600G, ведь стоимость Ryzen 5 3600 к концу года перевалила за 20 000 рублей. В играх, при использовании мощной GeForce RTX 3090 в разрешении Full HD, стенды с Ryzen 5 3600 и Ryzen 5 5600G показывают примерно равные результаты: где-то чуть быстрее Matisse, где-то — Cezanne. Так что в сборке под апгрейд смена одного 6-ядерника на другой погоды не делает, если мы рассматриваем «красный» системный блок как сборку с обязательной последующей установкой нормальной игровой видеокарты уровня GeForce RTX 3060 и выше. При этом встроенная графика Ryzen 5 5600G оказывается быстрее и GeForce GT 1030, и UHD Graphics 750, используемой в некоторых чипах Intel Rocket Lake.

Все равно грустно оттого, что, казалось бы, бюджетные сборки AMD с каждым месяцем становятся все дороже и дороже.

Про башенные кулеры

Эффективность даже недорогих башенных кулеров неоспорима. Этот вопрос довольно подробно разобран в статье «Почему Core i5-11400F — это лучший Rocket Lake и при чём тут Intel B560». В действительности, если отключить все лимиты мощности, младший 6-ядерник Intel способен потреблять и рассеивать до 150 Вт. Значение 65 Вт указано в характеристиках чипа для его базовой частоты. А это 2,6 ГГц у Core i5-11400F. Без ограничений же младший Rocket Lake способен работать на частоте 4,2 ГГц при загрузке всех шести ядер.

Сразу же оговорюсь: некоторые платы при первом запуске собранной системы предлагают пользователю самостоятельно выбрать предел мощности процессора, исходя из того, какой кулер установлен в сборке. Другие материнки имеют неснимаемый лок — например, ограничение в 125 Вт. В большинстве же случаев, по моим наблюдениям, ограничения с ЦП по умолчанию сняты.

Так вот, при использовании боксового кулера частота Core i5-11400F снижается из-за его перегрева даже в играх. Такая система охлаждения пригодна только при включении 65-ваттного лимита мощности. Не надо экономить на кулере!

Про выбор процессора

Мы проверили этот факт в статье «Компьютер месяца. Спецвыпуск: апгрейд игровых системных блоков 3-4-летней давности — есть ли смысл?». Выяснилось, что при использовании чипов класса Core i5-9400F, Core i5-10400F и Ryzen 5 2600X в разрешении Full HD при использовании GeForce RTX 3060 в некоторых случаях наблюдается заметная процессорозависимость системы — это значит, что сборка в играх может выдавать больше FPS, но для этого нужно установить более быстрый ЦП и оперативную память. Так что выбор 6-ядерников в сборке под апгрейд, на мой взгляд, является обоснованным при покупке системного блока с нуля.

⇡#Оптимальная сборка

Сборка подходит для современных ААА-игр с использованием преимущественно высокого качества графики в разрешении Full HD. Однако такие системы в большинстве случаев превосходно справляются с играми 3-летней давности.

Оптимальная сборка. Игровой ПК здесь и сейчас
Процессор AMD Ryzen 5 3600, 6 ядер и 12 потоков, 3,6 (4,2) ГГц, 32 Мбайт L3, AM4, OEM 21 000 руб.
Intel Core i5-10400F, 6 ядер и 12 потоков, 2,9 (4,3) ГГц, 12 Мбайт L3, LGA1200, OEM 14 000 руб.
Процессорный кулер Башенный кулер
Пример:
• ID-Cooling SE-223 BASIC
1 500 руб.
Видеокарта NVIDIA GeForce GTX 1660, 6 Гбайт GDDR5 52 000 руб.
Материнская плата AMD B450
Пример:
• ASUS TUF B450M-PRO GAMING
7 500 руб.
Intel B560 Express
Пример:
• MSI B560M PRO-VDH
10 000 руб.
Оперативная память 16 Гбайт DDR4-3000/3200
Пример:
• Crucial BL8G32C16U4B
7 000 руб.
Накопитель SSD, 500-512 Гбайт, PCI Express
Пример:
• Samsung MZ-V8V500BW
6 500 руб.
Корпус Корпус Midi-Tower
Пример:
• Deepcool MATREXX 40
4 000 руб.
Блок питания Примеры:
• Cooler Master MWE Bronze V2 600 Вт;
• Enermax MaxPro II 600 Вт;
• Be quiet! SYSTEM POWER 9 600 Вт
4 500 руб.
Итого AMD — 104 000 руб.
Intel — 99 500 руб.

Оптимальная сборка в сравнении с прошлым месяцем не изменилась. Я возлагал определенные надежды на Radeon RX 6600, но новинка AMD категорически отказалась дешеветь по прошествии нескольких недель. Поэтому пока что в оптимальную сборку рекомендую чуть сбросившую в цене GeForce GTX 1660.

Про апгрейд сборки

Начиная с оптимальной сборки, представленные здесь и далее варианты — как игровых системных блоков, так и конфигураций под будущий апгрейд видеокарты — спроектированы с расчетом на последующую модернизацию. Это значит, что тот же Ryzen 5 3600, указанный в декабре, вы всегда сможете заменить более мощным чипом. Подробно эти моменты разобраны в октябрьском выпуске «Компьютера месяца» и в статье «Компьютер месяца. Спецвыпуск: апгрейд игровых системных блоков 3-4-летней давности — есть ли смысл?». Рекомендуемая в декабре модель ASUS TUF B450M-PRO GAMING, например, спокойно справится и с Ryzen 9 5900X.

Про апгрейд сборки — 2

Ответ на этот вопрос тоже раскрыт в статье, приведенной чуть выше. Если честно, я закрепил этот скриншот лишь с одной целью: некоторые комментаторы уверены, что темы для спецвыпусков я выдумываю сам и они интересны лишь одному автору и рекламодателям.

Апгрейд оптимальной сборки Intel является более сложной темой для разговора. Так, улучшение платформы LGA1200, на мой взгляд, оказывается не таким интересным и полезным занятием, как в случае с AM4. Но технически платы класса MSI B560M PRO-VDH будет достаточно для последующей модернизации системы до Core i7-11700F — и здесь речь в основном идет об играх. Для работы компьютера в ресурсоемких приложениях я бы взял плату с более внушительной «мускулатурой» в зоне VRM. Увы, материнки для платформ Intel стабильно стоят дороже AM4-плат для чипов AMD.

Конечно же, при переходе от бюджетных 6-ядерников к быстрым 8-, 10- и даже 12-ядерным моделям потребуется обновить и систему охлаждения.

Про не апгрейд сборки

Продолжая тему апгрейда, стоит заметить, что мою идею о постепенном апгрейде поддерживают далеко не все. Часть пользователей привыкла менять систему целиком, когда приходит время. Что-то мне подсказывает, что таких людей — большинство. Но вот с чем я точно не соглашусь, так это с понятием «всегда было лучше заменить всю систему целиком». Этот год наглядно показал, что сборка системы с нуля очень сильно ударит по карману, ведь подорожали не только видеокарты, но и память, накопители и некоторые процессоры. А так тот же ПК с Ryzen 5 3600 можно обновить до системы с Ryzen 7 5800X при минимальных затратах. После апгрейда мы получим конфигурацию, сопоставимую по уровню производительности со сборкой нового поколения, ведь 8-ядерный Ryzen отныне конкурирует с только-только появившимся Core i5-12600K.

Про выбор матплаты для сборки Intel

С апреля даже с чипами Core i5 10-го поколения я начал использовать B560-платы. Раньше, если вы хотели сменить 6-ядерный Comet Lake на чип поколения Rocket Lake, надо было брать плату на базе чипсетов H470 или Z490 Express. Не обошлось, правда, без неприятностей: далеко не все матплаты 400-й серии получили долгожданные обновления BIOS. Еще в прошлом году я рекомендовал в рамках некоторых сборок такие модели, как ASUS PRIME Z490M-PLUS и ASRock H470 PHANTOM GAMING 4. Но прошивок с долгожданной поддержкой Rocket Lake так и не появилось.

Покупка B560-платы — это возможность апгрейда сборки сразу до Core 11-го поколения, а здесь и сейчас плюсом станет использование более быстрой памяти DDR4. Считаю переплату в пару тысяч рублей вполне обоснованной в данном случае.

Про интерфейс PCI Express 4.0

На мой взгляд, в оптимальной сборке AMD нет смысла непременно использовать B550-плату. Даже с учетом последующего апгрейда Ryzen 5 3600 до чипа поколения Zen 3 и разблокировки интерфейса PCI Express 4.0. Более быстрая шина не ускорит (так, чтобы это было заметно) существующие видеокарты — 16 линий PCI Express 3.0 достаточно даже для GeForce RTX 3090. Полагаю, в нынешней ситуации еще нескоро будут представлены середняки AMD и NVIDIA, соотносимые по быстродействию с бывшими флагманами «красных» и «зеленых».

Про дешевые матплаты

В комментариях подобного рода фигурируют и другие недорогие платы, использующие наборы логики A320, B350, B450 и A520. Суть одна: читатели предлагают ставить в сборки более доступные аналоги, чем рекомендуемые в «Компьютере месяца».

К сожалению, я не могу ответить на вопрос, почему материнские платы стоят так дорого. Однако в октябрьском выпуске наглядно показано, почему плата класса ASUS PRIME B450M-K II не справится с 8-ядерными чипами AMD при использовании ресурсоемкого ПО. Именно поэтому я никогда не посоветую в «Компьютере месяца» плату класса ASUS PRIME B450M-K II в пару к действительно мощному Ryzen. В сборках, рассчитанных на последующий апгрейд центрального процессора, — тоже. Мне важно предоставить читателю, которому «здесь и сейчас» необходим новый системный блок, надежную, стабильную, совместимую и полностью рабочую конфигурацию.

Про деньги

С вами моя любимая рубрика «Вы всё врёте», или «Колись: сколько тебе занесли?». В роли занесших могут быть AMD, Intel, NVIDIA, ASUS, MSI, GIGABYTE — выбирайте любую компанию, какая больше нравится. Напомню, что цены на комплектующие берутся в магазине X-Com Shop. На момент написания статьи (3 декабря 2021 года) Ryzen 5 3600 стоил 20 738 рублей — 21 000 рублей с учетом принятого в «Компьютере месяца» округления. По данным «е-каталога», этот 6-ядерник стоит столько же, по данным «Яндекс.Маркета» — 22 000 рублей в среднем. Вот так и берутся цены в «Компьютере месяца».

⇡#Продвинутая сборка

Сборка подходит для современных ААА-игр с использованием преимущественно максимального качества графики в разрешении Full HD.

Продвинутая сборка. Игровой ПК здесь и сейчас
Процессор AMD Ryzen 5 5600X, 6 ядер и 12 потоков, 3,7 (4,6) ГГц, 32 Мбайт L3, AM4, OEM 27 500 руб.
Intel Core i5-12600K, 6+4 ядер и 16 потоков, 3,7 (4,9) ГГц, 20 Мбайт L3, LGA1700, OEM 27 000 руб.
Процессорный кулер Башенный кулер
Пример:
• ID-Cooling SE-226-XT BLACK
3 000 руб.
Видеокарта AMD Radeon RX 6600 XT, 8 Гбайт GDDR6 72 500 руб.
Материнская плата AMD B550
Пример:
• ASUS PRIME B550-PLUS
13 500 руб.
Intel Z690 Express
Пример:
• GIGABYTE Z690 UD DDR4
19 000 руб.
Оперативная память 32 Гбайт DDR4-3466/3600
Пример:
• Kingston FURY KF436C16RB1K2/32
13 500 руб.
Накопитель SSD, 960-1024 Гбайт, PCI Express
Пример:
• Samsung MZ-V8V1T0BW
11 500 руб.
Корпус Пример:
• Deepcool MATREXX 50 MESH 4FS
6 000 руб.
Блок питания Пример:
• Be quiet! PURE POWER 11, 700 Вт
8 000 руб.
Итого AMD — 155 500 руб.
Intel — 160 500 руб.

Над продвинутой сборкой Intel пришлось довольно долго ломать голову. С одной стороны, есть проверенный вариант с Core i5-11600KF — с ним сборка в декабре будет заметно дешевле за счет экономии не только на чипе, но и на материнской плате. С другой стороны, появились платы и процессоры для LGA1700. Так почему бы не вложиться в покупку, скажем, 10-ядерного Core i5-12600K? Да, если вам нужен ПК здесь и сейчас, придется ориентироваться на вариант с DDR4-памятью. Цены на самые недорогие Z690-платы в «Икскоме» начинаются от 19 000 рублей. В итоге, если сравнивать системы на базе платформ LGA1200 и LGA1700, новинка окажется дороже на 14-15 тысяч рублей.

Обзор младшего Alder Lake обязательно выйдет на нашем сайте. С графикой уровня GeForce RTX 3090 в тестовом стенде мы вправе ожидать серьезного преимущества Core i5-12600K перед Core i5-11600KF в играх в разрешении Full HD. Потому что между этими чипами меньше общего, чем между Core i7-12700K и Core i7-11700K. А во втором случае сборка с Alder Lake оказывается быстрее в среднем на 13 %.

Верно и то, что в продвинутой сборке используется  Radeon RX 6600 XT— гораздо менее процессорозависимая модель игрового ускорителя. Здесь сборки с Core i5-12600K и Core i5-11600KF с DDR4-памятью, полагаю, проявят себя одинаково в большинстве случаев. Со временем разница в производительности между чипами и платформами будет увеличиваться — по мере того, как игры будут задействовать все больше ядер. Так что сборка с Alder Lake непременно лучше покажет себя после апгрейда видеокарты.

В итоге в декабре я выбираю LGA1700, но, как обычно, не настаиваю. И, думаю, вполне очевидно, что в конце года сборки Intel с Alder Lake выглядят гораздо интереснее конфигураций AMD. «Красным» надо срочно сбрасывать цены на свои чипы, ведь тот же Core i5-12600K конкурирует с Ryzen 7 5800X, а Ryzen 5 5600X десятиядернику не конкурент.

А ведь уже в первой половине года будут представлены чипы серий Core i5 и Core i3, а вместе с ними и более доступные платы на базе младших наборов логики. Хочется верить, что в итоге в выигрыше окажутся все: и поклонники AMD, и поклонники Intel, и просто желающие получить хороший игровой компьютер без привязки к какому-либо бренду.

Про выбор памяти

Если деньги — последние, то, конечно же, на оперативной памяти можно и сэкономить. Однако стоит отметить, что разница в цене между комплектами DDR4-3000/3200 и DDR4-3466/3600 в течение года заметно сократилась. Такую бережливость в народе называют экономией на спичках.

Конфигурации продвинутой сборки «тянут» память с более высокой эффективной частотой, чем указано в официальных характеристиках. Для Ryzen 5 5600X и Core i5-11600KF указан стандарт DDR4-3200. Однако при помощи определенных материнских плат мы можем использовать набор ОЗУ с более высокой тактовой частотой — для этого необходимо активировать профиль XMP в BIOS устройства.

Про выбор БП

Переживать незачем. В статье «Компьютер месяца. Спецвыпуск: определяемся с мощностью блока питания в игровом ПК» наглядно показано, что даже при максимальной (!) нагрузке сборка с Core i5-11600K и GeForce RTX 3080 потребляет всего 559 Вт. А в играх энергопотребление этой же системы не превышает уже 494 Вт. И ведь в продвинутой сборке уже давно используется даже не GeForce RTX 3070, а GeForce RTX 3060 или Radeon RX 6600 XT. Так что БП на честные 600 Вт будет вполне достаточно, а для игрового компьютера — достаточно еще и с хорошим запасом.

Другое дело, что даже после выхода таких вот статей люди все равно не верят. Что ж, убеждать лично каждого я не собираюсь: если волнуетесь за свою систему и не доверяете автору, то, пожалуйста, возьмите более мощный БП. Как говорится, больше — не меньше.

Про нерабочие сборки

Если вы все же решили взять сборку на LGA1200 и сэкономить, то обратите внимание на материнскую плату. Платы на базе чипсета B560 Express, которые подходят для нашей продвинутой сборки, по факту стоят не сильно меньше Z490-материнок. Так, модель MSI Z490-A PRO в августе стоит 13 000 рублей, а Gigabyte B560M AORUS PRO — 12 000 рублей. Оба устройства поддерживают чипы Rocket Lake (и PCI Express 4.0 — тоже). Но учтите один момент: если вы решите взять вместе с Z490-платой чип поколения Rocket Lake, то, во-первых, обязательно убедитесь в том, что поддержка 11-го поколения Core у нее есть. Во-вторых, велика вероятность, что материнка будет продаваться со старой версией прошивки, а потому надо заранее обновить BIOS устройства. Сделать это можно, например, в гарантийном отделе магазина. Некоторые торговые площадки предоставляют услугу обновления BIOS сразу же при покупке устройства. А еще есть платы, позволяющие обновить прошивку даже в выключенном состоянии при помощи USB-флешки.

Осенью этого года у меня побывали две магазинные версии MSI Z490-A PRO. В обоих случаях была предустановлена версия BIOS под номером 2.80 — то есть платы поддерживали чипы Rocket Lake из коробки. При этом на упаковке никаких наклеек о поддержке Core 11-го поколения не было. И все же нельзя исключать, что мне просто попалась свежая модель из недавно прибывшей в Россию партии плат.

⇡#Сборка под апгрейд

В такой системе можно использовать видеокарты любого уровня производительности.

ПК под апгрейд видеокарты
Процессор AMD Ryzen 7 5800X, 8 ядер и 16 потоков, 3,8 (4,7) ГГц, 32 Мбайт L3, OEM 35 000 руб.
Intel Core i7-12700K, 8+4 ядер и 20 потоков, 3,6 (5,0) ГГц, 25 Мбайт L3, OEM 38 500 руб.
Процессорный кулер Башенный кулер или СЖО
Пример:
Enermax LIQMAX III White ARGB
10 500 руб.
Видеокарта NVIDIA GeForce GT 730 2 Гбайт — для AMD 7 000 руб.
Материнская плата AMD B550
Пример:
• MSI MAG B550 TOMAHAWK
15 000 руб.
Intel Z690 Express
Пример:
• GIGABYTE Z690 UD DDR4
19 000 руб.
Оперативная память 32 Гбайт DDR4-3466/3600
Пример:
• Kingston FURY KF436C16RB1K2/32
13 500 руб.
Накопитель SSD, 960-1024 Гбайт, PCI Express
Пример:
• Samsung MZ-V8V1T0BW
11 500 руб.
Корпус Пример:
• Deepcool MATREXX 50 MESH 4FS
6 000 руб.
Блок питания Пример:
• Be quiet! PURE POWER 11, 700 Вт
8 000 руб.
Итого AMD — 106 500 руб.
Intel — 107 000 руб.

В сборке под апгрейд точно используем платформу LGA1700. Если вам нужен системный блок здесь и сейчас, то придется ориентироваться на память DDR4 — на момент написания статьи я не нашел в продаже ни одного комплекта DDR5. А раз так, то единственным вопросом, касающимся системы с Alder Lake, является выбор процессора: Core i5-12600K или Core i7-12700K. Надеюсь, наш обзор 12-ядерника поможет вам сделать окончательный выбор.

Если говорить коротко, то Core i7-12700K — это Core i9-12900K, у которого отключили четыре энергоэффективных ядра. Вместе с этим с 30 до 25 Мбайт уменьшился и кеш третьего уровня. Естественно, энергопотребление Core i7-12700K оказалось заметно меньше, чем у флагманского Alder Lake, — на 50-60 Вт в ресурсоемких задачах. Но для охлаждения 12-ядерной модели все равно требуется сверхэффективный кулер или «водянка». Кстати, статья о выборе охлаждения для всех моделей Alder Lake скоро выйдет на нашем сайте.

Что касается результатов тестирования, то Core i7-12700K и Core i9-12900K демонстрируют схожую производительность в играх. Последний быстрее всего на 2-3 % в разрешении Full HD при использовании в стенде GeForce RTX 3090. При этом 12-ядерный Alder Lake на 8 % опережает Core i9-11900K, на 11 % — Core i9-10900K и на 7 % — Ryzen 9 5900X.

Да-да, если брать результаты еще и в ресурсоемких приложениях, то Core i7-12700K скорее конкурирует с Ryzen 9 5900X, но стоит при этом даже на старте продаж заметно меньше. На нашем сайте вышло уже несколько новостей о том, что чипы поколения Zen 3 «за бугром» начали дешеветь, но в России этого пока не происходит. В начале декабря Ryzen 7 5800X стоит 35 000 рублей — это на 2 000 рублей больше, чем месяцем ранее. Судя по данным «е-каталога», его цена выросла за месяц в среднем на 1 500 рублей.

А ведь к Ryzen 7 5800X необходимо докупить «затычку», если свободной видеокарты нет под рукой…

Про разъемы на материнской плате

Данный вопрос детально разобран в статье «Какой блок питания необходим современному игровому ПК». Для написания этой статьи мне предоставили модели Corsair TX650M и CX650 мощностью 650 Вт. Мощности таких блоков оказывается вполне достаточно для сборки с разгоняемым процессором. Естественно, чип можно разогнать, а раз так, то велика вероятность, что в пару к таким производительным комплектующим будет куплена материнская плата, оснащенная сразу двумя разъемами EPS 4+4. Однако большинство блоков питания имеет всего по одному 8-пиновому — в нашем эксперименте такой оказалась модель CX650. И она подошла для таких сборок. Результат разгона Core i9-9900K остался тем же — 5 ГГц в программе Prime95 с включенным тестом Small FFT, который максимально нагружает вычислительные ядра процессора и его кеш. Дополнительный кабель (а точнее, его отсутствие) никак не повлиял на работу системы и разгон ЦП.

Очевидно, что в случае с топовыми платами дополнительные порты для питания CPU необходимы для экстремального разгона процессоров. В остальных же случаях наличие еще одного разъема EPS на материнке очень смахивает на тонкий маркетинговый ход: чем больше у платы разъемов — тем мощнее и круче она кажется.

Про принудительный майнинг

В первой половине года нередко встречались комментарии с такой мыслью: можно купить видеокарту, а в перерывах между играми отбивать ее цену в майнинге. Во-первых, стоит учитывать, что на момент публикации этого комментария ETH стоил 4 300 долларов США, а уже через несколько дней рухнул до 2 800 долларов. Сейчас «кефир» снова стоит 4 000+ долларов. Во-вторых, не стоит забывать о конечности ресурса любого устройства, в том числе электронного. Но даже если оставить все это за кадром, сама идея кажется мне неправильной, потому что только я, владелец того или иного устройства, решаю, как мне его использовать: хочу — играю, хочу — майню, хочу — пылинки с видеокарты сдуваю. Вариант «купи видеокарту и обязательно используй ее в майнинге» — это откровенно скверный прецедент.

Про выбор монитора

В рамках «Компьютера месяца» меня очень часто спрашивают про выбор монитора. Мое мнение: в отличие от тех же сборок, представленных в статье, рекомендовать устройство определенного формата и разрешения довольно тяжело, ведь у каждого свои хотелки и потребности. Мне, например, уже давно импонирует формат 21:9 — приятно, что все больше игр поддерживает его без каких-либо ухищрений. Поэтому я могу только посоветовать обратиться к нашим тематическим гидам.

⇡#Максимальная сборка

Сборка подходит для современных ААА-игр с использованием преимущественно максимального качества графики в разрешении WQHD. В разрешении Ultra HD в некоторых играх потребуется снижать качество графики.

Максимальная сборка. Игровой ПК здесь и сейчас
Процессор AMD Ryzen 9 5900X, 12 ядер и 24 потока, 3,7 (4,8) ГГц, 64 Мбайт L3, OEM 46 000 руб.
Intel Core i7-12700K, 8+4 ядер и 20 потоков, 3,6 (5,0) ГГц, 25 Мбайт L3, OEM 38 500 руб.
Процессорный кулер Башенный кулер или СЖО
Пример:
Enermax LIQMAX III White ARGB
10 500 руб.
Видеокарта NVIDIA GeForce RTX 3070, 8 Гбайт, GDDR6
или
AMD Radeon RX 6700 XT, 12 Гбайт, GDDR6
114 000 руб.
Материнская плата AMD B550
Пример:
• ASUS ROG STRIX B550-A GAMING
17 500 руб.
Intel Z690 Express
Пример:
• GIGABYTE Z690 UD DDR4
19 000 руб.
Оперативная память 32 Гбайт DDR4-3466/3600
Пример:
• Kingston FURY KF436C16RB1K2/32
13 500 руб.
Накопитель SSD, 960-1024 Гбайт, PCI Express
Пример:
• WD WD_BLACK SN850 (WDS100T1X0E)
18 000 руб.
Корпус Корпус Full-Tower
Пример:
• Be quiet! SILENT BASE 802
16 000 руб.
Блок питания Пример:
• Be quiet! STRAIGHT POWER 11, 850 Вт
16 000 руб.
Итого AMD — 251 500 руб.
Intel — 245 500 руб.

Еще в прошлом выпуске было заявлено, что в максимальной сборке вряд ли появится Core i9-12900K, но стоит рассчитывать на Core i7-12700K(F). Тестирование показывает крошечную разницу между этими ЦП в играх, а потому я не вижу смысла переплачивать за гораздо более дорогой чип.

Единственный нелогичный с моей стороны момент — это желание видеть в максимальной сборке вариант системного блока с DDR5-памятью. О том, насколько ОЗУ нового поколения делает Alder Lake быстрее (и делает ли вообще), мы обязательно расскажем в ближайшее время, и пока в статье представлен вариант с DDR4-памятью. Он, кстати, не отличается от сборки под апгрейд — дело в том, что в «Икском» на момент написания завезли категорически малое количество материнских плат, что откровенно расстраивает.

Сейчас у нас есть несколько вариантов сборки системы:

  • Первый — просто собираем систему с 12-ядерным Ryzen 9 5900X. Но как уже было сказано, такая система в среднем на 7 % уступает сборке с Core i7-12700KF и DDR5-памятью.
  • Второй — берем сборку с 12-ядерным Alder Lake и комплектом DDR4-памяти.
  • Третий — покупаем все необходимое железо и ждем DDR5-память в продаже.

В январе киты DDR5-4800 и DDR5-5200 точно появятся в отечественных магазинах, но стоить будут довольно много: двухканальные комплекты объемом 32 Гбайт в первые месяцы продаж вы вряд ли найдете дешевле 20 000 рублей.

Про ужасно дешевую максимальную сборку

Я уже неоднократно отмечал, что определение «максимальная сборка» не означает, что в таких системах будет установлено только самое навороченное железо. Я, например, не вижу смысла использовать в «красной» системе Ryzen 9 5950X из-за его очень высокой цены, хотя в играх этот 16-ядерник мало в чем уступает Ryzen 9 5900X и Ryzen 7 5800X (а в некоторых случаях и превосходит их), даже несмотря на более низкую тактовую частоту при многопоточной нагрузке. И конечно же, флагман платформы AM4 оказывается очень хорош в профессиональных приложениях.

С видеокартами разобраться оказывается еще проще: ставить GeForce RTX 3090 за 300 000 рублей — это определенный вид троллинга даже в условиях дефицита в 2021 году.

Про выбор материнской платы

Уже давно даже в максимальной сборке AMD рекомендуется матплата на базе младшего набора логики B550, а не X570. В сборку берется что-то крутое — уровня ASUS ROG STRIX B550-A GAMING, например. Выбирая B550, мы не связываемся с горячим набором логики, для которого необходимо активное охлаждение. При этом функциональность максимальной сборки мало страдает из-за отсутствия X570-платы. Пожалуй, единственным недостатком является возможность подключить всего один накопитель PCI Express 4.0 — малозначимым, впрочем.

Правда, «красные» несколько месяцев назад обновили свой флагманский чипсет, и платы с логикой X570S уже не требуют активного охлаждения микросхемы. Только вот уже наступил декабрь, а в продажу новинок поступило не очень много. Например, за 24 500 рублей можно взять версию ASUS TUF GAMING X570-PRO WIFI II — и это пока самый доступный на рынке вариант с X570S-чипсетом.

Про звуковые карты

Периодически мне и максимальной сборке «Компьютера месяца», что называется, прилетает от читателей за отсутствие в ней дискретной звуковой карты. Но скрывать здесь нечего: тема звука в ПК — сложная, и я уверен, что большинство пользователей не почувствует разницу между трактом хорошей материнской платы и дискретной карты. А тот, кто ее чувствует, разберется сам, без каких-либо советов. Помнится, когда я работал в другом издании, мы делали громадный тест «звуковух» разных ценовых категорий, включая продвинутую «встройку» матплаты. В тестировании участвовали серьезные ребята, работавшие в журналах Car & Music и Total DVD. И результаты оказались, мягко говоря, неоднозначными. Поэтому дискретный звук не рекомендуется даже для максимальной сборки.

⇡#Полезные материалы

Ниже представлен список полезных статей, которые помогут вам в выборе тех или иных комплектующих, а также при самостоятельной сборке ПК:

  • Все выпуски «Компьютера месяца».
  • Как правильно организовать охлаждение в игровом компьютере.
  • Как собрать компьютер.
  • Как правильно и красиво организовать кабель-менеджмент в игровом ПК.
  • Куда лучше установить радиатор жидкостной системы охлаждения в игровом ПК.
  • Как собрать компьютер с кастомной СЖО.
  • Компьютер месяца. Спецвыпуск: собираем мощный, но компактный игровой системный блок.
  • Какая оперативная память необходима игровому компьютеру в 2020 году (и в 2021-м — тоже).
  • Сколько видеопамяти необходимо современным играм.
  • Компьютер месяца. Спецвыпуск: определяемся с мощностью блока питания в игровом ПК.
  • Добываем максимум FPS в киберспортивных играх: тестирование видеокарт, процессоров и памяти, а также история одного ПК.
  • Компьютер месяца. Спецвыпуск: тестируем сборку с GeForce RTX 3070 и сравниваем ее с игровыми системами прошлых лет.
  • Гид по выбору монитора в 2020 году: всё только начинается.
  • Время попробовать что-то новое: тестируем видеокарты в разных играх в ультрашироком формате 21:9.
  • Спецвыпуск: собираем компактный игровой ПК мощнее консоли и наслаждаемся Cyberpunk 2077.
  • 10 старых, но интересных игр, которые запустятся даже на очень слабом компьютере.
  • Компьютер месяца. Спецвыпуск: собираем системный блок под будущий апгрейд видеокарты.
  • Компьютер месяца. Спецвыпуск: на что способны самые быстрые игровые системы 2021 года.
  • Компьютер месяца. Спецвыпуск: апгрейд игровых системных блоков 3-4-летней давности — есть ли смысл?

Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

  • Ответы на вопросы по сказке спящая красавица
  • Ответы на вопросы по сказке иван царевич и серый волк 3 класс климанова
  • Ответы на вопросы по сказке ашик кериб для 4 класса
  • Ответы на вопросы по рассказу хамелеон 6 класс
  • Ответы на вопросы по рассказу станционный смотритель 7 класс