• Что если читать и переводить код как ин яз?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Тут не совсем уместное сравнение, как мне кажется. Чтение программы очень похоже на чтение мат. модели, которая описана какими-то формулами. Программа -- это же по сути формализация алгоритма или модели на ЯП.

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

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

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Самый простой способ -- это поместить все библиотеки в директорию с исполняемым файлом.
    Можно ещё статически всё слинковать в один исполняемый файл, но для начинающих это сложнее.
    Ответ написан
    Комментировать
  • Почему массив изменяется?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Операторы + и - принимают объекты по значению, а не по ссылке. Вероятно проблема в этом.
    Ответ написан
    4 комментария
  • Как визуализировать ребро графа QT?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Написать отрисовку стрелки самому: https://doc.qt.io/qt-5/qtwidgets-graphicsview-diag...
    Тут весь пример: https://doc.qt.io/qt-5/qtwidgets-graphicsview-diag...
    Ответ написан
    Комментировать
  • Какие требования для джуна на с++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Заходите на сайты с вакансиями, например hh.ru и смотрите по требованиям. Можете ещё хабр почитать, там есть статьи, которые описывают опыт трудоустройства именно джунов на C++.

    Стоит отметить, что начинающий программист -- это не новичок. Это специалист с опытом работы от года и/или релевантным опытом в разработке ПО, полученном, допустим в разработке своих проектов или проектов с открытым исходным кодом.

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

    А так, можете написать что-то уровня fizzbuzz или binary search, понимаете O(n), знаете, что такое size и capacity у std::vector и зачем это надо, слышали про cache line краем уха, понимаете чем отличаются map и unordered_map, у вас есть парочка своих проектов на гитхабе и вы немного использовали ООП (кстати, ООП -- это не только про классы)... Смело можете пробовать. По крайней мере, я бы с большой вероятностью принял бы на работу такого джуна.
    Ответ написан
    3 комментария
  • Для чего все-таки нужны интерфейсы?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    На самом деле, всё довольно просто: интерфейсы нужны для декомпозиции модели и облегчения разработки ПО. По факту, интерфейс описывает набор операций, который можно совершить над объектом. Если вы пишите какую-то функциональность, то она допустим работает только с теми объектами, над которыми можно совершать определённые действия, а что это за объекты вас не волнует. Буква "I" из набора принципов SOLID про этом, почитайте.

    Вот допустим я пишу модуль, который должен стучать, по всему тому, что можно постучать. Есть у меня функция "knock(IKnockable o)" ну и соответствующий интерфейс. Клиенты, кому надо воспользоваться этим модулем, реализуют этот интерфейс в своих классах и пользуются. Но мой модуль вообще ничего не знает об клиентах, он просто работает со всем, что реализует определённый протокол взаимодействия (интерфейс). Это ещё и связанность понижает.
    Ответ написан
  • Можно ли устроиться Python Junior Developer'ом в 14 лет?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Как по мне, так "junior developer", звучит немного самонадеянно в данном случае. Ваши навыки довольно сложно оценить удалённо и на основе того, что вы написали; но всё-таки, джун -- это от года опыта работы (решения реальных задач) и/или участия в опенсорс проектах и/или наличие равнозначного портфолио.

    Вот сядьте и составьте резюме на начинающего разработчика. Возьмите за образец рекомендации от google и их примеры резюме. Там должна быть секция с решенными проблемами: что вы решали, как, к чему это привело и ваша роль в этом. Потом сопоставьте это с задачами, которые предстоит решать джунам в компаниях (можно на hh.ru найти, например). Возможно это поможет вам трезво оценить свой уровень.

    Про уровни владения git и ssh (к слову, что вы тут имели ввиду -- знания сетевого протокола или что-то ещё?), тоже не ясно. Какие вы задачи решали или умеете решать с этими инструментами?

    Про пайтон тоже самое... Язык -- это всего лишь инструмент, просто средство как, скажем, напильник или молоток. Сам по себе язык не так уж и важен. Что важно, так это куча других фундаментальных вещей, например алгоритмы, структуры данных, системы и сети, проектирование, математическая подготовка и т.п. Помимо этого, просто знание языка -- это слишком низкоуровнево для современной разработки: есть ещё куча всяких фреймворков и прочих инструментов.

    Пункт с ML комментировать не буду :)
    Ответ написан
    Комментировать
  • Как работать с библиотекой CImg C++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Читайте документацию и смотрите примеры.
    Ответ написан
    Комментировать
  • Как правильно закрыть окно?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Как-то так
    #include <QApplication>
    #include <QMessageBox>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
        QMainWindow mainWindow;
    
        auto res = QMessageBox::question(&mainWindow, QMainWindow::tr("Just in case"),
                                         QMainWindow::tr("Are you sure?"));
        if (res == QMessageBox::Yes) {
            mainWindow.show();
            return a.exec();
        } else {
            return -1;
        }
    }

    Смысл в том, что у вас первое окно -- это модальный диалог (наследник QDialog, допустим). У него есть метод exec обычно, который возвращает результат (например согласился пользователь или нет). На основании результата и решайте, что делать дальше: показать окно или выйти из программы.
    Ответ написан
    Комментировать
  • Как работать с usb устройством в JAVA и С++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Ну посмотрите в сторону SDK, который, вероятно, поставляется с устройством (классом устройств), сканером штрих кодов, если я верно понял. По факту это и будет некоторой обёрткой над драйвером.

    Если вам прям в деталях надо, то спецификация USB 2.0 около 600 страниц, можете изучить. Но я бы, на вашем месте, погуглил кроссплатформенные решения для работы с USB девайсами (готовые библиотеки). Там обычно есть примеры, которые помогут разобраться. Ну это если SDK нет.

    Ну а если у вас просто какая-то кастомная железяка, которую надо подключить к сканеру, то надо смотреть, какой софт на этой железяки и как её вообще программировать.
    Ответ написан
    Комментировать
  • Какие направления деятельности есть в С++?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Так зайдите на hh.ru и посмотрите какие направления актуальны. Просто вбивайте в поиск C++ (ну или Qt, если хотите конкретно про Qt узнать) по Мск/Спб. Это ответит на большую часть ваших вопросов.

    Для встраиваемых систем (и automotive HMI) Qt очень популярное решение. А скоро будет ещё популярнее :)

    Возраст вообще не важен. Образование не важно, т.к. ничего не гарантирует. Хорошо, когда есть математический бэкграунд, но и когда его нет, то вполне себе жить можно. Действительно наукоёмких задач и вправду не так много.
    Ответ написан
    Комментировать
  • На сколько сильно отличается образование в ведущих и провинциальных вузах России?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    1) Действительно ли платное образование стоит потраченных на него денег, когда есть бесплатный его, если так можно сказать, аналог? Если программа обучения одинакова, зачем платить больше?

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

    2) Насколько уровень предоставляемого образования отличается между этими двумя условными вузами? Очевидно, вместо этих условностей можно принять другие, суть одна и та же. Не пострадает ли уровень образования?

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

    3) Если с математикой все относительно понятно, она везде одинаковая (или нет..?), что касается прикладной информатики в вузах? Действительно ли уровень образования условного УрФУ или Политеха сильно отстает от ведущих вузов страны?

    Я не знаю про эти конкретные вузы, но я бы рекомендовал вам ехать в Мск/Спб, почему -- написал выше.

    Хорошо, что вы понимаете необходимость образования, но если вас смутило мнение по этому поводу от некоторых людей, то вот тут есть мой ответ, который возможно вам поможет: ВУЗ после 11-го?
    Ответ написан
    Комментировать
  • Как передать параметр в функцию класса родителя в Qt C++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    У вас есть несколько вариантов:
    1) Использовать старый синтаксис соединения и сделать show_add_btn слотом
    2) Использовать qobject_cast в лямбде для преобразования объекта к нужному типу
    3) Использовать static_cast для преобразования в лямбде, если вы уверен, что там именно тот объект
    4) Переработать архитектуру, чтобы касты не были нужны совсем. Например, чтобы слот присоединялся к сигналу какой-нибудь фабрикой или её аналогом. Я голосую за этот вариант.
    Ответ написан
  • Как сохранить копию string?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Вам не надо использовать std::string_view, до тех пор, пока вы не разберётесь, что это такое.
    std::string_view -- это не владеющий объект. Он валиден до тех пор, пока живёт объект, на который он ссылается.

    Вам же нужен вектор просто строк std::string. Ну и функцию поменять на что-то вроде:
    void Translator::Add(std::string first, std::string second) 
    {
        data.push_back(std::move(first));
        // ...
    }

    Можете даже оставить вашу функцию как есть, но вектор должен хранить именно копии строк, т.е. объекты std::string.
    Ответ написан
  • В какой области IT применение знаний - не самое важное?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Вам подойдут R&D подразделения большей части компаний.
    Ответ написан
    2 комментария
  • Можно ли передать в функцию-предикат значение как в лямбду?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Через лямбду много чего удобно оформлять. Просто используйте другое форматирование.
    count_if(begin(v), end(v), [N](int x) { 
       // ...
       // ...
       return x > N; 
    });
    
    // Or
    auto greaterThan = [N](int x) { 
       // ...
       // ...
       return x > N; 
    }
    count_if(begin(v), end(v), greaterThan);


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

    bind в современном C++ использовать не надо.
    Ответ написан
    Комментировать
  • Должен ли я компилировать .cpp для репозитория на GitHub?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Нет, исполняемых файлов в репозитории быть не должно. Они не универсальны, могут иметь странные зависимости, да и сам гитхаб предназначен для исходников.

    Вот, например, тут есть какой-то .gitignore для C++, пользуйтесь: https://github.com/github/gitignore/blob/master/C%...
    Ответ написан
    3 комментария
  • По какому учебнику изучать C++, чтобы работать в современном проекте?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Скотта Мейерса последнюю книгу по C++14 рекомендую.
    Beginning C++17 Ивора Хортона. Не уверен правда, есть ли она на русском.
    Солтер, Клеппер. C++ для профессионалов. Вообще, это отличная книга, которая охватывает не только сам язык, но ещё и многие другие аспекты программирования.
    Ответ написан
    Комментировать
  • Что делать когда я создаю проект в qt и с самого начала вылезают ошибки? Надо ли настраивать IDE?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    По QtCreator есть мануал: https://doc.qt.io/qtcreator/index.html . Рекомендую ознакомиться.

    PS
    ... и да, английский всё равно надо учить.
    Ответ написан
  • C++ что надо учить чтоб уметь создавать оконные програмы?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Тут вариантов не так уж и много на самом деле: Qt. С остальным только играться.
    Ответ написан
    Комментировать