Как стать автором
Обновить

Комментарии 145

Неужели вот так можно найти работу со знанием С++? Мне кажется сейчас 99% вакансий касается веб и мобильной разработки.
ПС: С++ использую как хобби или помощь в основной работе.
Много старого кода, много кода, который должен работать со старым кодом. Есть высоконагруженные приложения, где Java/Шарп не вытягивает. Есть микроконтроллеры, где без C/C++ никуда. В общем вакансии есть, но конечно веб-девом сейчас проще устроиться
Ещё геймдев плотно сидит на C/C++, разработка системного ПО тоже. Это совсем не обязательно «легаси», просто Rust ещё не завоевал достаточно доверия, а других нормальных конкурентов в нише где правит C/C++ особо и не было. Хотя, у нас в компании сейчас потихонечку растёт небольшая ячейка любителей Rust, может быть со временем в чём-то и станем использовать.
C++ единственный в своей нише. Расту еще расти и расти.
Позвольте поинтересоваться, куда ему расти?
Во первых в сторону оптимизации ассемблерного выхлопа. Сейчас он уступает плюсам, генерирует больше ненужного кода. Самые яркие примеры на мой взгляд были вот в этом выступлении youtu.be/E9-scyUdmeI?t=1015 Антона Полухина.
Во вторых нужно больше библиотек, развитая экосистема. Но боюсь к тому моменту когда все это появится, мы успеем увидеть C++30 :)

То есть вы сейчас предлагаете искать эти самые примеры кода в полуторачасовом видео?

Сейчас он уступает плюсам, генерирует больше ненужного кода

Тут бы хорошо приводить бенчмарки, и понимать почему он так делает. Этот доклад в чате по расту уже хорошо обсасывали, особенно забавно было про интероп слушать.

Кроме того вы не учитываете что в Rust вы гораздо чаще можете пользоваться zero-cost ссылками без всяких умных указателей, где в C++ вы для подстраховки будете лишний раз клонировать/работать с указателями. А это зачастую может сжирать больше производительности чем эффективный ассемблерный выхлоп (потому что надо лезть в хип, там где в принципе можно было бы этого не делать).

Во вторых нужно больше библиотек, развитая экосистема

А каких конкретно вам библиотек не хватает? опять же, голое любопытство.
Результаты действительно обсасывали, да только вот в конце обсуждения пришли к тому что они воспроизводятся, и возражений не осталось (да, я тоже сижу в чате по расту).
Вот ссылка на первый пример godbolt.org/z/ZfP28b (из чата по расту)
Лично мне не хватает — GUI и нормального порта Lucene с документацией.
GUI

Ждём iced.

да только вот в конце обсуждения пришли к тому что они воспроизводятся, и > возражений не осталось

А можно расшифровать вашу фразу, что значит возражения не осталось?
Вот этот C++ код на Rust, выдает тот же ассебмлер что и C++:


https://rust.godbolt.org/z/Ze7HDG


Один в один, в чем вообще может быть различие между clang и rustc в таких же простых примерах, llvm и там и там, а все оптимизации в llvm

https://youtu.be/E9-scyUdmeI?t=1672 внутренний ABI раста не стабилен. Кроме того для загружаемых библиотек всё равно используют C-ABI. Так что сломается только у тех, кто ССБЗ, а то что говорит этот диктор — заблуждение. Кроме того говорить о производительности без бенчей бессмыслено.


unsafe {} — нет безопасности

unsafe — это инструмент для ручного доказательства безопасности, а так же маркер для кода, которому требуется повышенное внимание. Понимание диктора прямо противоположно сути.


про UB

int i = 123;
printf("%d %d\n", i++, i++);

Сколько будет?


нельзя использовать сишные хедеры

Можно. Можно даже полностью всю сишную библиотеку сконвертировать и отрефракторить. И то и другое автоматически.


проблемы с обновлением сишных зависимостей

А в C++ уже завезли стандартный менеджер пакетов?




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

Самые яркие примеры на мой взгляд были вот в этом выступлении <...> Антона Полухина.

Это те самые, которые потом никому не удавалось воспроизвести?

Полухин на всем этом видео создает впечатление ангажированного человека. Да и в комментах там писали как сделать чтобы Rust работал столь же быстро как плюсы.
К тому же часто эти 5-10 процентов не так в важны как уверенность в безопасности.

Э… Очень странный комментарий. У компилятора clang и компилятора rust один и тот же бекенд — llvm. Как можно уступать используя одинаковые оптимизации?

НЛО прилетело и опубликовало эту надпись здесь
Ну, например, фронтенд компилятора не всегда может убрать весь оверхед?
Так-то и у хаскеля есть llvm'ный бекенд.

А зачем фронтенду вообще оверхед убирать? У него цель перевести язык "X" в llvm ir, а все оптимизации уже применяются llvm. И в отличии от хаскеля, я не вижу причин генерировать хуже llvm ir для Rust по сравнению с относительно одинаковой программой на C++. Основное отличии Rust от C++ — "borrow checker" вообще никак не влияет на генерируемый код, а все остальные отличия совершенно незначительны.

Gamedev, ну и конечно встроенное ПО, там правда C рулит, но С++ тоже популярен…

вы не правы, много вакансий, действительно много. По 20 в неделю отправлял резюме и каждый раз находил новые. Наш проект сейчас (их 2, второй просто на новую архитектуру переписываем) — это клиент серверное приложение. Фронтэнд — Qt, бэк- php. Задачи у нас решаются программистами все, если надо писать бэк + скрипт + фронт мы это делаем. Мне это очень нравится, тк прокачиваюсь и там и там. К тому же, Qt, как говорят- это джава на плюсах)
Кстати, забыл к статье добавить, необязательно искать открытые вакансии. Когда ходил в море, совсем зеленым, работал в очень приличной конторе. Дак вот, я отправлял аппликашки именно на почту компании. А там уже пускай сами решают- нужен или нет я им.
В дополнение ко всему сказанному в иных комментариях, на С++ много задач по машинному обучению, особенно в CV. А это топовые по уровню зп области.
НЛО прилетело и опубликовало эту надпись здесь
Обязательна ссылка на гитхаб

А в вашем резюме ссылка именно на github.com, а не на ваш профиль
я указал, что скрыл. Что там смотреть? это как в статье недавно здесь читал «чтоб пацанам не стыдно было показать»- вот мне стыдно)

А было бы интересно посмотреть)

так много вопросов в личку про гитхаб. Хорошо, открою гит в резюме.
Скажите, а насколько вы ээээ «понимаете», что происходит, когда ваш код исполняется?
Т.е. вы научились програмировать только (ну назовём это кодерством), или стали понимать, как вообще подойти к задаче, как разбить на части, где и какие алгоритмы использовать? Или если пойти глубже — понимаете ли вы, что происходит ниже уровнем? Т.е. как и во что переводит компилятор ваш код, что делает с ним ОС, как работает процессор?
Мне кажется, что хороший программист (на сях) должен иметь представление о том, что происходит там, внизу. Вплоть до триггеров и конденсатора динамической памяти. Факультативно до допов в полупроводнике :-) Не подробно, но представление иметь.

Вы молодец, освоить плюсы не смолоду — большое и трудное дело, но впереди еще непаханное поле программирования. Удачи в развитии!!!

P.S. можно минусующим в комменте разъяснить — что плохо?
Архитектурные задачи даются не просто- это как еще одна совершенно отдельная дисциплина. Что касается плюсов- всё очень подробно описано в литературе и здесь же в статьях на хабре. С этим проблем нет.
(Я не минусовал, если что, позволю вставить пять копеек в беседу).
Скажите, а насколько вы ээээ «понимаете», что происходит, когда ваш код исполняется?
Тут можно ответно спросить — «А что вы бы посчитали ответом?» Это я к чему — каждый кто что-то программирует считает, что понимает «как вообще подойти к задаче, как разбить на части, где и какие алгоритмы использовать». Что что-то плохо или неоптимально может понять только более опытный/знающий/умный специалист если ему объяснят задачу со всеми нюансами.
нууу, лично я, когда начинал, понимал мало. потом больше. потом поковырял ассемблер. потом читал как работают процессоры. потом смотрел самодельные процики. в институте полупроводники читали. в общем, не досконально, но понимание как оно изнутри устроено и работает — есть. в принципе оно помогает — когда тупить на ровном месте параллельный код начинает — в голове звоночек — а не кеш ли мы трешим. ну и так далее. не скажу что бы такие знания были обязательны, но мне кажется иметь представление — надо. Просто видел программистов железа совсем не знающих.
у меня образование радиоинженер, тоже, кстати, забыл указать в статье, что вообщем-то мне и позволило устроиться в авиацию. То есть, какие-то знания есть по схемотехнике, паять умею, но мне это не помогает никак. А вот то, что я раньше любил в игрушки играть и для этого приходилось гнать процессор, да, знаю где какие кеши. Но оставил ссылку на те уроки, где о работе памяти на низком уровне хорошо объясняют.
Просто видел программистов железа совсем не знающих.
А! Да. Я-то по себе сужу — знание железа у меня правда на уровне вынуть-вставить (в студенческое время собирал компы), но какое-то понимание есть. Ну и главное — интерес к железкам. Как-то попытался обсудить вопросы начинки с одним программистом — и получил от него фразу, что ему совершенно неинтересно, что у него внутри компьютера. Я был э… обескуражен.
Необходимо уточнить, что Ваш вопрос следует рассматривать в контексте целевой платформы и решаемой задачи.
К примеру, совершенно не играет роли «что там сгенерил компилятор», если Вы делаете «высокоуровневое» приложение под десктопное рабочее место современных компьютеров/ноутбуков. Другой вопрос, если Вы занимаетесь написанием системных и/или низкоуровневых программ (драйверов), здесь понимание имеет весомое значение.
И отдельный вопрос, если Вы программируете для встраиваемых платформ или для специализированных миникомпьютеров. Здесь понимание происходящего и глубокое знание платформы имеет решающее значение.
Я в школе (да и на первых курсах университета тоже) думал, что понимаю, что происходит в полупроводнике. А потом был курс по физике твёрдого тела и теперь я хорошо знаю, что даже приблизительно не понимаю, что там происходит в этом чёртовом полупроводнике!!!
Ну так это нормально: пока в школе показывают планетарную модель атома, тоже кажется, что все просто и понятно.
Мне кажется, что хороший программист (на сях) должен иметь представление о том, что происходит там, внизу. Вплоть до триггеров и конденсатора динамической памяти. Факультативно до допов в полупроводнике :-) Не подробно, но представление иметь.

А зачем?
Т.е. я понимаю, что хороший — должен. Но вот если понимание ассемблера и процессов, которые происходят внутри компилятора дают буст к возможностям разработки(хотя бы путем профилирования нескольких разных вариантов, и понимания, почему один быстрее другого, и как сделать еще быстрее), то вот понимание, как работает процессор на уровне кремния… Интересно, безусловно. Но зачем это программисту, если ему неинтересно?
Там, кстати, до кремния еще есть микрокод процессора и его составляющие, и всякие конвейеры и предсказатели ветвлений сейчас гораздо сложнее будут, чем понимание, как работает ячейка памяти.
ну как же это может быть неинтересно? в профессию-то зачем тогда пошел? такая себе игра ума — кликнул по ссылке, браузер перешел куда-то, а ты представляешь, как можно более в деталях, что произошло. и чем детальнее представить сможешь — тем выше ЧСВ :-)

но, на самом деле, я писал тот комментарий до того, как автор сказал, что он радиоинженер.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
хм. но это скорее работа математика, а не программиста, нет? хотя если надо с графами работать, знать что «у каждой р-группы» и (опционально) уметь это доказать — вполне себе.

я собственно к тому, что если человек изучает с/с++, то ему желательно основы под языком знать. Для дата-сайнтистов или писателей web-страничек — возможно и пропустить, у них и так всё сложно :-)
А вы специально игнорируете математическую теорию в работе, например, компилятора, концентрируясь на более прозаических вещах? Так-то там математики, из которой выходят определенные алгоритмы, тоже немало.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Да и я пишу, среди прочего, на плюсах, и математика там полезна сильно чаще, чем понимание триггеров и физики полупроводников.

Это потому, что большинство софта — на прикладном уровне, а не какие-нибудь драйвера под "не имеющие аналогов" архитектуры. Но с небольшой вероятностью можно встретиться с чем-то нестандартным.

А зачем?
вот понимание, как работает процессор на уровне кремния… Интересно, безусловно. Но зачем это программисту, если ему неинтересно?

Затем, что абстракции "текут". Процессор остаётся куском железа кремния, а не виртуальной конструкцией, как его представляет программист или компилятор. Низкоуровневые особенности работы процессора иногда всплывают таким образом, что программа начинает тормозить именно потому, что процессор гоняет электроны (при перегреве throttling включается), хотя, казалось бы, все процессоры гоняют электроны, но вот конкретная конфигурация системы от этого эффекта страдает. Есть разные тонкости в ветлениях, кэшах, архитектурах процессоров, NUMA, что иногда внезапно ломает производительность. И программист, далёкий от этого всего, имеет меньшие шансы найти и исправить (а то и исключить) проблему, чем разбирающийся в этом. В итоге это незнание в некоторых случаях выливается в менее качественный, менее эффективный код, что подразумевает менее эффективное решение прикладных задач пользователя.

Еще раз: зачем обычному программисту, который пишет на чем-нибудь высокоуровневом, уровень кремния? Легко могу понять знания о работа компилятора. Могу понять уровень ОС, могу с горем-пополам понять тонкости кеша. Но приведите мне пример, где знания о том, из каких базовых элементов состоит АЛУ помогает программисту, который пишет на плюсах/пхп/питоне?
Еще раз: зачем

Я ответил на этот вопрос выше.


Но приведите мне пример, где знания о том, из каких базовых элементов состоит АЛУ помогает программисту, который пишет на плюсах/пхп/питоне?

Понятие разрядности процессора (АЛУ) непосредственно вытекает из устройства базовых элементов. Для неопытного программиста на python может быть неочевидно, что время выполнения арифметических операций над числами, не влезающими в "железный" регистр, будет больше. У программиста, знающего устройство сумматора, в таком случае сразу возникнут подозрения.

Я ответил на этот вопрос выше.

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

Понятие разрядности процессора (АЛУ) непосредственно вытекает из устройства базовых элементов. Для неопытного программиста на python может быть неочевидно, что время выполнения арифметических операций над числами, не влезающими в «железный» регистр, будет больше. У программиста, знающего устройство сумматора, в таком случае сразу возникнут подозрения.

Понятие разрядности, конечно, вытекает. Но для осознания понятия разрядности достаточно просто понять, что вот там есть определенный размер памяти в кеше и регистрах, а то, как они там физически сделаны — глубоко пофиг. Это знание не даст ни минусов, ни плюсов, так как гораздо важнее понимать, что если нам надо перемножить два больших числа, нам надо знать, как сказать компилятору, чтобы он использовать специальные инструкции, а не представлять себе электрончики в процессоре. Сумматор лежит слишком далеко от питона, чтобы принимать его во внимание: при завале в производительности вам надо сначала идти читать доку по питону, практики решения ваших задач на питоне (взять numpy, например, а не пытаться умножать огромные числа в интерпретаторе), если не помогло — читать исходники питона, а не думать о устройстве сумматора. Об устройстве сумматора нужно думать, когда вы пишите на ассемблере под какой-нибудь не сильно распространенный процессор с хитрой архитектурой.

вот там есть определенный размер памяти в кеше и регистрах

Собственно, вот мы и закопались в железо.


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

Задайтесь следующим вопросом: с чего вы взяли, что этот размер вообще ограничен в конкретном процессоре? В python'е же размер целых типов не ограничен! Ответ: вы не задаётесь настолько глупым вопросом, т.к. знаете, что такое двоичный разряд, что такое регистр, и что эти разряды и регистры физически вытравлены в процессоре (и вытравлены они потому, что так проще создать кучу транзисторов, из которых делаются все эти вещи...). Минимальное знание схемотехники уберегает вас от предположения, что, например, дополнительные разряды можно скачать из интернета.
То, что вам обычно не нужно знать, где там конкретный электрон лежит — это заслуга слоёв абстракции. В редких случаях эти абстракции работают не очень хорошо, и приходится разбираться, что там на слой-два ниже. Вероятность, что вы от кода на python'е докопаетесь до устройства АЛУ или ниже, весьма низка. Знание, что там происходит на самом низком уровне, может пригодиться лишь в очень редких случаях (т.е. практически никогда). Например, "когда вы пишете под какой-нибудь не сильно распространенный процессор с хитрой архитектурой" даже не на ассемблере, т.к. особенности архитектуры могут пробивать все слои абстракции.

Я даже не знаю, что ответить-то на такую тираду.
Я спрашивал у вас про то, как понимание на уровне кремния помогает писать код, но вы так и не смогли привести ни одного примера, ну и к тому же, перестали спорить со мной, закончив на «Знание, что там происходит на самом низком уровне, может пригодиться лишь в очень редких случаях (т.е. практически никогда)». Ну, ок, рад что мы пришли к общему мнению.
ну здесь-то обсуждается программист, сознательно выбравший С++. не PHP, не MatCAD, не 1С.
Плюсовику кмк желательно знать, что происходит «под капотом». что-бы писать действительно быстрые программы.
а «дескопные приложения» с формами — дешевле и проще и быстрее на чём-нибудь другом налабать. подходящем для UI-строения более.
Плюсовику кмк желательно знать, что происходит «под капотом». что-бы писать действительно быстрые программы.

Под капотом — это компилятор и то, как работает процессор на логическом уровне: что помещается в кеш, какими инструкциями можно оптимизировать, как компилятор эти инструкции выбирает.
Что ему даст понимание того, как защелки в кремнии работают?
side note: как это сочетается с «О себе Любопытен. Ленив. Вреден.» не очень ясно. хотя если качества идут по нарастанию :-)

защелки пригодятся при написании firmware для микропроцессора. там тоже с/с++ используют.
недавно была статья — home-brewed микро эвм с 8-бит RISK-процессором на логике (и поверх эмулировался более сложный 16-бит проц, на котором уже прикладуха работала). сама идея запала в душу, может когда пригодится.

есть предложение заканчивать спор. друг друга мы не убедим, да и желания такого уже нет. Ватсон вон тоже Холмса не смог убедить, что знание структуры солнечной системы полезно…
А я не спорю, что это интересно. Я спорю с "должен". Потому что «интересно» это факультивные знания. Сможешь на собеседовании рассказать и попадешь в точку, будет тебе плюсик. А «должен» это обязательные: приходишь на собеседование, и если не ответил, ну, хреново ты профессию свою знаешь.

Вопрос не совсем к топикстартеру, а может, и совсем не к топикстартеру, но по теме поста — а какие ресурсы вы бы посоветовали для аналогичного изучения Python?

посмотри codewars.com
Выбирайте те на которые больше всего народу записано и только бесплатные.
Обязательна ссылка на гитхаб

Если ссылка просто на сайт гитхаба, как в вашем текущем резюме и статье, то точно не нужна :) Где-нибудь можно на ваш посмотреть? А если серьезно, то не всегда соискатель имеет возможность и желание контрибьютить в сторонние проекты. К тому же помимо github существуют и gitlab, bitbucket и другие хостинги кода.


В остальном — можно приукрашивать, никто не узнает. К примеру, в резюме указано, что ИП я занимался почти 5 лет, но это не правда

А зачем в этом приукрашивать? Это не влияет на решение о найме на позицию разработчика у адекватных работодателей, но может ухудшить впечатление в случае разоблачения.


Не указывайте свои недостатки.

Умеренно допустимо — никто не идеален.


Качественная фотография для портфолио.

Не сказал бы, что это обязательно.


учить С, чтобы потом учить С++ не надо. К тому же, вакансий по С нет. С- deprecated.

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

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

Представьте. 7:45 утра на авиационном заводе (8:00 начало раб. дня), 10 дней после моей свадьбы, я сижу за древним пк и просто листаю яндекс. На выходных уже были мысли типа «как дальше двигаться на такой работе?». И тут попадается ссылка на purecodecpp.com, я открываю её и пропадаю часов на 10, в то время на заводе не было заказов и были дни, когда мы просто не были чем-то заняты. Минут через 5 уже был уверен, что нашел именно то, что мне нужно- это мой шанс, выход из ситуации. Через пару недель узнал, что есть и другие языки программирования, но, тк плюсы более сложный, менять направление обучения не стал.

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

Да, в принципе на C++ можно что-то писать без понимания более низкого уровня. Только вот иногда это сильно бьёт по рукам. Вы в любом случае будете время от времени пересекаться с C. В итоге на ровном месте совершаются глупые ошибки, которые C++ не прощает. Самое непрятное — когда код в большинстве случаев работает как задумал программист, и лишь изредка падает или ведёт себя странно.
«Нельзя хорошо понимать C++, не понимая C.»
я бы даже сказал — невозможно не понимать С зная С++. если вы знаете С++, то и на С уже уверенно писать будете, возможно лучше, чем зная только С.
Я сам, кстати, перешёл в коммерческую разработку на C++ относительно недавно, в 2017. До этого зарабатывал веб-разработкой, а низкоуровневое программирование было у меня только эпизодически, как хобби. За время, пока я не занимался вебом (от которого я начал постепенно самоустраняться где-то в 2015) — там вообще всё поменялось. Куча новых модных технологий, если писать по-старому — коллеги засмеют. Только сиди и изучай то вокруг чего сейчас больше всего хайпа, а делом то заниматься когда? Бесконечная гонка. Мир C++ — полная противоположность этому. Всё спокойно, без ежегодных революций. Раз в 3 года выходит новый стандарт, но с его внедрением обычно никто не спешит, только по мере надобности. Но это не застой. Язык всегда развивался неспеша, а в последние годы развитие даже ускорилось. Последний C++20 — это крупнейший апгрейд языка за все годы, который закладывает фундамент для неспешной революции в C++23, где стандартную библиотеку должны оформить в виде модулей, после чего старый подход без модулей, вероятно, начнёт постепенно устаревать. Но это не будет чем-то внезапным, так как очевидно, что текущие огромные проекты будут крайне неспеша переводить на модули.
Слишком категоричное заявление на тему С, складывается такое ощущение, что вы просто не понимаете того, о чем говорите.

Сказать, что огромная куча системного и около-системного ПО написана, пишется, и будет дальше писаться на С — это ничего не сказать. Это весь embedded/dsp/и т.п., весь мир *nix и около него. Он настолько крупный, что я как человек касающийся совсем слегка (DSP, пишу уже 7 лет только на С и ассемблере (Ассемблер наверное тоже никому не нужен) и то вижу, насколько этот мир «Никому не нужного С» огромен. Вакансий тьма-тьмущая, и толковый, грамотный специалист по С всегда сможет найти себе работу.
складывается такое ощущение, что вы просто не понимаете того, о чем говорите.

возможно, так и есть. Мое высказывание по поводу С' было основано исходя из мониторинга вакансий на hh.ru в течении 4 месяцев. Не помню, чтобы мне попадались вакансии по С'.
Там где я сейчас работаю — тоже искали «C++11», с навыками реверс-инжиниринга. «C» просто подразумевался как что-то само собой разумеющееся, раз уж человек заявляет что знает C++. Значительная часть нашего проекта (драйвер) написана на чистом C, а на C++ только юзер-спейс, где мы недавно перешли на C++17 по моей инициативе =)
Вы, кажется, веткой ошиблись. Я как раз и говорил автору поста, что C совсем не deprecated.
Да, комментарий куда нужно уже самому не перенести к сожалению.
НЛО прилетело и опубликовало эту надпись здесь
Ну так он же не пишет для микроконтроллеров/embedded и в прочих областях где традиционно применяется «голый» C. Он и сам пишет, что «For the foreseeable future I think it will retain a pretty firm grip on OS kernels and device firmware. There, the old imperative to squeeze out maximum performance even if it means using an unsafe language still has force.» А там, где достаточно питончика, на голом C писать, естественно, избыточно.
НЛО прилетело и опубликовало эту надпись здесь
Вы как раз про кобол вспомнили, была недавно на хабре публикация о том, что IBM собирается выложить на гитхаб курсы по нему, т.к. возросла необходимость поддержки древних программных систем написанных на нем, и работающих до сих пор. Точно детали публикации не помню, но смысл был в этом. Это я к тому, что не все deprecated оказывается таковым на самом деле.

Нет, это конечно хорошо, что кто-то может отказаться полностью от С, кобола и прочего легаси. Я бы и сам отказался. Но пока этого не происходит. Конкретно я ничего не могу исправить даже в рамках своей отдельной компании, попытки уже были попробовать какие-то части писать на том же Rust'e. Да и как объяснить например, тому же Qualcomm, что надо переходить в своих тулчейнах на Rust (нет конечно, может там где-то и есть, но то с чем работаю я — только С, или ассемблер)? В общем это не быстрый процесс, и лично я считаю, что С никуда не денется еще долгое время.
Тут ещё дело в том, что если с C++ ещё можно попасть на «формочки», то с С, как правило, нужны знания по определенной предметной области.
НЛО прилетело и опубликовало эту надпись здесь
Я недостаточно хорошо выразился. Чистый C действительно обычно применяется только на самом низком уровне. Я имел в виду, что даже в C++-ных проектах вы будете регулярно сталкиваться с C. Если у вас где-то в коде на C++ есть банальный char* — вы уже опускаетесь на уровень C, и должны понимать его, чтобы знать что с этим делать дальше. В академических целях можно, конечно, написать код, где вообще не будет указателей, макросов, инклюдов (со стандартной библиотекой на модулях после C++23), и т.д., его можно будет назвать «чистый C++ без C», но на реальных проектах всё равно в разных местах будет вылазить C.

То что вам за все эти годы не попадались проекты, значительные части которых были бы написаны на чистом C, говорит о том, что мы видимо работаем в несколько разных нишах. Я за последние 3 года принимал участие на 3 разных проектах, и везде были значительные части на чистом C. Где-то просто потому что за основу были взяты какие-то сишные библиотеки, которые перерабатывались под нужды проекта тоже на C; где-то потому что не было подходящего тулкита с поддержкой C++. Но вот если кто-то, например, целенаправленно ищет работу с применением Qt, то вероятность того, что придётся работать с кодом на чистом C стремительно падает вниз. Такие проекты скорее всего будут целиком в юзер-ленде, с использованием в основном или даже исключительно библиотек Qt, без каких-либо прямых обращений к системным API и т.д.
НЛО прилетело и опубликовало эту надпись здесь
Я где-то году в 2011 2007 последний раз писал отдельную утилиту на «голом» C. На питончике (хотя я до сих пор предпочитаю ему Tcl, честно говоря) ее толком написать было бы нельзя, а писать ее на плюсах было бы избыточно.
НЛО прилетело и опубликовало эту надпись здесь
ICMP-пакетики там нужно было тусовать туда-сюда с приемлемой скоростью. Raw sockets, все дела.
НЛО прилетело и опубликовало эту надпись здесь
Да там все банально, вот она. Там собственно изначально были требования, чтобы она могла быть собрана и работать в том числе на железных роутерах под линупсоподобными ОС (питончик по большому счету отпадал), а так ничего сложного. Я потом даже удивлялся, увидев ее в составе продуктов всякого коммерческого крупняка.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Мне интересно, почему именно C++? Не ищете легких путей?
Ведь с вашими способностями (раз вы осилили С++) вы могли бы стартовать и получить коммерческий опыт программиста гораздо раньше на более простом языке.

Я сам пишу на С++ с 2007 года, а начал изучать его еще раньше, но всё равно не могу сказать, что хорошо его знаю. Имею всего полгода коммерческого опыта на С++.
Я ушел с С++, оставив его только для пет-проектов, потому что у меня нет желания всё время сражаться с языком и разбираться с километровыми ошибками компилятора и маловразумительными ошибками линкера, отсутствием вменяемого менеджера зависимостей, безумным временем компиляции и т.д.
Всё равно, пожелаю удачи вам!
Я ушел с С++, оставив его только для пет-проектов

А зачем его использовать в пет-проектах, если он такой проблемный? В них наоборот хочется заниматься чем-то для души и не сражаться с языком.

спасибо!
Мне интересно, почему именно C++? Не ищете легких путей?
Ведь с вашими способностями (раз вы осилили С++) вы могли бы стартовать и получить коммерческий опыт программиста гораздо раньше на более простом языке.

Надо знать мой характер, когда выступал по боксу, я думал только о самой вершине. Когда начал бегать, я тренировался ради забега в 213км в память об Артуро Гатти и был такой забег с города Братск в Тулун, но я был готов на дистанцию не более 100км. Когда играю в какую-то игрушку, ставлю «невозможно». Когда устроился в авиацию, я горел желанием вырваться работать в Казахстан, быть ближе к космосу, но в нашей стране всё в одном месте. Когда что-то делаю, сразу цели запредельные, и каждый раз я уверен на 100, что всё сбудется. Плюсы попались случайно, но через пару недель узнал, что есть и другие языки программирования, а узнав, что они проще, не стал тратить время на них. К плюсам чувствую душевную привязанность и, когда в компании говорят, а вот бы на другом языке клиент делать, внутренне мне страшно)
Именно к программированию, таких амбиций нет, как и указал в резюме, я хочу просто быть технически эрудированным в этой области. Внутренне я последний год отдыхаю, всю жизнь как в ринге, то там биться, то там, сейчас так хорошо, так спокойно, невероятно благодарен за такую возможность работать программистом.
Когда что-то делаю, сразу цели запредельные, и каждый раз я уверен на 100, что всё сбудется.

А если не сбудется, что будете делать?

сейчас всё сбылось. Да и этого максимализма почти нет.
Какая же годная статья… Я сейчас иду с вами просто след в след, тоже уже год изучаю плюсы и Qt с недавнего времени. Только начинал с академического С. Сам заканчиваю юрфак, но в конце 3 курса понял что не моё, а что моё. И сильный ментор с 15 летним стажем в продакшне ввёл меня в профессию. Отдельное спасибо за ссылку на статью по шаблону «модель-представление», читаю у Макса Шлее, пока очень поверхностно и непонятно, мало примеров кода. Я правильно понял вас, что вас взяли при том, что вы ещё не знали «модель-представление»? И ещё, как вы считаете, какой минимум знаний и навыков должен быть у Junior C++/Qt разработчика?
Я правильно понял вас, что вас взяли при том, что вы ещё не знали «модель-представление»?

Qt вообще не спрашивали ни на одном собеседовании. Архитектурные вопросы тоже были в малом количестве и, в основном, если я чувствовал, что можно тут «сумничать», то вставлял что-то вроде «а это похоже, как в паттерне Билдер! знаю.» и тп. В Питер тоже вопросов не было по паттернам, а вот в Воронеж (где я сейчас работаю) меня приняли без технического собеседования. Очень важно дать понять работодателю, что вы хотите! вы стремитесь!
как вы считаете, какой минимум знаний и навыков должен быть у Junior C++/Qt разработчика?

я об этом кажется указывал в статье. Если можете реализовать свои STL контейнера, умные указатели, есть что-то на гите, то пробуйте. Джунов берут не от хорошей жизни в компании, я так думаю, тк всё, что я написал за первые 4 месяца в проект, сейчас бы сделал дня за 3.
Мои трудности в первые 3 месяца- потребовалось неплохое знание команд Ubuntu, устройство сетей, как вообще работает клиент-серверное приложение и что такое прокси методы (soap), gsoap, wsdl, протоколы для удаленного доступа, Doxygen, bash, SQL. Но самое сложное для меня было тогда и сейчас- это хорошее знание проекта от сервера и бд до клиента. Почти всегда написать код- плевое дело, труднее всего правильно внедрить его в проект, как можно грамотнее.
Не понимаю как люди могут работать по 2 года в проекте и уходить, некрасиво на мой взгляд по отношению к работодателю, ты только год как в проект нормально въехал, начинаешь работать на свои 100 процентов и уходишь.
>всё, что я написал за первые 4 месяца в проект, сейчас бы сделал дня за 3.
>Мои трудности в первые 3 месяца- потребовалось неплохое знание команд Ubuntu, устройство сетей, как вообще работает клиент-серверное приложение и что такое прокси методы (soap), gsoap, wsdl, протоколы для удаленного доступа, Doxygen, bash, SQL

Знакомая ситуевина, вот такой вот ВОЙТИ_В_IT и практически ПОЛНЫЙ_НОЛЬ пролезает, а потом с умиленным таким и очень вежливым лицом липнет ко всем в команде — просит научить, ткнуть где ШТО и т.п. Ну т.е. просто мешает работать или учится, и не просто учится за бесплатно, а аж даже получает за это деньги. А потом где-то в кругу своей родни/семьи удовлетворенно вещает: Я неплохо прокачался в <...> Самое интересное, что частенько наблюдал, как такие ЮРКИЕ персонажи через год-два, уже освоившись, сами участвовали в собеседовании претендентов… Ну вы меня уже поняли, что там происходило :))) — полная компенсация своих комплексов (причина которых — просто отсутствие МНОГИХ знаний): Вот я простой «моряк», но выучил C++, а ты кто такой? Я вот УПОРНЫЙ (хоть и не образованный) — мне, когда надо было, я 100 км пробежал от Тулуна до <...>.

Гы-ы, умилило очень презрительное отношение к Си (видимо от незнания и непонимания). Ему тут что-то пытались втолковать про embed/Микроконтроллеры/Linux, про то, что C++ — это просто надмножество над Си, а Си — это по сути портируемый заменитель ассемблера, а ассемблер работает напрямую с адресуемой памятью и CPU, а CPU… ну и т.д. Но челу это видимо все непонятно.

Хорошо, что он попал тогда на сайт purecodecpp.com, а не на arduino.com — от формошлепного ПО — никого не убьет током, как и IoT паровые котлы не взорвутся и никого не ошпарят :)))
В первые несколько месяцев так и было, часто спрашивал и стыдно было за это самому, а как иначе? Но и вопросы были на 95% по проекту, архитектуре, а не плюсам. Мои знания не были ниже, чем у обычного джуна, не понимаю в чем негатив.
умилило очень презрительное отношение к Си

нет у меня никакого отношения к Си, я написал, что вакансий по нему днем с огнем не сыщешь. И уж наверняка, если такие и найдутся, то не для новичка будут. Но я удалю своё С-deprecated, многих раздражает я так понимаю.
Добрее нужно быть. Типичное «войти в айти» нынче обычно через JavaScript или какой-нибудь Python. Как правило, люди хотят что-то попроще, чтобы можно было войти побыстрее, и не надо было особо заморачиваться. Здесь же человек выбрал себе язык с высоким порогом вхождения. Понятно, что с самого начала будет много пробелов в знаниях. Все мы когда-то начинали. Со временем и опытом наверстается.
НЛО прилетело и опубликовало эту надпись здесь

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

От C++ Junior-а обычно ожидают то, что когда он вредит (а вредит он постоянно), он с первого раза хотя бы пытается запомнить что ему сказали про то, как делать правильно. Ну и как-то более-менее знает язык «по книжке». На Qt скорее вредно, чем полезно ориентироваться, там довольно архаичное использование C++, так как библиотека очень древняя и имеет долгую и тяжелую наследственность.
>Книги по программированию — это слишком нудно, скучно для меня, с огромным трудом осиливаю

"Пацан к успеху шёл" (с)
Фартануло и получилось. В отличие от оригинала)

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

Единственное мерило коммерческого разработчика — уровень зп. Автор поставил цель уйти в разработку и нашел работу, которая приносит ему деньги, и судя по тексту, опыт и проф. удовлетворение. Поэтому и Ваше, и мое мнение относительно успешности/неуспешности получаются вторичными.
ну, знаешь, тем не менее перешагивая через своё «не хочу» изучаю, приходится. Не в большом объеме пускай, но это только книги, в остальном постоянно ищу материал для изучения.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо и вам!
Надеюсь и младшая пойдет по этой же стезе.

вы главное прислушивайтесь чего именно ребенок хочет) а то придется профессию менять ей, когда осознает, что не на своем месте.
НЛО прилетело и опубликовало эту надпись здесь
тогда к чему предрасположенность есть. Если бы меня родители заставляли на пианино играть, хорошего бы ничего не вышло)
НЛО прилетело и опубликовало эту надпись здесь
да, я вот 18 лет на бокс потратил, но честно слово, в этом деле никто)) трудно угадать к чему у тебя хорошие способности.
Насчет видеоуроков, вообще, согласен с той точки зрения, что съедает много времени, ибо можно все это прочитать быстрее, чем автор в видео проговорит, конечно, можно ускорить видео, тем не менее на каких-то моментах нужно все-таки останавливаться. Хотя, если брать некоторые книги, то в некоторых книгах бывает многовато воды и прочего. Но в целом прочитать можно больше в книгах статьях. Я вот видео смотрю только тогда, когда не получается найти в другом формате.
мое время сильно экономит x2 скорость воспроизведения. А если что-то непонятно, можно даже замедлить.
тут всё конечно индивидуально. Но не нужно понимать мою статью, как- «книги плохо». Книги круто, но просто мне с трудом дается это чтиво.
Комфортная атмосфера для работы. Ценят твоё рабочее пространство и не создают лишний шум, который отвлекает от работы- раньше у меня постоянно болела голова на работе, особенно напрягала музыка, отовсюду радио, а я люблю работать в тишине, теперь с этим проблем нет.


Звучит как будто у вас не опенспейс. Если так то вам повезло — в опенспейсе музыки конечно нет, но вот с шумом и с рабочим пространством иногда возникают проблемы. Надо быть готовым что это стандартная практика в нашей отрасли и далеко не всегда работодатель не жмотится на кабинеты человек на 8 хотя бы. Причем конторы, которые у всех на слуху, чаще остальных этим страдают.
Звучит как будто у вас не опенспейс.

так и есть) но когда смотришь обзоры про IT компании и как работается программистам, то при показе опенспейса всегда гробовая тишина. У меня и сложилось впечатление, что так практически везде)
В опенспейсе в среднем будет 50/50 разделение времени по шуму/тишине. И чем больше кого-то кроме программистов тем больше перевес на сторону шума. Например на моем опыте в опенспейсе на 100+ человек, где сидят одновременно проджект менеджеры, DBA, аналитики и программисты и все эти люди из 5 разных проектов, тишина была разве что перед и после рабочего дня, ну еще в обед может быть было слегка тише.
нас месяца 2 назад разделили с аналитиками, стало лучше) но и без аналитиков никуда, то мы к ним, то они к нам.
Господа спецы по С++! Есть ли какая-нибудь книга/сайт где бы были примеры ЗАЧЕМ нужны те или иные ++вые штуки?
Объясню откуда вопрос — программирование на чистом Си слегка деформирует мозг, в том смысле, что можно обойтись без более высоких абстракций. Когда я вижу в какой-нибудь статье «Давайте напишем класс для… », я мысленно говорю — «А давайте не будем городить огород!»
Совсем хорошо если бы были примеры — вот так это долго и нужно делается на Си, а вот так — быстро легко и красиво на С++.
Если я хочу слишком многого — прошу прощения.

Пожалуйста.
Вот так происходит корректное выделение и освобождение памяти (да и любых ресурсов) на С:


код
#include <stdlib.h>
#define SUCCESS 1
#define ERR 0

int f(...какие-то параметры...){
  int res;
  int *xs = (int*) malloc(100500);
  if(!xs){
    res = ERR;
    goto _exit;
  }
  double *ys = (double*) malloc(9001);
  if (!ys){
    res = ERR;
    goto _release_xs;
  }
  // тут работаем с областями памяти xs,ys.
  ....
  err = SUCCESS;
  free(ys);
_release_xs:
  free(xs);
_exit:
  return res;
}

А вот так на C++:


код
#include <vector>
void f(...какие-то параметры...){
  std::vector<int> xs(100500);
  std::vector<double> ys(9001);
  // тут работаем с областями памяти xs,ys.
  ....
}

Достаточно легко и красиво?

Ну вот в Си всё понятно — объявляем, выделяем, обрабатываем ошибки, что не так — добро пожаловать на выход.
А на С++… прям а-ля статическое выделение какое-то.
На самом деле ОГРОМНОЕ спасибо за этот пример.
Но есть вопрос — а как же всякие new и delete? Или устарело? Или просто альтернативный вариант?
НЛО прилетело и опубликовало эту надпись здесь
Да, даже по сравнению с new удобней — экономится строка объявления.
Это я уже компильнул.
И заглянул вот сюда. Нет в жизни счастья! (У меня программы в основном это численный счет).
ru.stackoverflow.com/questions/6283/%d0%ad%d1%84%d1%84%d0%b5%d0%ba%d1%82%d0%b8%d0%b2%d0%bd%d0%b0%d1%8f-%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-stdvector
Господа использовали at() вместо operator[].
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

new и delete по-хорошему нужно использовать только в конструкторах и деструкторах соответственно, иначе структура корректного кода должна напоминать мой пример на С выше, с поправкой на то, что new при неуспехе обычно выбрасывает исключение, а не возвращает NULL.

Спасибо!
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Great thanks!!!
лично меня в своё время с этого пропёрло:
www.stroustrup.com/arm.html

Есть на русском. www.twirpx.com/file/2598228

там правда больше описывается зачем и почему что-то было принято делать так-то в с++, а не сравнение с С
Спасибо автору за статью и подборку ссылок обучающие материалы!
А мне вот интересно чем Вас не устроила работа в море? Мне 28, работаю мл. научным сотрудником в морском университете. Но я IT-шник. Как раз таки использую стек С++/Qt в основном. В данный момент работа в области морской картографии (IHO S57, IHO S52 — вот это все). Плюс приходится заниматься web (Python/JS,HTML), микроконтроллерами и даже нативным IOS, так как больше некому это делать. ЗП 15к в месяц (рублей, да). В то время как выпускники судоводители на стартовых(!) должностях получают 3 — 4к$. К тому же такие бонусы как практика английского с носителями и мир посмотреть можно. Да еще и рост обеспечен. Выглядит как работа мечты. (Я под зп IT-шника, не подразумеваю свои 15к. Я думаю что в среднем 100к. В регионах возможно еще меньше).
здравствуйте. Есть несколько причин:
1) Каждый раз мне мужики рассказывали, как дети выросли, с женой стали просто сожителями практически, тк за долгие года половину жизни, а чаще больше, ты проводишь в море.
А тк я человек семейный и семья для меня самое важное, то я подумывал тогда «поработаю до 30, скоплю денег и открою бизнес», с морей уйду.
2) после кризиса зп увеличилась вдвое, тк она в баксах, все ломанулись туда, конкуренция возрасла сильно, а я как раз крайний контракт отработал со средненькой характеристикой, ругался пару раз с капитаном и старпомом. Следующие три года я пытался туда прорваться, но безуспешно. Несмотря на то, что тесты на английском сдавал минимум! на 94 балла при 75-80 проходных.
Вот так. Наполовину сам виноват, но всё же получилось в итоге всё удачно. Сейчас я в своей тарелке.
А по поводу других стран- я видел в основном порты. Вырываешь иногда в ущерб сну часа на 3-4 в город, но всё быстро надоело. Везде всё одинаково. Мне больше нравится природа, а не города.
ЗП 15к в месяц (рублей, да).

А зачем вы ещё там работаете?
Сложный вопрос на самом деле. Я туда устроился когда еще учился в магистратуре. Учеба и работа в одном месте. Плюс тема диссертации аккуратно совпадала с текущей работой. Мне было удобно. Начальник лаборатории человек амбициозный и красноязычный. Основная часть ЗП должна была состоять не из оклада а из денег на заказы. Спустя пол года мы сделали два метеобуя для «росморпорта». Делали пол года. В этот период получал суммарно 50к. Не много, но я не считал себя таким уж хорошим специалистом чтобы требовать больше. А дальше затишье. Тендеры, коммерческие предложения (от нас), конференции. Кажется вот вот. Но время идет а денег нет.
Во вторых — моя инертность. Не люблю что-то менять, вот так просто. Но если увижу подходящую вакансию — долго думать не стану. Но вот что-то не вижу пока. В регионах с этим сложно. Здесь в основном 1С, и Web. При окладе не более 50к. Но я все-таки позиционирую себя как программист С++/Qt и мне нравится это.
В третьих — я не могу оценить свой профессиональный уровень, т.к. нет фидбэка. Кроме меня мой код не видел никто. Из за чего развился синдром самозванца. Я единственный IT-шник в команде. Из-за чего также нет опыта командной работы. Поэтому не рассматриваю удаленку, понимаю какая там конкуренция. А куда двигаться и с какого конца начать — не знаю.
Раскидайте резюмешки куда нравится и на собеседованиях всё поймете. К тому же, если нет семейных препятствий, переехать в другой город- как дорогу перейти. Купил билет, снял хату- всё, живи работай. 50тр хватит до первой зп, сам много раз город проживания менял.
Просто пробуйте и получится.
Присоединяйтесь к проекту qelectrotech. Там и C++ и Qt и проект важный.
НЛО прилетело и опубликовало эту надпись здесь
Не сказал бы, что это такой уж отдых. Веб-приложения я почти не пишу, но вот не так давно пришлось, и был неприятно поражен количеством «несоответствий», до сих пор вылезающих в разных браузерах. Например, есть у меня div с overflow auto, я добавляю в него канвасы с заданным style.width и style.height. На большинстве браузеров этот div по мере добавления канвасов начинает прокручиваться, но вот на одном (ЕМНИП, на Safari) браузер вместо добавления прокрутки внезапно начинает размеры этих канвасов произвольно уменьшать. Оказывается, style.width и style.height для него мало, нужно еще style.minWidth и style.minHeight. И вот такого полно.
тоже хотел написать по этому поводу, но не стал. Не так всё просто. У нас сервер на пхп, казалось бы- всё легче, чем плюсы, но пойди разбирись с еще одним фреймворком, со всеми методами.
Легко, если не заморачиваться над качеством, или у тебя большой опыт за плечами.
НЛО прилетело и опубликовало эту надпись здесь

Спасибо, ваш опыт отчасти вдохновляет. Иду похожим путем: из госслужащих в разработчики, благо IT-сфера интересовала с детства, еще с программируемых калькуляторов. В госслужбе в силовых структурах разочаровался. Фраза Чацкого из "Горя от ума": "Служить бы рад, прислуживаться тошно" сегодня актуальна, как никогда.
Разработка на С++ — мой осознанный выбор. Язык общего назначения, поддерживающий все основные стили программирования, имеющий развитые средства для работы с аппаратной частью вычислительных машин, прошел проверку временем, используется в промышленных масштабах, вот чем для меня лично С++ ценен.
Для тех, кто предпочитает заниматься по книгам, могу порекомендовать учебное пособие от автора языка Бьярне (да-да, именно так) Страуструпа "Программирование: принципы и практика с использованием С++". Книга научит программировать и параллельно позволит освоить на среднем уровне С++. Для меня лично она стала просто "библией" С++, после нее учебники для университетов, написанные по ФГОСам, вызывают только рвотный рефлекс. Ну, а если есть желание осваивать язык более глубоко, у Б.Страуструпа имеется фундаментальный труд "С++. Специальное издание", он уже рассчитан на подготовленных читателей.
Все сказанное выше является моим субъективным мнением, а не приглашением к дискуссии.

Спасибо за статью. Уточните пожалуйста в какой области нашли работу?
клиент-серверное приложение. Медицина.
Спасибо.
после того, как узнали, что мне скоро 30 на лицах появились ухмылки

Не обращайте внимания. Во моём случае некоторые веселились, когда спрашивали об ожидаемой зарплате.
конечно, я адекватно в свою сторону это воспринимаю, те не переживал ни дня. Меня только оскорбило такое поведение.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории