Ответы пользователя по тегу C++
  • Какие ЯП не требуют кучу прикладнухи для устройства на работу?

    barmaley_exe
    @barmaley_exe
    Никакие.

    Один лишь ЯП в вакууме с точки зрения применения в конечном продукте абсолютно бесполезен. Ибо, как правило, программный продукт существует не обособленно, а, так или иначе, взаимодействует с другими программами (операционной системой, например). Более того, зачастую разумно не изобретать велосипед, а воспользоваться уже готовым решением, которое было проверено временем. Таким образом, приходится знакомиться с кучей уже существующих технологий.

    Вообще, в области server / desktop / mobile очень сложно уйти далеко без, как минимум, следующего:
    • Объектно-ориентированное программирование и проектирование — ведь код не должен быть говном
    • Параллельное программирование — ведь делать нужно много и быстро, а у нас уже 10 лет как многоядерные машины есть
    • Сети — ведь нельзя жить без интернета
    • Базы данных — ведь данные надо где-то хранить, и хранить надёжно


    hardware не комментирую, но там ещё хардкорнее.

    Собственно, для программиста не столько важно знать какой-либо конкретный ЯП, а важно владеть технологиями разработки. ЯП, конечно, входит в это множество, но им оно совсем не ограничивается.
    Ответ написан
    3 комментария
  • Каков необходимый минимум знаний для junior'а/стажера (с++) и где найти работу студенту?

    barmaley_exe
    @barmaley_exe
    EMC интересуется программистами с мат-меха. И позиции C++ стажёров у них бывают.

    Знать надо алгоритмы
    • Структуры данных: сбалансированные (и не только) деревья, хеш-таблицы, очереди с приоритетами и без, списки. Знать, конечно, не в теории, а уметь работать с ними
    • Графы: как минимум обходы в ширину и глубину. А так — поиск путей, минимальные остовные деревья,
    • Сортировки: quicksort, heapsort, mergesort, а так же какие-нибудь линейные вроде сортировки подсчётом и цифровой сортировки
    • Чем больше — тем лучше


    Для всех алгоритмов нужно знать и уметь обосновать их сложность (как по времени, так и по памяти) в терминах O-большого.

    C++, разумеется, предполагается знать прилично:
    • владение стандартной библиотекой (не будете же Вы raw pointer'ы в продуктовом коде использовать)
    • ООП
    • шаблонами
    • идиомами (RAII, pimpl, etc) в довесок к паттернам проектирования
    • Плюсом будет опыт работы с boost'ом.

    Помимо этого надо иметь представление о сетях и многопоточном программировании, а ещё уметь организовать процесс разработки, т.е. пользоваться системой контроля версий (SVN, GIT, Mercurial), инструментами для сборки (make / cmake / etc), отладчиками (gdb, lldb, например) и другими полезными тулами (valgrind, gprof, gconv, например), но это уже менее критично. Вообще, знакомство с Linux'ом и экосистемой разработки в нём будет плюсом.

    Ну и раньше третьего курса, как уже сказали, работать не рекомендуется.

    А ещё можно податься в Яндекс, Oracle (у них не только Java, но бывает и C++, не знаю, есть ли соответствующие позиции для студентов) и Intel (насколько я знаю, на текущий момент в Питере позиций нет, только в Нижнем и Москве). Гугл, как известно, из России уехал, а JetBrains, кажется, в C++ разработчиках не нуждается.
    Есть ещё куча других компаний поменьше, но их Вы найдёте сами.

    Ну и почитайте другие материалы на эту тему: [1], [2]

    P.S. Оценки в зачётке никого не волнуют. Если Вы только не собираетесь поступать в Computer Science Center, например. Или магистратуру СПбАУ.
    Ответ написан
    3 комментария
  • Тяжело ли устроиться на работу c++ разработчиком?

    barmaley_exe
    @barmaley_exe
    По своему опыту скажу, что в Москве и Питере если умеете программировать (т.е. знаете алгоритмы, сети, многопоточность, основы архитектуры, объектноориентированный дизайн и разбираетесь в каком-нибудь нормальном ОО языке), то без работы не останетесь. Даже студентов разбирают как горячие пирожки.
    Ответ написан
    Комментировать
  • Как организовать динамический символьный массив в с++?

    barmaley_exe
    @barmaley_exe
    В общем случае нельзя предугадать, сколько элементов будет в массиве (можно оценить это значение сверху, но может быть крайне неэкономно), поэтому используется концепция расширяющихся массивов: имеется предвыделенный массив заданного размера, который заполняется по мере работы программы. Как только массив заполнен и места больше нет, а нужно вставить ешё один элемент, создается новый массив большей ёмкости, туда копируется содержимое старого, а элемент вставляется в новый массив. Старый после этого удаляется.

    Так реализован std::vector, например.
    Ответ написан
    Комментировать
  • Вопрос во выбору ВУЗа для будущего программиста

    barmaley_exe
    @barmaley_exe
    Я разделяю мнение NiceForce в плане схемы «сперва попробовать». IT бурно развивается, ВУЗ даст лишь фундамент, всё остальное придётся осваивать самому. К тому же, имея некоторую базу (пусть и весьма посредственную), я уверен, учиться будет проще. Если Вы не собираетесь совсем уходить в программирование, то лучше заняться самообразованием (благо, всевозможные онлайн курсы и обучающие ресурсы значительно облегчают задачу).

    Если же Вы решили стать настоящим программистом, то я бы посоветовал СПбАУ. Отзывы о нём можно найти на хабре. Одним из плюсов (особенно в Вашей ситуации) является то, что предлагают они магистерскую программу. Т.е. вы потратите как минимум 2 раза меньше времени, получив весьма достойное образование. Традиционные схемы 4+-летней продолжительности мне кажутся избыточными и бесполезными в Вашем случае, поскольку дают часть общих (и посему бесполезных, вроде историй, культурологий и обж), часть весьма устарелых знаний. При некоторых ВУЗах есть «факультеты переподготовки специалистов», где, казалось бы, за те же год с небольшим расскажут всё нужное. Но про такие я ничего путного сказать не могу, «историй успеха» не слышал.

    С более детальной информацией о поступлении в АУ можно ознакомиться здесь. Обратите внимание на «Список вопросов для экзамена». Там указаны как темы, так и книги, в которых эти темы описаны. Если вдруг обнаружите, что многого не знаете — не пугайтесь, это не так страшно. Ну Вы же хотите знаний :-)
    Ответ написан
    Комментировать
  • Что не так с реализацией алгоритма Хаффмана?

    barmaley_exe
    @barmaley_exe
    Для последнего байта нужно знать количество значащих бит. Ведь разные символы, сжатые по Хаффману, имеют различную битовую длину, а писать можно только байты.
    Может быть, этот случай Вами уже учтён, но при поверхностном взгляде я этого не увидел.
    Ответ написан
    Комментировать
  • Шаблоны в cpp, что и как?

    barmaley_exe
    @barmaley_exe
    И что же компилятор должен скомпилировать из cpp файла? Какой объектный файл получится?
    Реализацию шаблонных методов / функций нельзя выносить в отдельный translation unit, следуйте совету Chaos_Optima
    Ответ написан
    2 комментария
  • C++ список ссылок на функции, возвращающие новые экземпляры разнотипных классов?

    barmaley_exe
    @barmaley_exe
    Какую ошибку?
    createInstance возвращает указатель, а Вы берёте его адрес и записываете в handlers. Вы собираетесь вызывать указатель?
    Ответ написан
    5 комментариев
  • CPP вставки в PHP-скрипты

    barmaley_exe
    @barmaley_exe
    Возможно, они имели в виду написание собственных модулей?
    Ответ написан
    1 комментарий