Задать вопрос
  • Как на самом деле работает параллелизм?

    Sazoks, да нет, у тебя и правда много перемешано в вопросе. С первых строк видно что ты почти все неправильно понимаешь. И у тебя действительно несколько вопросов в одном.
    Почему тебе сейчас пишут в комментариях, а не в ответах. Это потому что нормально ответить на твой текст очень тяжело. Я и другие люди так просто экономим свое время.
    Подели свое обучение на три этапа. Первый этап - это программный параллелизм, системы планирования, системы разделения времени, системы пакетной обработки, системы реального времени. Второй этап - это архитектура вычислительных систем, SIMD, MISD, MIMD, топологии вычислительных систем и прочее (книга В. Г. Хорошевского). Третий этап - это аппаратный параллелизм современных процессорных архитектур, MESI, многоуровневый кэш и режимы параллельной обработки данных.
    Так у тебя должна будет выстроиться единая линия понимания параллелизма.
  • Почему в Java изменение интерфейса базового класса посредством модификации сигнатуры разрешено?

    @MarkusD Куратор тега C++
    Qubc, ява - это язык более высокого уровня, чем C++. Ява многое прощает своему пользователю и очень много думает за пользователя. Это одновременно и преимущество явы перед плюсами, и ее недостаток перед плюсами.
    Да, в яве у тебя такой вопрос не возник бы, но не потому что ты детально знаешь организацию памяти объекта в яве.
    В плюсах же у тебя такой вопрос возник именно потому что ты плохо знаком с поиском имен в C++.
    Ява не стимулирует тебя к более глубокому знанию.
    C++ - стимулирует, хоть и делает это весьма изощренно. :)
  • Почему в Java изменение интерфейса базового класса посредством модификации сигнатуры разрешено?

    @MarkusD Куратор тега C++
    Qubc, ответ отмеченный решением таковым не является. У человека там сплошная эзотерика написана.
  • Как правильно написать функцию принимающую универсальную ссылку?

    @MarkusD Куратор тега C++
    colorname , я правильно понимаю что свой ответ ты уже получил и правильное решение, решающее твой вопрос, тебе уже не нужно?
  • Как разрешить использование только конкретного наследуемого от интерфейса, не финального класса?

    @MarkusD Куратор тега C++
    rusyska55011, решишь задачу правильно, отвечу на твой вопрос.
    Для решения задачи у тебя есть два множества: множество "A" и множество "B". И есть интерфейс с функцией "virtual B Intf::Foo(A) = 0";
    В базе кода уже присутствует полсотни имплементаций этого интерфейса и больше тысячи мест использования имплементаций по интерфейсу.
    Твоя задача - создать еще одну имплементацию "Intf::Foo", для работы которой потребуется сперва как-то изменить как множество "A", так и множество "B".
    Вопрос: какие ограничения уже имеющийся код накладывает на твои возможности по изменению множеств "A" и "B"?
  • Есть ли смысл в бОльшем FPS, если частота обновления монитора 60 Гц?

    Вадим Соловьёв, пять лет с тех пор прошло, без малого.
    А можно узнать почему?

    Можно, конечно. Потому что сегодня мониторы с ограничением вертикальной синхронизации - это уже самый низ бюджетной ниши.
    FreeSync уже очень широко поддерживается и представлен аж несколькими версиями.
    G-Sync поддерживается не мене широко и тоже имеет несколько ревизий.
    Ну и главное. Мифом является то, что человеческий глаз различает не больше 24FPS. В том же 2018 году пошли активные обсуждения о переходе кинематографа на 96FPS. Разница между 60 и 96Hz заметна также хорошо, как и разница между 30 и 60Hz. Разительно заметна. Кинотеатры впечатлили зрителей более плавной и более живой картинкой.
    Разница между 120 и 240Hz заметна ничуть не хуже. Глаз человека продолжает улавливать изменения даже на такой частоте.
    Обработка ввода и рендер с частотой свободной развертки очень сильно меняет игровой опыт. Не в шахматах, конечно. Но даже медитативные игры с уклоном на созерцание дают иной опыт в этом случае.

    Выбор бюджетного офисного монитора для домашнего ПК - это вариант права каждого человека на личную ошибку.
  • Почему явная специализация невозможна?

    @MarkusD Куратор тега C++
    Acaunt, приведи ошибки из лога сборки, текстом, оформленным как код. Люди не читают с изображений.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname,
    1. Effective C++

    Утратила свою актуальность, уступив следующей книге.

    2. Effective Modern C++

    Актуальна. Последнее издание описывает не только тонкости C++14, но и довольно хорошо заглядывает в будущие стандарты.

    3. Effective STL

    Утратила актуальность, уступив изданиям от Вандервуда.

    4. More Effective C++

    Утратила актуальность, еще старше предыдущей книги и описывает немного другой STL.

    5. Exceptional C++

    Актуальна. Позволяет просто понять цель существования исключений в C++. Исключения в последних стандартах менялись не так сильно. После книги актуализировать знания до современного уровня труда не составит именно что за счет знаний из книги.

    6. More Exceptional C++

    Актуальна, как и предыдущая.

    7. Exceptional C++ Style

    Тоже актуальна.

    8. C++ Coding Standards

    Актуальна. Это - классика. К стандартам языка она не привязана.

    9. Modern C++ Design

    Актуальна. Про нее я уже говорил выше.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname, так. Давай еще раз повторю.
    Напиши, о каких именно книгах ты спрашиваешь. Не о авторах, а именно о книгах.

    Иначе я отвечаю твоими же словами:
    это не ответ на мою просьбу. Если упоминаете какие то референсы то и скидывайте конкретные примеры
  • Актуальны ли книги Александреску, Майерса и Саттера?

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

    Напиши, о каких именно книгах ты спрашиваешь.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname
    но в этом и проблема что все книги упомянутых мною авторов датируются 2001-2004 годами

    Ну это немного неправда :)

    Прямо по приведенным мной ссылкам у авторов есть книги 2015, 2017 и даже 2022 годов.
    Они все на английском, в первоисточнике, но разве это проблема для программиста?

    Про книги до 2011 года у меня еще можно заметить некоторую осторожность. Я не отсекаю все книги до 2011 года.
    Например, у Вандервуда и Джосаттиса есть книга по шаблонам C++ от 2003 года, которую я порекомендую читать до второго издания 2020 года. Это потому что в том первом издании рассказывается именно скелет метапрограммирования в C++, а второе издание уже надстраивает над этим скелетом понимание современных шаблонов. Это очень важно, иначе есть риск не понять всю концепцию метапрограммирования в C++.
    Еще в качестве примера, у Йона Снейдера есть буквально замечательная книга по TCP. Эта книга от 2002 года и она актуальна по сей день. Я порекомендую именно ее вместо всяких современных изданий от сомнительных индусов.
    Ровно также я бы не отметал и Современное проектирование на C++ от Александреску. Опыт в этой книге актуален и сегодня.
  • Как зайти в геймдев с 3d и архитектурой?

    Artcomplex, 20 лет по профессии. Этим можно гордиться. Это дает повод уважать.
    Я - инженер, примерно столько же лет занимаюсь написанием кода игр. Я далек от арта и дизайна, поэтому не могу оценить твои навыки по приведенному изображению. Но через разговор сориентироваться могу.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    Станислав Макаров, вот вообще очень редко. Но может быть это такая специфика C++ собеседований в геймдеве.
    Правило трех или вообще не обсуждали, или всего один раз за последние пять лет обсуждали как правило трех/пяти. Чаще речь заходит только о правиле пяти.
    В целом, я с тобой соглашусь, что очень много где люди до сих пор так и не свыклись с изменениями в C++11 и дальше. Мне с позиции соискателя иногда приходится поправлять собеседующих меня людей по разнице поведения до и после 11го стандарта. И я искренне радуюсь когда со стороны компании выступают хорошо подготовленные по последним стандартам люди, которые могут и мне на мои ошибки указать.
  • Как зайти в геймдев с 3d и архитектурой?

    Artcomplex , какие у тебя навыки в 2D и 3D? Есть коммерческий опыт применения этих навыков, сколько лет и на каких должностях?
  • Можно ли при вызове функции указать в него тип данных?

    @MarkusD Куратор тега C++
    Acaunt, я позволю себе дать ответы на твои вопросы, ни коим образом не отнимая право на них у автора ответа.

    1) Явное лучше неявного. Широкое использование auto только усложняет чтение кода, сбивает читателя с его мысли и заставляет задаваться совсем ненужными вопросами. Поэтому лучше указывать явные типы переменных. А обобщение использовать стоит только тогда, когда указание явного типа только затрудняет понимание кода при чтении.
    2) Интуитивно более понятен и удобен вариант автора ответа, за тем лишь исключением, что обобщенный тип результата в шаблоне - это как у собаки пятая нога. auto в типе результата буквально незачем. Объявление этого шаблона должно быть таким:
    template <typename TResult>
    TResult search (std::string str);

    Это снова потому что явное лучше неявного. Шаблоны читать итак нелегко, а когда там еще и обобщения накручены, то становится только сложнее. Обобщение следует использовать только в обобщенных функциях, а не в шаблонах.
  • Какую роль играют float и double в скобках?

    @MarkusD Куратор тега C++
    RabraBabr,
    а вообще корректно сравнивать между собой два вещественных числа?

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

    yourtexthere, понимать совершаемое - это значит полностью усвоить информацию о совершаемом процессе, выработать навык безошибочного совершения процесса и иметь возможность на каждом шаге экспертно оценить правильность хода совершаемого процесса.
    Нет ничего страшного в том, что ты не понимаешь то, что делаешь. Нет ничего страшного в том, что ты признаешь очевидное для профессионала. Это - просто твои обстоятельства. Слова автора ответа - это просто изложение твоих обстоятельств в тексте.
    Изложенный тобой код действительно безграмотен и на самом деле он не работает так, как ты думаешь. Совпадение результата этого кода с библиотечным значением - чистая случайность.
    И для твоего уровня знаний - это нормально. Нечего стесняться своей безграмотности тогда, когда с ней нужно бороться через изучение и практику.
  • Почему доступ к элементам vector-а O(1)?

    @MarkusD Куратор тега C++
    Quark,
    Но если он основан на динамическом массиве, то как тогда выполняется вставка элементов?

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

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

    @MarkusD Куратор тега C++
    Дмитрий, душнить, поди, в твоем репертуаре. :) Но и сыпешься ты знатно тоже.

    так и чему он не равен?

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

    в пропозале C++ написно, что он отложен до C++29.

    Это ты к чему? Кто тебя хоть что-то просил написать про FAM в C++? Перечитай вопросы внимательно и ответь как положено.

    Мне в целом фиолетово, что написано в стандарте, мой код компилирует компилятор, а не стандарт.

    Ну вот в этом и есть основная проблема армии мальчиков, опирающихся на результаты транслятора. Жизнь слепого котенка, конечно, легка и беззаботна, но куда она выведет?
    Транслятор пишется людьми. Люди ошибаются. Ошибка - это нормально, когда ее можно обнаружить и исправить. Но чтобы обнаружить ошибку транслятора, нужно в деталях и тонкостях знать используемый стандарт языка. Ты же опираешься на выдачу транслятора и просто не можешь отследить те моменты, когда транслятор тебе нагнал. А я спокойно пишу отчеты для MSCL, clang и GCC по всем найденным ошибкам. Вот и все.

    ОК. На этом мои полномочия -- всё.

    Ну, т.е. ты слова снова на ветер бросил? Сам бы мог для начала подумать о том, что код демонстрирует и что в нем упрощено для демонстрации. Ты вот только выравнивание заметил, а целую гору остальных нюансов не смог что ли? Душнить же пришел, вроде. ))

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

    @MarkusD Куратор тега C++
    Дмитрий, первое: пользуемся "Ответить" тому, кому отвечаем. Это удобно, поверь. :)
    Второе: после C99 стандартов больше нет? Какой стандарт C является совместимым с C++17 и что в этом стандарте написано про FAM?

    А ещё у вас UB, когда вызываете placement new на невыровненный массив байтов

    Байт. На невырАвненный массив байт. Ну да, так и есть, и что дальше?