Как возродить навыки C++

Я был разработчиком C++ (в основном, для ATL / COM), пока, как и многие из нас, не перешел на C# в 2001 году. С тех пор я мало занимался программированием на C++.

У вас есть какие-нибудь советы, как восстановить мои навыки C++? Что изменилось в C++ за последние годы? Есть ли хорошие книги, статьи или блоги, посвященные этому языку. Проблема в том, что большинство материалов, которые я смог найти, предназначены либо для людей, которые плохо знакомы с языком, либо для людей с большим опытом.

Какие библиотеки C++ популярны в наши дни? Думаю, мне нужно будет прочитать о STL, потому что я мало им пользовался. Что еще? Способствовать росту? ATL? WTL?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
0
3 377
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Чтобы отточить свои навыки C++, я бы посоветовал просмотреть часть вашего старого кода C++, если у вас все еще есть к нему доступ. Мы надеемся, что если вы вернетесь к нему, это запустит те части вашего мозга, которые бездействовали после перехода на C# :)

Для библиотек хорош STL, тогда буст. Я не думаю, что с ATL / WTL происходит слишком много нового из того, что вы знали еще в 2001 году.

Просто начни проект. Библиотеки, которые вы используете, будут зависеть от вашего проекта, но вы обязательно должны прочитать STL. Если вы долгое время не использовали C++, вам может потребоваться дополнительная информация о шаблонах.

Для начала я бы посоветовал написать код, который будет работать как на Mac, так и на Windows или Linux и Windows. Это заставит вас писать код, который будет намного более переносимым, чем код C++, который вы можете использовать в Visual C++ - есть много более тонких моментов, которые сильно отличаются при переходе на кросс-платформу.

Я бы посоветовал пока держаться подальше от библиотек, если можете - сначала усовершенствуйте свою игру на ANSI C++. Я также предлагаю почитать C++ 0x - скоро выйдет следующий стандарт, и он поможет вам больше работать в этом направлении. С этой целью освежите в памяти STL (концепции, лежащие в основе этого, а не реализацию) и шаблоны.

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

ОБНОВЛЕНИЕ: как только вы освоитесь с STL и начнете делать что-то, что требует большого количества кода с помощью STL или просто сложно, тогда переходите к BOOST. Купите книгу о BOOST, прочтите и хорошо ее поймете.

Способствовать росту - хотя он и другие библиотеки существовали тогда, только относительно недавно он стал популярным. Google для стандартов TR1 и C++ 0x тоже. Вы должны обязательно прочитать STL, потому что (IMHO) это то, что делает C++ особенным.

ATL так же хороша, как и мертвая технология (не поймите меня неправильно, мне она понравилась, и я до сих пор ею пользуюсь, но это уже не модно в мире MS).

Что-то вроде QT, вероятно, более ново и круто для разработчиков C++, и имеет то преимущество, что вы знакомитесь со всеми новыми Linux и веб-разработками, которые будут становиться все более популярными в ближайшие несколько лет.

Однако, как только вы начнете смотреть на то, что вы можете делать, я думаю, все это довольно быстро вернется.

Возьмите какой-нибудь старый фрагмент кода и добавьте к нему. Это не вернет вас к последним трендам C++, но промокнет.

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

Ответ принят как подходящий

Я лично считаю, что синтаксис - это то место, где мне в основном нужно наверстать упущенное, когда я возвращаюсь к языку, который давно не использовал. Но концепции и смысл языка остаются в памяти неизменными.

Предполагая, что то же самое и с вами, я бы сказал, что это хорошая идея пересмотреть тексты, которые, как вы помните, были вам полезны при изучении C++. Я бы порекомендовал «Мышление на C++», чтобы быстро освоить синтаксис.

Да, STL был бы действительно полезен. Это единственное, что, как мне кажется, ценится всеми зрелыми программистами на C++. Было бы полезно знать библиотеки, которые предоставляет Boost.

Изменения в мире C++ зависят от изменений, которые ваш любимый компилятор решил реализовать. Поскольку вы упомянули AT1 / COM, я предполагаю, что это будет VC++. Изменения в MFC будут поддерживать Windows Forms (2005 vC++) и Vista-совместимый пользовательский интерфейс и поддержку ленты (?) (2008 VC++)

VC++ теперь поддерживает управляемый C++ - я уверен, что вы знаете, что это происходит из мира C# - 2008 также добавляет поддержку управляемого STL.

VC++ пытается больше соответствовать стандартам и добивается определенных успехов в этой области.

Они представили множество безопасных функций, которые обесценивают старые std, такие как strcpy, и компиляторы также выдают предупреждения, если вы используете старые fns.

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

В MSDN есть список критических изменений для каждого выпуска. Oh & Поддержка Windows 95, Windows 98, Windows Millennium Edition и Windows NT 4.0 была удалена из версии VC++ 2005 года. Кроме того, основные библиотеки, которые вам требовались до сих пор (CRT, ATL, MFC и т. д.), Теперь поддерживают новую модель развертывания, которая делает их общими боковыми сборками и требует манифеста.

Эта ссылка должна помочь вам - http://msdn.microsoft.com/en-us/library/y8bt6w34.aspx

2008 добавляет еще больше, таких как рекомендации Tr1, более оптимизирующий компилятор, параллельная компиляция (/ mp), поддержка новых архитектур процессоров и т. д. Поддержка Open Mp также была улучшена в одной из этих версий - это то, что я помню.

Снова обратитесь к MSDN - это достоверный источник всех ответов.

Удачи.

/ mp также находится в 2005 году, но не задокументирован

geocoin 15.01.2009 14:43

С 2001 года язык, возможно, изменился лишь незначительно, но способ его написания полностью изменился. В результате я считаю этот ответ в основном неправильным. -1

Martin York 10.11.2012 05:24

У меня была аналогичная ситуация: переключился с C++ на C# в 2005 году, а затем снова переключился на C++ в 2007 году. Я не могу сказать, что вселенная C++ действительно изменилась за эти 2 года. Самым важным было восстановить мои инстинкты управления памятью, но это можно было сделать только практикой.

Теперь, когда у вас есть как C++, так и .NET, вы можете немного изучить C++ CLI (новое воплощение позднего «Managed C++»).

Что касается книг, читайте все, что на обложке есть «Мейерс» и «Саттер».

Даже MS дистанцируется между собой и C++ CLI.

Martin York 10.11.2012 05:27

Перепишите некоторые из ваших материалов на C#, используя C++

100% согласен. Я нашел это весьма поучительным.

ApplePieIsGood 13.12.2008 18:05

Обязательно прочтите последнее издание «Эффективного C++» Скотта Мейерса. Я также порекомендовал бы Стивена К. Дьюхерста "Попытки C++: как избежать общих проблем в кодировании и дизайне".

Возьмите одну из имеющихся фреймворков C++ Unit Test (я предлагаю Платформа тестирования Google C++, он же gtest). Выберите небольшой проект, который вы можете начать с нуля, и попробуйте TDD. TDD побудит вас делать небольшие шаги и размышлять над своим кодом. Кроме того, когда вы создаете свой набор модульных тестов, он дает вам основу, на которой вы можете экспериментировать с различными методами.

Другие вопросы по теме