• Почему в Си допускается переполнение массива?

    TrueBers
    @TrueBers
    Гуглю за еду
    Потому что это проверка на переполнение даёт лишние накладные расходы при выполнении. Изначально язык разрабатывался с расчётом на эффективность, с девизом что-то типа: «не нужно платить за то, чем не пользуешься».

    По сути, Си — это просто высокоуровневый ассемблер. В ассемблере нет понятия ошибок вообще, всё на плечах разработчика. Если ему нужно проверять на переполнение, он сам должен реализовать этот функционал, а не терять на этом производительность, когда ему это не нужно.
    Ответ написан
    Комментировать
  • GUI на сервере. Насколько полезен/вреден?

    GavriKos
    @GavriKos
    ГУИ не нужен только по одной причине - вся работа с сервером должна строиться удаленно через SSH.
    Ответ написан
    3 комментария
  • Почему в дорогих коммерческих сайтах преобладает битрикс а не вородпрес?

    @immaculate
    Программист-путешественник
    Я в дорогих коммерческих сайтах не вижу ни того, ни другого.
    Ответ написан
    Комментировать
  • Как правильно организовать код большого проекта на C++(и не только)?

    @Mercury13
    Программист на «си с крестами» и не только
    Имена классов с большой буквы в CamelCase, например class EventHandler;.

    Принято в Java, Qt.

    Названия объектов аналогично, но первая буква маленькая, например Image backgroundImage;.

    Принято в Java, Qt.

    Названия примитивных типов(int, char, double, etc) маленькими через нижнее подчёркивание, например double percent_of_fails;

    Думайте как хотите, но, по-моему, нет нужды.

    Названия методов с мальнькой в camelCase и отражают действие функции, например void addModule(std::shared_ptr module);

    Принято в Java, Qt.

    Структура файлов:

    При таком количестве файлов (и даже впятеро большем) — норма.

    Первым идёт инклуд C++ хедеров, затем сторонние библиотеки типа буста, затем *.i файл из данной директории и после всё остальное.

    Свой хедер → стандартные библиотеки Си/Си++ → сторонние библиотеки, причём чем больше мы от них архитектурно зависим, тем они раньше → внутренние файлы (опять-таки, движок раньше утилит и наборов данных).

    Первым свой хедер — это архиважно. Как правило, модули идут парой «хедер + единица компиляции», и мы сразу же убеждаемся, что в хедере есть все нужные #include.

    1 forward declarations(чтоб не замусоривать ими остальные файлы)

    Forward declarations конкретно чего?

    2 инклуды всех *.h файлов из данной директории.

    Пункт спорный даже не из-за перекомпиляции, а из-за 1) циклической зависимости между модулями; 2) если сделать это в хедере — может привести к некомпилирующемуся проекту.

    Сущности в каждой директории имеют своё одноимённое пространство имён,

    Пространств имён должно быть намного меньше, чем файлов, плюс они должны быть предельно короткими. Избегать using namespace.

    Кроме того…
    1) Рекомендую в каталоги поиска хедеров поставить основной каталог проекта. В #include ни в конем случае не должно быть «каталог вверх» (..).
    2) Возможно, чужие библиотеки стоит вынести из каталога проекта. Их каталоги также стоят в каталогах поиска хедеров.
    3) Категорически запрещены повторы файлов в разных каталогах.
    Ответ написан
    2 комментария
  • Как правильно реализовать систему распределенных вычислений?

    riky
    @riky
    Laravel
    Самый лучший выход на мой взгляд сделать эту возможность как задание в игре. То есть клиент сам выбирает активировать ее или нет и насколько сильно можно загружать проц и взамен за рассчет кадой игры получает какие то внутриигровые бублики, по сути они работают на вас, ведь с таким же успехом вы могли бы майнить битки на их видюхах, вместо рассчета игр, поэтому им за это надо платить, пропорционально работе которую они выполняют, и тогда игроки будут рады это делать. естественно не обязательно говорить им именно про рассчет игр, а обыграть уже геймплеем (например ускоренное изучение магии со сокростью x2 требует дополнительной вычислительной мощности для игрока + обьяснить игроку что чем мощнее комп тем быстрее будет идти изучение). + можно сделать опцию чтобы активировать эту штуку только при питании от сети, таким образом многие игроки будут специально оставлять телефон включенным на зарядке лишь бы получить бонусы.
    Ответ написан
    6 комментариев
  • Какой первый Linux-дистрибутив поставить?

    urtow
    @urtow
    *nix, python, QA, bagpipe, folk music
    Тот, который стоит у ближайшего, готового отвечать на твои вопросы гуру.
    Ответ написан
    3 комментария
  • Некорректное вычисление?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Для C++ такая конструкция нарушает стандарт языка и приводит к неопределенному поведению. На C++ так писать нельзя.
    Ответ написан
  • Можно ли сделать парсер поиска твиттера?

    xSkyFoXx
    @xSkyFoXx
    Да. Можно.
    Ответ написан
    Комментировать
  • Как освободить место в /boot разделе?

    sim3x
    @sim3x
    apt autoremove
    нет никакой трагедии сделать ребут
    Ответ написан
  • Как аргументировать начальству создание существующего проекта заново, с ноля?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Задача сайта - выполнять свою бизнес задачу, а не демонстрировать красивый код в исходниках.

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

    Если ни то, ни другое, то с какой стати платить больше?
    Ответ написан
    11 комментариев
  • Как правильно наладить работу с фрилансерами в вопросе добавления товаров?

    opium
    @opium
    Просто люблю качественно работать
    1 да на фл самое то
    2 бекапы спасут мир
    3 забудьте фтп начните гит, уже все нормальные люди на него перешли чуть ли не десять лет назад
    Ответ написан
  • Есть ли программы для написания кода голосом?

    devspec
    @devspec
    Помогло? Отметь решением
    Такого нет не потому, что это невозможно сделать. А потому, что это быстро приведет к профессиональной деформации. Будете заходить в супермаркет и говорить - мне запятая пожалуйста запятая один большой пакет точка спасибо точка
    Ответ написан
    2 комментария
  • Какую файловую систему лучше использовать для Windows и Linux?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Вариантов целых 1: NTFS, поскольку под ext*,btrfs и другие нормальных драйверов под Win нет, а вот ntfs-3g вполне ничего.
    FAT не рассматривается по причине отсталости.
    Ответ написан
    2 комментария
  • Где кто видел книгу с максимально подробным=простым описанием с++?

    AxisPod
    @AxisPod
    Ээээ, простое и подробное? Одновременно? Вы уверены? Это книга в стиле: "Строим термоядерный реактор дома за 2 дня"?
    Ответ написан
    1 комментарий
  • Какая хорошая книга для начинающего программиста на С/C++ с уклном в сети?

    TrueBers
    @TrueBers
    Гуглю за еду
    Сети — это сети. А C++ — это C++. Не бывает такого, чтобы была книга сразу по двум громадным направлениям.

    Сначала учите C++, а потом сети.
    К тому же, под C++ нет сетевых API. Они все всё равно написаны изначально на чистом Cи и никак не пересекаются.

    Изучив понятие сетей, можно писать на любом языке.
    Ответ написан
    9 комментариев
  • Хочу стать программистом. Какой факультет выбрать(Санкт-Петербург)?

    TrueBers
    @TrueBers
    Гуглю за еду
    Знаю пару отличных факультетов:

    Вот оф сайт главного https://www.google.ru
    Ещё есть у них филиал — https://stackoverflow.com/

    Бесплатно и без СМС!
    Ответ написан
    2 комментария
  • Opengl 4.* или vulkan?

    TrueBers
    @TrueBers
    Гуглю за еду
    Это вообще разные вещи.
    Нужно отличать изучение API, от изучения технологии. Если вы хотите выучить просто API, учите что угодно, ибо разницу заметите только, когда поймёте основы, базу.

    OpenGL проектировался когда были другие архитектуры железа. Мультипроцессорность была только в теории, и считалась уделом суперкомпьютеров и ненужной для пользовательских ПК.
    Можно привести аналогию: OpenGL == C++, Vulkan == асинхронный Assembler + hardware threads. Например, в C++ сейчас довольно много архитектурных косяков, которые пытаются решить новыми стандартами, объявляют какие вещи устаревшими, потому что они концептуально неверны и не подходят под современные реалии.
    Но, при этом, вы можете всё то же самое написать на ассемблере, но нужно намного лучше понимать, как работает процессор и ОС, самому писать примитивы синхронизации, и т. п.

    Для этих же целей и создавался вулкан. Для программирования на нём, нужно знать все тонкости железки, читать кучи пейперов от той же НВидии, исследовать, придумывать новые фичи для современных архитектур с нуля, которые изначально были придуманы в OpenGL, но для старого железа.
    Т. е. на Вулкане нужно делать больше руками, больше оптимизировать. Вместо одного вызова функции OpenGL, на вулкане придётся несколько сотен строк написать. При этом, если вы не понимаете какой-то одной тонкости, вы сделаете менее эффективнее то, что изначально было хорошо реализовано в OpenGL. К тому же, OpenGL умеет выбрасывать ошибки, в случае, когда вы где-то накосячили. Вулкан же их не выбрасывает, он полагается на то, что вы уже знаете как этим пользоваться. Точно так же, как ассемблер просто меняет состояние регистров, у него нет понятия ошибки. Как интерпретировать эти регистры, зависит от того, насколько хорошо разработчик читал мануал к процессору.

    В итоге, я бы ответил так:

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

    Если же вы пишете простые прикладные вещи, которым нужно показать какую-то графику, то учите OpenGL. Здесь вы учите только API, соглашаясь с уже готовым, слегка устаревшим, архитектурным дизайном.

    Если хотите писать игры не мирового класса, то учите готовые движки, Unity или Unreal. Они уже поддерживают за вас Vulkan, продумали за вас API и архитектуру.
    Ответ написан
    2 комментария
  • Opengl 4.* или vulkan?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Конечно OpenGL, его поддерживают все. А какие устройства поддерживают Вулкан? Да, потенциально те, которые поддерживают OpenGL 4.x и выше, но на практике нужны дрова для них, и когда они появятся - большой вопрос.
    Ответ написан
    1 комментарий