• В какой среде разрабатывают интерфейс для программ на C++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Вообще, для C++ и альтернатив-то вменяемых нет. Только Qt.
    Ответ написан
  • В каком районе Питера больше всего ИТ-компаний (желательно с разработкой на Java)?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Для начала, я бы посоветовал поехать и одному человеку, который будет работать (ну или вдвоём, если случилось чудо, что муж и жена оба программисты), снять квартиру на месяц-два, походить по собеседованиям и посмотреть город. Спрос на программистов в Спб огромный, т.ч. надо быть очень ленивым, чтобы за месяц не найти работу. Можно и удалённо поискать, но если вы уже на месте, то процесс просто быстрее пойдёт.
    Компании есть везде, вопрос в том, где будет та, которая вас устроит. Но этого нельзя сказать, пока вы не нашли её.
    Если снимать квартиру, что наверно лучше делать в любом случае первый год, даже если собираетесь потом покупать (банально посмотреть на город и определиться самостоятельно, чего вы хотите, с людьми на работе поговорить опять же). То рекомендую варианты, до которых 15-20 минут на метро (ну или пешком). Во всех остальных случаях будете стоять в пробках, ну или начинать и заканчивать работу в нестандартное время (что, в принципе, не проблема). Тех людей, которые живут в Спб и тратят по полтора-два часа в день на дорогу до работы, я никогда не понимал.
    Моё мнение по поводу районов. Хорош Приморский район (в целом, но там есть унылые места), Петроградский район и район у метро Чернышевская. Есть и другие хорошие районы, но мне больше всего эти нравятся. Ни в коем случае не покупайте и не снимайте квартиру в некоторых гетто-районах Спб, например Девяткино. Можете почитать о них у Варламова. Я жил в Спб, бывал в этих районах, и подтверждаю, что он пишет правду.
    Ответ написан
  • Есть ли где-то статистика по миграции it-специалистов из Петербурга в Москву?

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

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Реализовать функцию типа int,

    Это означает, что функция должна int возвращать? Если да, то зачем?
    Какие параметры передать в функцию, если из функции main я считываю сам массив и число сдвига?

    Так эти параметры и передавайте.
    Можно ещё сделать так, как std::rotate реализована. Но это немного сложнее для новичков.
    Ответ написан
    Комментировать
  • Почему нагревается процессор без какой-либо причины в ноутбуке?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Может быть и майнер :)
    Ответ написан
    Комментировать
  • Какие книги по С++17 посоветуете?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Только документация + стандарт. Вот тут лучше всего: https://en.cppreference.com/w/cpp , даже примеры есть. Ну и смотрите на вики или где угодно, что добавилось в 17ом стандарте.

    PS
    А интеллектуальные указатели добавили в 11 стандарте в стандартную библиотеку.
    Ответ написан
    Комментировать
  • Какие в Москве есть бaдишопы кроме EPAM и Luxoft, перевозящие сотрудников в США по L1B-визе?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    H1B не лучше, а хуже в первую очередь из-за квот и рандома. По L1B нет квот, переезд гарантирован, грин-карту быстро получите.
    Но тут всё не так просто, для начала ответьте на вопросы:
    1) А зачем компании вас вообще перевозить?
    2) А достаточно ли у вас знаний, умений и навыков для вакансии с релокейтом?
    3) Какие условия релокейта вам предложат?
    4) Есть ли у вас $15-20к для сопутствующих расходов?

    Перевозят обычно старших разработчиков. Людей с опытом и определённым набором навыков. Ну или гениев, участников всяких олимпиад по кодингу и международных стажировок, ну или просто дико везучих людей без всего вышеперечисленного :)
    Вы же не думаете, что всех и просто так перевозят, правда?
    Ответ написан
    9 комментариев
  • Математическое образование в IT позволит ли легче устроится на работу?

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

    Дает ли преимущество высшее математическое образование перед другими соискателями в IT сфере, возможно более опытными но без образования.

    И да и нет. Зависит от компании. Если ваше математическое образование способствует, или в перспективе будет способствовать решению бизнес-задач, то на работу скорее всего возьмут вас, а не человека, у которого будет больше формального опыта. Но опять же, все эти знания/умения/навыки можно получить и без формального образования, вопрос во времени и мотивации. Важно, как вы умеете думать и решать задачи. Формальные признаки мало кого волнуют, по факту.

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

    Конкретизируйте и декомпозируйте, плз.
    Ответ написан
    Комментировать
  • Какие отличия между разными версиями компиляторов?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    1) Отличия смотрите в описаниях к релизам. Там всегда пишут, что пофиксили/добавили/убрали.
    2) Для кроссплатформенности, компилируйте с флагами -pedantic -Wall -Wextra (у студии должны быть подобные флаги).
    3) Чем новее компилятор, тем лучше: больше оптимизаций, багфиксов (да, и новые баги), поддержка фич из новых стандартов C++ и т.п.
    4) Да, достаточно понимать как разрабатывать ПО и уметь и это делать. Язык -- всего лишь инструмент, но на эффективность разработки он влияет. Т.ч. мастерски владеть инструментом тоже необходимо.
    Ответ написан
    Комментировать
  • Правда ли, что с более сложными языками, типа Python, С++ и тд. гораздо сложнее найти работу джуниору?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    1) Найти работу в самом начале пути сложно всегда. Это не сильно зависит от выбранной технологии (разумеется, всякие экзотические варианты вроде Junior Haskell Developer мы не рассматриваем). К тому же, считается, что начинающий разработчик уже что-то умеет. Попробуйте рассмотреть вариант со стажировками и курсами от компаний, с последующими стажировками. Такие предложения обычно есть.
    2) Я не уверен, что после курсов вы (и все те 3млн, людей, которые якобы прошли курсы) станете хотя бы начинающим разработчиком. Это конечно возможно, но придётся очень много работать самостоятельно. Ещё раз, очень и очень много. Скорее всего, на срок около года вообще придётся забыть обо всём остальном, кроме учёбы и практики.
    3) Разумеется, если город не СПб/Мск, то всё сильно хуже, банально потому, что меньше людей, меньше компаний и меньше вакансий.
    Ответ написан
    3 комментария
  • Какой вуз и специальность выбрать для Web разработчика в Питере?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Если вам просто для корочки, то выбирайте любой технический вуз, чем проще, тем лучше. Разумеется с заочкой. Выбирайте любую специальность, где фигурируют слова, связанные с прораммированием. Появляйтесь там два раза в год и через несколько лет получите свою корочку.

    Я не особо понимаю смысл этого, но если уж вы решили, что это необходимо...
    Ответ написан
  • Как скопилить кросс дистрибутивний нативный node.js модуль?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Два варианта:
    1) Линковать с флагом -static-libstdc++. В этом случае статическая версия либы будет влинкована в исполняемый файл. Все остальные зависимости можно тоже линковать статически. Что обычно и делают для плагинов. В общем и целом, это очень хороший вариант.
    2) Поставлять нужную версию либы с приложением, и линковать с '-Wl,-rpath,$ORIGIN/relative_path_to_lib_dir'. Тоже самое для остальных зависимостей.

    Первый вариант может не сработать по некоторым причинам (скорее всего, вас это не коснётся):
    1) Если не известно, с какими флагами хост-приложение выполняет dlopen на ваш плагин. Это можно обойти введением ещё одной прослойки без лишних зависимостей, которая будет правильно выполнять dlopen.
    2) Лицензии. Что-то может быть нельзя линковать статически, или можно, но с невыгодными для вас условиями.

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

    Добро пожаловать в мир C++ :)

    PS
    Попробуйте написать ваш плагин на Rust, например. Жизнь скорее всего станет легче.
    Ответ написан
    Комментировать
  • Как удалить Qt Creater который был установлен через ран?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Зависит от того, куда вы его установили. По умолчанию это что-то вроде ~/qtcreator*
    Ответ написан
    Комментировать
  • Почему программа ломается при освобождении памяти?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Для начала, я бы убрал явное использование new/delete. Это всё-таки C++. У вас есть класс std::string, его и используйте везде (например при возврате значений). Этот класс предоставляет метод reserve, чтобы выделить необходимое количество памяти. У него есть метод data, если необходимо передать в C API char*.

    Вполне возможно, что у вас не крэш, а программа просто висит на send/post, ожидая ответа. Это тоже стоит проверить.
    Ответ написан
    Комментировать
  • Как правильно ходить на собеседования?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Лично я не вижу в этом ничего плохого. Ходите, тренируйтесь, общайтесь с людьми. Отказаться от предложения по любым личным причинам -- это нормально. Вам даже не обязательно эти причины сообщать.
    Например, я, когда последний раз проходил собеседования, отказался от одного из предложений просто потому, что в итоге понял, что мне не нравится страна, в которой предстоит работать. Это была крупная компания, которая предлагала отличную зарплату. Я прошёл пять собеседований (причём и тестовое задание на дом), включая онсайт. Когда я сообщил о своём решении, ребята сказали "окей, не проблема, пишите нам, если передумаете".
    Ответ написан
    Комментировать
  • Качество работы штатного программиста. Как оценивать?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    1) Разработчик должен покрывать свой код тестами. Хотя бы юнит-тестами. Это настолько очевидно, что даже не подлежит обсуждению. Такой подход экономит тонны денег и человеко-часов.
    2) Всё тесты интегрированы в CI и запускаются на каждый пуш.
    3) Интеграционные тесты тоже надо писать.
    4) Возможно стоит нанять отдельного человека для написания системных тестов.

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

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    [test.cpp:3]: (warning, inconclusive) Member variable 'TLibrary::hModule' is not initialized in the constructor.

    В C++ всё (почти) необходимо явно инициализировать, а то потом можно получить очень интересные проблемы. В конструкторе необходимо инициализировать все поля класса в порядке объявления. Начиная с C++11 можно инициализировать по умолчанию через равно в момент объявления.

    [test.cpp:6]: (style) Class 'TLibrary' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided.

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

    (warning) The class 'TLibrary' has 'copy constructor' but lack of 'operator='.

    Золотое правило: сами реализовали деструктор, конструктор копии, оператор копирования, конструктор перемещения или оператор перемещения, задумайтесь о том, что вам возможно надо реализовать все пять методов.
    Ответ написан
  • Почему не работает new c++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    В классе User не реализован метод:
    virtual int compare(Comparator *t)=0;
    C++ поддерживает ковариантность типов возвращаемых значений, но не ковариантность (контрвариантность) аргументов функций, для полиморфных методов.
    Ответ написан
  • Размер массива в C++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Это же C++, а следовательно, у вас должна быть очень хорошая причина, чтобы не использовать std::vector в данном случае.
    Ответ написан
  • Как задать точку останова при большом иcпользовании RAM?

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