Подтвердить что ты не робот

Какие технологии должны знать программисты на C++?

С++ был первым языком программирования, в который я действительно попал, но большая часть моей работы над ним была академической или для игрового программирования. Большинство заданий на программирование, где я живу, требуют программистов на Java или .NET, и я имею довольно хорошее представление о том, какие технологии они требуют, помимо основного языка. Например, Java-программисту может потребоваться знать EJB, Servlets, Hibernate, Spring и другие технологии, библиотеки и фреймворки.

Однако я не уверен в С++. В реальных жизненных ситуациях, для общего бизнес-программирования, что программисты на С++ должны знать за пределами языковых функций? Такие вещи, как Win32 API, некоторые библиотеки, фреймворки, технологии, инструменты и т.д.


Изменить: я тоже думал о стандартной библиотеке, когда я сказал базовый язык, извините, если это было неправильно или не понятно. Мне было интересно, есть ли какие-либо более специфические требования к домену, подобные всем технологиям Java или .NET-программистам, которые могут потребоваться, чтобы узнать, как это связано с тем, что программистам на С++ нужно знать в целом. Я согласен с тем, что стандартная библиотека и Boost имеют важное значение, но есть ли что-либо помимо этого или оно отличается для каждой компании/проекта/домена?

4b9b3361

Ответ 1

Что касается каждого языка, я считаю, что существует три взаимосвязанных уровня знаний:


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

Ответ 2

Разработчик С++ должен grok std и boost библиотеки.

Список других технологий во многом зависит от типа проекта. Конечно, у вас будет некоторое взаимодействие с SO, поэтому вам нужно будет знать API своей среды.

Что касается доступа к данным и других материалов, то для разных решений есть тонны. С++ намного богаче, чем некоторые управляемые языки в этом смысле. 99% старых популярных систем имеют интерфейс C/С++.

После того, как вы немного уточнили свой вопрос в комментарии к моему ответу, я могу порекомендовать:

  • Хороший браузер кода (SourceInsight или Understand для С++, например)
  • Инструменты статического анализа (Link, KlockWork Inforce и т.д.)
  • MySQL\SQLite (я столкнулся с этими БД в огромном количестве проектов на С++)
  • Технологии пользовательского интерфейса (OpenGL\GLUT, DirectX, GDI, Qt и т.д.)

Ответ 3

технологии, которые вы должны знать как программист на С++ (и, следовательно, более технически знающие, чем менее программисты;)):

проблемы с производительностью - что мешает работе, как найти и исправить такие проблемы. Я также имею в виду такие вещи, как переключение контекста, линии кэша, оптимизированные поисковые запросы, использование памяти и ограничения, а также подобные вещи, которые не интересует ваш средний разработчик VB/С#.

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

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

В противном случае для определенных инструментов - это зависит от того, на что вы нацеливаетесь, Windows dev будет отличаться от Linux, отличается от встроенного.

Ответ 5

Это будет во многом зависеть от используемой платформы и других ограничений. Как правило, хороший (С++) программист должен (или должен) научиться API-интерфейсу платформы за очень короткое время. Для С++ гораздо важнее понимать различные цепочки инструментов (например, программист Windows должен также знать цепочку инструментов GCC) и различия в компиляторах. Программист должен также понимать ограничения и поведение платформы на основе платформы.

Что касается библиотек, программистам на C++ абсолютно необходимо знать STL и Boost. Нет обсуждения.

Ответ 6

Помимо всего перечисленного, имейте в виду, что программист на С++ имеет место на рынке встроенных систем (намного больше, чем большинство других языков высокого уровня). Так что знакомство со встроенными системами и разработками может открыть много дверей и возможностей для работы, вы не будете так сильно конкурировать с разработкой Java, например. Поэтому изучение кода компактного кода (компактный после компиляции) и использование методов низкой памяти - хорошая ставка.

Ответ 7

В конкретном порядке

  • COM/ATL
  • DirectX
  • MFC и Win32
  • STL
  • GDI
  • BOOST

Ответ 8

Если вы используете gcc, вы обязательно должны знать gdb. На самом деле, вы должны быть опытными с локальным отладчиком в зависимости от того, какой компилятор вы используете. Кроме того, существует такой широкий диапазон используемых библиотек, что возможность быстрого получения API более полезна, чем любая конкретная. Я бы посоветовал учиться doxygen.

Ответ 9

Если вы используете linux, Valgrind - очень полезный инструмент для проверки того, как ваша программа работает с доступом к памяти.

Ответ 10

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

http://developer.symbian.com