В айтишке 0 практически, сам немного начал разбираться с Си и c++. В этом году поступаю на магистратуру по Математическое обеспечение и администрирование информационных систем.
Мне интересно низкоуровневое программирование, хочу заниматься плюсами или го и параллельно учиться в магистратуре, по итогу окончания или в процессе сменить работу на айти.
Знакомые из айти советуют го выбрать и не париться. а за полгода попробовать выйти на собеседование
По C++ много стажировок и вакансии тоже есть, не сказал бы, что он как то обделен возможности трудоустройства.
Если не брать в расчет мои интересы, вы бы посоветовали начать с GO или C++?
В том числе с перспективой, как думаю если за время обучения в маге буду заниматься плюсами и стажировку пройду от того же яндекса допустим, потом смогу любой другой язык быстрее выучить и работу смогу также найти в том же доктор вебе видел джунов по c++ искали
Выбирай rust и c++. Golang потом быстро осилишь. Я бы сейчас сконцентрировался на rust. C++ покажет что такое небезопасный код, утечки памяти и прочие прелести, а код на rust закроет вопросы безопасности.
Мне кажется вы слишком узко смотрите на ИТ, ориентируясь только на язык. Язык это всего лишь инструмент, как лопата, молоток, паяльник и т.д. Упор нужно делать на технологии, методики, алгоритмы и пр.
Сейчас практически все языки очень похожи друг на друга, основное отличие как раз в технологиях, т.е. как реализована многозадачность, асинхронность, особенности реализации ООП и пр. Но даже не это важно.
Важно то, к чему вы будете прикладывать этот инструмент.
С ЯП ситуация примерно такая же как и с обычными языками, сложно выучить первый иностранный язык, последующие уже гораздо легче.
В-первую очередь, я бы предложил задуматься об общем будущем, грубо говоря кем вы хотите стать. Если специалистом в области WEB-технологий, то это один набор языков и технологий, если вам по душе низкоуровневое программирование/встраиваемые системы, то это другие языки и технологии.
PS Когда я поступил в ВУЗ (1994г), то у нас выбор был не велик: С/С++ или Pascal. В нашей группе преподавали С/С++, а в группе на курс старше Pascal. А сейчас, мы со знакомым (он как раз на курс старше) работаем на одном проекте Python+VueJS. И мы ни разу не задавались вопросом надо ли было в 1994 году изучать С++, Pascal или Python.
PPS Единственное понимаешь, что надо было в 2000 купить акции NVidia, в 2006 - Apple, а в 2010 прикупить пару сотен биткоинов. Это я к тому, что "знал бы прикуп - жил бы в Сочи" :)
Мне кажется вы слишком узко смотрите на ИТ, ориентируясь только на язык. Язык это всего лишь инструмент, как лопата, молоток, паяльник и т.д. Упор нужно делать на технологии, методики, алгоритмы и пр.
Тем не менее, с какого-то языка надо начать. Те же алгоритмы и структуры данных изучать не на абстрактных примерах, а в параллели со своим ЯП.
А потом уже придёт и широкое понимание, и переходы на другие ЯП.
Всегда привожу себя в пример: книгу по паттернам проектирования (а-ля банда четырёх) начал читать, будучи джуном. После нескольких страниц закрыл, потому что вообще не понимал, какие они там проблемы решают. Через полтора года это книга зашла мне на ура.
Есть мнение, что одним из первых языков программирования должен быть C, даже не C++ (хотя конечно и он тоже подойдет). С образовательной точки зрения это возможность понимать как все работает на достаточно низком уровне и при этом не лезть в ассемблер (который как раз новичкам противопоказан).
Те кто знают как это работает, смогут работать и легко изучать в принципе любые языки программирования. Потому что в памяти будет стоять как это работает, как тот или иной язык решает проблемы, с которыми сталкиваешься с C/C++... и позволяет не делать тупых ошибок.
p.s. с точки зрения зарабатывания денег не посоветую, рынок IT сломан (или в процессе), особенно в России.
Насчёт ассемблера не соглашусь! Мой путь начинался с ассемблера в 11 классе, и это было очень интересно! До сих пор благодарен за это другу, который мне его посоветовал. Вот как раз после ассемблера любой язык понятен, да и вообще - как программы работают.
ассемблер, путь для особого склада ума или странных ситуаций (условно нечем заняться).
spoiler
мой путь в мир компьютеров начался с БК-шки, кассетного магнитофона и затертого по ошибке бейсика на нем в первые же дни. С компьютером шла тоненькая брошюрка в которой командам процессора было посвящены две странички (табличка 8x8 команд и чуть чуть описание), и что бы понять к примеру как инииализировать видеррежим (комп был текстовым но можно было межстрочный интервал убрать и рисовать символами псевдографики 2x2) я вручную дизассемблировал игру шахматы, или что бы узнать как игра питон голосом говорила - питон откусил себе хвост (в последствии помню писал приложение которое по введенным символам проговаривало слова, собирая заранее надиктованные фонемы, это я сейчас понимаю про это, а тогда все по наитию делал)
До сих пор благодарен проведению что не купили тогда 'цветной' zx спектрум, денег не хватило, возможно, не удали я тогда basic, я может и не полез бы во внутренности...
Не думаю что сейчас такой путь возможен. Информации и готовых инструментов на столько много, что какой либо потребности ковыряться в потрохах не возникнет. Развлечений у детей выше крыши, одни соцсети и алгоритмы рекомендации чего стоят, скука не появится, желание разобраться не возникнет.
насчет понятности, недавно для себя открыл pandas и это без знания питона, так вот там как раз есть конструкции, от которых волосы встают дыбом, хотя как заявляется все это работает, но не так как может показаться программисту пришедшему с Си++ ...
к примеру (из link): names = df['Имя']
работает вроде бы ожидаемо, а вот конструкция вида: hard_workers = df[df['Кофе_чашек_в_день'] > 3]
дичь дичайшая и работает уже совсем по другому, ведь первое что приходит в голову, что это условие (df['Кофе_чашек_в_день'] > 3), а под капотом видимо переопределение оператора сравнения, НО с нестандартным возвращаемым значением...
То, что нравится и интереснее. Если будет не интересно и не будет нравится — на какой-то существенный успех в данной области рассчитывать не стоит. ЯП — это прежде всего инструмент.
Тут надо смотреть что вам ближе и что вам нравится.
Если веб-сервисы и различные серверные приложения, которые упираются в I/O по сети/файлам/БД, то Go.
Если системное программирование, десктопные приложения, игры, то C++, Rust, Zig.
Однозначно Go, по доходам они сейчас в другой лиге (значительно выше c++) разработчиков. Да это все про сеньерские позиции конечно же, но лучше начинать с того что ведет к хорошим деньгам.
У тебя не будет медленной и постепенной карьеры, придет время, ты либо зайдешь в IT либо нет. И когда оно придет, go будет куда более привлекательным активом.
какой хороший комментарий для работодателя, ни в коем случае не выбирать go, так как это ведет к повышению накладных расходов на разработчиков.
p.s. я читал комментарий на эту тему, что те компании, выбравшие go в качестве языка для своего проекта, попадают в ловушку, предложений от go специалистов сильно ниже чем у той же java, но сменить язык не могут, вот и маются.
C++ - если по фану или хочется именно в программирование
Go - если хочется денег. Go более моднявый, но я уверен - пройдет время, Go забудут, а C так и останется :)
Преподаватель ИТ-дисциплин в вузе; программист С++
Никого не слушай, гляди сюда.
1. Язык Go - значительно проще С++, поэтому для новичка гораздо доступнее
2. Язык Go разрабатывался Кеном Томпсоном, который и язык Си тоже... Поэтому предусмотрена связка Go+Си
3. Можно одновременно и параллельно изучать Go и Си - будут более понятны основные понятия программирования, которые практически не зависят от синтаксиса.
4. Одновременное изучение - писать одни и те же задачи на двух языках. Очень полезное занятие.
5. Стандартная библиотека Go значительно шире, чем стандартная библиотека Си - это тоже надо изучать.
6. Встроенные структуры данных в Go более продвинутые, чем в Си. Структуры данных тоже надо изучать обязательно.
7. Параллельное программирование встроено в Go (и нет в Си) - тоже надо изучать обязательно.
8. Простой вариант ООП есть в Go и нет в Си.
Но после Си проще освоить С++ как продолжение.
Чтоб ты меньше сомневался в моих советах:
- я в ит уже овер 50 лет
- я обучаю программированию (в том числе и на С++) уже овер 30 лет
- написал книжки по С++ - ищи по фамилии Лаптев ВВ.
Спасибо за развернутый ответ! Как вы считаете изучать лучше самостоятельно по литературе подкрепляя практикой, или с ментором заниматься? Я думаю поступить на магистратуру или с ментором заниматься, с одной стороны в айти всегда самому надо обучаться постоянно и вроде как самообучение ценнее будет при таком обилии информации
Плюсы - язык сложный. Go, напротив разрабатывался как язык с низким порогом для входа. Соответственно временные затраты на плюсы будут несопоставимы с затратами на изучение Go.