История изменений
Исправление eao197, (текущая версия) :
Какая может быть причина начинать на Си++ новый проект в 2017 году?
Причины такие же, как и 10, и 15, и 20 лет назад. Язык позволяет писать на высоком уровне, но при этом держать все под контролем, плюс опускаться на самый низкий уровень, если это необходимо.
Только сюда еще можно добавить уровень развития инструментария за все эти годы. Скажем, уровень оптимизаций, который есть у современных компиляторов.
Огромное количество литературы. Каким бы сложным C++ не был, сколько бы в нем не было граблей, это все уже многократно описано. Существует несколько широко и не очень широко известных гайдов о том, как писать на C++, чтобы не отстреливать себе ничего. Какие-то из них (тот же MISRA-C++) являются промышленными стандартами. Новым языкам до всего этого еще идти и идти.
Плюс к тому, какая бы ущербная не была стандартная библиотека у C++, вокруг написано много всего, что можно брать и использовать как есть (ACE, Boost, POCO, ICU — яркие примеры), либо из чего можно брать либо готовые куски, либо идеи.
Что до прикладных областей, то различные околосистемные вещи, ПО промежуточного слоя (СУБД, MQ-шные брокеры), САПР и пр. ресурсоемкие приложения (вроде Lightroom/Photoshop/FinalCut и т.д.), большие и тяжелые расчеты (вроде расчетов прогнозов погоды, моделирования химических реакций, деформация упругих тел, термодинамика и т.д.), имитационное моделирование в больших масштабах... Вот тоже игростроение выше в качестве примера привели.
Upd. Еще задачи из области промышленной автоматизации. А так же сложные встраиваемые системы (вроде управления бортовым оборудованием для авионики, автомобилей и т.д.).
Ну или несколько лет назад сам был удивлен, когда узнал, что некоторые крупные компании (вроде Dropbox-а и Microsoft-а) используют C++ для разработки ядер своих мобильных приложений. Мол, ядро делается на С++ и в одном и том же виде работает на разных платформах, а GUI уже делается нативным (на Android-е с помощью Java, на iOS с помощью Objective-C). И выбор этот был сделан не просто так, а потому, что другого такого языка на тот момент просто не нашлось. Да и сейчас ситуация принципиально не изменилась.
Сам C++ уже сильно изменился, C++98 и C++11 — это уже как два совсем разных языка, хотя портирование с C++98 на C++11 зачастую происходит без особых проблем. При том, что многие, кто хает C++, и C++98 толком не видели, скорее опираются на какие-то байки из самого начала 90-х.
Исходная версия eao197, :
Какая может быть причина начинать на Си++ новый проект в 2017 году?
Причины такие же, как и 10, и 15, и 20 лет назад. Язык позволяет писать на высоком уровне, но при этом держать все под контролем, плюс опускаться на самый низкий уровень, если это необходимо.
Только сюда еще можно добавить уровень развития инструментария за все эти годы. Скажем, уровень оптимизаций, который есть у современных компиляторов.
Огромное количество литературы. Каким бы сложным C++ не был, сколько бы в нем не было граблей, это все уже многократно описано. Существует несколько широко и не очень широко известных гайдов о том, как писать на C++, чтобы не отстреливать себе ничего. Какие-то из них (тот же MISRA-C++) являются промышленными стандартами. Новым языкам до всего этого еще идти и идти.
Плюс к тому, какая бы ущербная не была стандартная библиотека у C++, вокруг написано много всего, что можно брать и использовать как есть (ACE, Boost, POCO, ICU — яркие примеры), либо из чего можно брать либо готовые куски, либо идеи.
Что до прикладных областей, то различные околосистемные вещи, ПО промежуточного слоя (СУБД, MQ-шные брокеры), САПР и пр. ресурсоемкие приложения (вроде Lightroom/Photoshop/FinalCut и т.д.), большие и тяжелые расчеты (вроде расчетов прогнозов погоды, моделирования химических реакций, деформация упругих тел, термодинамика и т.д.), имитационное моделирование в больших масштабах... Вот тоже игростроение выше в качестве примера привели.
Ну или несколько лет назад сам был удивлен, когда узнал, что некоторые крупные компании (вроде Dropbox-а и Microsoft-а) используют C++ для разработки ядер своих мобильных приложений. Мол, ядро делается на С++ и в одном и том же виде работает на разных платформах, а GUI уже делается нативным (на Android-е с помощью Java, на iOS с помощью Objective-C). И выбор этот был сделан не просто так, а потому, что другого такого языка на тот момент просто не нашлось. Да и сейчас ситуация принципиально не изменилась.
Сам C++ уже сильно изменился, C++98 и C++11 — это уже как два совсем разных языка, хотя портирование с C++98 на C++11 зачастую происходит без особых проблем. При том, что многие, кто хает C++, и C++98 толком не видели, скорее опираются на какие-то байки из самого начала 90-х.