Обучение

Сообщение об ошибке

Обучение

Сообщение об ошибке

«Код С++ можно запустить на любом «утюге и чайнике»

17 января 2022

Простые юзеры могут не подозревать, как много всего из мира информационных технологий существует благодаря языку C++ : GPS карты; любимые игры, такие как Counter-Strike, World of Warcraft и Ведьмак; Яндекс поиск и поисковой движок Google; голосовой помощник Алиса и даже космическая техника компании Илона Маска SpaceX.

Если бы в начале 1980-х годов датский программист Бьерн Страуструп не придумал С++, возможно, мы бы не сыграли в PlayStation, не мечтали о собственном беспилотном автомобиле и не узнали бы, есть ли жизнь на Марсе (знаменитые марсоходы NASA используют софт, написанный на С++).

Несмотря на это, на рынке труда наблюдается дефицит разработчиков с хорошими знаниями в области С++. Почему так происходит? За что любят этот язык и из-за чего обходят стороной?

Об этом и не только поговорили с Андреем Марцинкевичем, Experienced C++ Engine Developer в Dragon's Lake Entertainment и тренером курса «Профессиональная разработка игр на С++» в IT-Academy.



– Андрей, почему Вы выбрали язык С++?

– Я все время хотел делать игры. В игровой индустрии принято использовать С++, потому что он считается самым эффективным и быстрым, позволяет максимально выжимать ресурсы.

– А как же C# на игровом движке Unity?

– «Плюсы» – это скорость. Сам движок Unity написан на С++, так как ему нужна максимальная производительность. В игровой логике да, используется С#. Хотя придумали технологию IL2СPP, которая конвертирует C# в С++. Если так делают, это уже говорит о том, что С++ быстрее. Ведь даже конвертация дает какой-то прирост.

– То есть можно работать с Unity и на плюсах?

– Да, я сам так делал. Но я больше работал с самим движком. Мы тогда писали плагины под Unity. Кстати, Java тоже написана на С++. Можно на С++ работать и с машиной Java.

– В каких сферах, кроме GаmeDev, можно развиваться, зная С++?

– Он применяется почти везде, где нужна высокая скорость, выжимка максимума из железа: военная промышленность, медицина, моделирование и т.д. Сейчас даже некоторые встраиваемые операционные системы переходят с языка С на С++.  Ядро macOS частично написано на С++.

Часто его используют в вебе: создание браузеров, 3D-пакетов. С++ – очень разнообразный язык. Он применяется там, где нужна высокая скорость, хорошая надежность и где скорость и качество важнее времени, потраченного на разработку.

– Если сравнить с разработкой веб-приложений на Python, то С++ намного быстрее?

– С++ быстрее Python в 20-30 раз и Java – в 2-8 раз.

– Какие плюсы есть у С++, кроме высокой производительности и скорости?

– У С++ есть хорошая кроссплатформенность. Сейчас он поддерживает максимальное количество платформ. Код С++ можно запустить на любом «утюге и чайнике». Говорят, что Java тоже, но она написана на С++. То есть Java не запустишь там, где нельзя запустить С++.

С++ близок к низкоуровневому программированию, но в то же время достаточно высокоуровневый, если сравнить с языком С, на котором очень сложно писать.

Еще один плюс – в идеологии языка. Она звучит так: не платить за то, что ты не используешь. То есть твоя программа должна выполнять только полезную работу.

Также есть огромное количество готовых библиотек, которые написаны на С++.  Они помогают быстрее решить задачу и упрощают жизнь разработчику.

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

– А почему низкая конкуренция?

– С++ считается одним из самых сложных языков, и мало кто его изучает. Сложнее только Rust и Assembler. Сейчас в комитете по С++ стараются его даже упростить и снизить порог входа для новичков. С каждой версией С++ им это удается. Но все равно порог входа высокий. Многим на начальном этапе изучения может показаться, что у них ничего не получается. И это долгий этап, который нужно просто пережить и верить в себя. В какой-то момент всё пройдет, и начнется понимание. Это будет очень долгий подъем на гору, но он стоит того.


– Но новичок все равно может начать с изучения С++?

– Да, я начинал с С++, практически не зная ничего больше. Надо просто идти шаг за шагом. Потом открываются очень хорошие перспективы, учитывая, что С++ используется почти во всех сферах и конкуренции здесь мало.

– А какие сферы самые перспективные?

– Смотря в каком плане. Если интересует финансовая сторона, то это банковская сфера и машинное обучение. Сам занимался тем, что код с Python переписывал на С++.

– Но говорят, что в машинном обучении лидирует Python…

– Для прототипов, для стартапов – Python. Но не когда нужно, чтобы это реально быстро работало. Ты же не хочешь на вопрос «Алиса, какая сейчас температура?» получить ответ только на следующий день. Хочется, чтобы «Алиса» быстро обработала голос, отправила желательно на сервер, локально все обработала на процессоре, запросила данные. С этим Python так быстро не справится. Здесь нужен С++.

– С++ изучают в университетах Беларуси?

– Не уверен насчет БГУ, но в БГУИРе да. Хотя там изучают не совсем С++, а С с классами. Это такая версия С еще до выхода С++98. Официально С++ стандартизировался только в 1998 году. До этого там была неразбериха, которую обычно преподают в университетах. И главное, там не дают представления о самой философии этого языка, из-за чего люди не понимают, как писать на С++, и приходят на курсы, чтобы разобраться.

– Что лучше – курсы или самостоятельное обучение?

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

– А какой бэкграунд должен быть у человека, чтобы прийти на курс по С++?

– Я веду курс по разработке игр. Он предполагает хотя бы поверхностное знание С++. Курс сложный. Там за 3 месяца нужно освоить достаточно непростой материал. Поэтому идти туда «нулевым» я точно не советую. Нужно быть подготовленным: уметь писать простые программы на С++, понимать, что такое CMake, владеть какими-то базовыми принципами. Кстати, в группе есть студенты, которые пришли после курса по C++ в академии.

– Андрей, как Вы получили свой первый оффер?

– У меня были свои проекты, которые я показывал на интервью. Предложение о работе я получил достаточно быстро. Получилось так, что я согласился на оффер в компании, где проходил своё первое собеседование.

Когда я собеседовал людей, много кого брал на работу и без коммерческого опыта. Проблема в том, что если вообще нет опыта, то такого человека брать в компанию страшно. Опыт может быть любой. Пусть это будет какой-то свой домашний проект, но он должен быть. Практика нужна в любом случае. К слову, есть куча проектов в интернете. Есть студии, где ребятам нужны руки. Ты даёшь им свою помощь, а они тебе – опыт. Можно и в Open source много чего делать.


На нашем курсе по С++ ты сделаешь свой первый проект, который сможешь показать потенциальному работодателю и получить первый оффер.

А если уже разбираешься в «плюсах» и любишь GameDev, советуем присмотреться к курсу по разработке игр на С++.


Полная, частичная перепечатка или любое иное использование материалов с сайта IT-Academy разрешается только с указанием активной гиперссылки, ведущей на первоисточник (точный адрес страницы на www.it-academy.by).