C++ в современном мире



    Дискуссии о текущем положении C++ в мире программирования, как правило, делят участников на два фронта: одни этот язык недолюбливают, пророча ему скорую гибель; другие же наоборот утверждают, что на C++ писали, пишут и будут писать. Я бы сказал, что истина находится где-то посередине, но это означало бы, что C++ находится в неком «подвешенном» состоянии, в котором он был, например, между выходами стандартов C++03 и C++11. На самом деле всё обстоит немного иначе. Как? Давайте попробуем в этом разобраться.


    Идём ко дну?




    Ничего подобного. Может быть C++ не настолько популярен в плане изучения начинающими программистами, как C# или Java, может быть под него не затачиваются новые технологии, выпускаемые корпорациями-гигантами, может быть он не продвигается теми же Microsoft и Oracle, но сказать, что C++ пошёл на дно — значит нагло соврать. Программное обеспечение, написанное с использованием C++, никуда не делось и требует поддержки. Новое ПО, например, игровые движки, также вовсю использует C++, а стандарты C++11, C++14 и готовящийся C++17 только подтверждают, что дела у этого языка программирования идут неплохо. Но давайте обо всё по порядку.

    C++11, C++14, C++17...




    Как упоминалось ранее, между стандартами C++11 и C++03 язык находился в своеобразном «подвешенном» состоянии. Вроде бы развивались и дополнялась такие библиотеки, как boost, Qt и прочие, появился C++/CLI, а нового официального стандарта всё не было и не было.

    Так продолжалось достаточно долго, да и стандарт C++11, планировавшийся к публикации в 2009 году, вышел только двумя годами позже. Но тем не менее вышел. И не просто вышел, а принёс собой множество дополнений, расширений и «синтаксического сахара». Писать с использованием нового стандарта стало проще и удобнее, в стандартную библиотеку было добавлено множество средств, облегчающих программистам жизнь. Была введена официальная поддержка параллельного программирования, что немаловажно, списки инициализации, призванные сделать код понятнее, лямбда-функции, наверняка нашедшие своих любителей… И это, конечно не всё, но статья немного об ином — перечислять все нововведения здесь смысла нет.

    Отлично, стандарт C++11 вышел, а что дальше? Опять простой на 8 лет? А вот и нет. Ни для кого не новость, что уже вышел стандарт C++14. Нет, о таком расширении, какое привнёс C++11, и речи не идёт, но дополнения и улучшения имеют место быть.

    Но что не менее важно — тенденция не потеряна и на горизонте уже виднеются заготовки для нового стандарта — C++17.

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

    А что же со старым ПО?

    Существующее программное обеспечение


    С использованием C++ написано множество программного обеспечения. И, конечно, его необходимо поддерживать. Хотите взглянуть на реальные примеры? Пожалуйста, соответствующий список в помощь. Наверняка вы найдёте там немало знакомых продуктов. Не думаю, что кто-то кинется переписывать существующий работающий С++ код на C# или Java, только потому, что так будет удобнее в дальнейшем, потому, что «сборщики мусора» и т.д. и т.п. Выходит, что знания C++ снова необходимы. А с учётом того, что C++ стал намного удобнее в работе с выходом новых стандартов, идея писать модули/дополнения на современном C++ имеет место быть и не выглядит безумной. В дальнейшем такой код будет куда проще поддерживать. В то же время это всё тот же производительный C++, с обширнейшим набором возможностей. А дополненная стандартная библиотека позволит использовать уже готовые решения без необходимости изобретения велосипедов.

    Популярность среди начинающих




    На этом фронте дела идут не слишком гладко: С++ не слишком популярный язык среди начинающих программистов и существенно проигрывает таким языкам, как C# или Java. Почему? Тут можно выделить несколько причин:

    Высокий порог вхождения




    Наверное, нет такого программиста, который бы не слышал о сложности С++. Безусловно, язык обширен, нюансов — несчётное множество. Но что мы получаем взамен? Производительность + глубинный контроль происходящих процессов (особенно если несколько спуститься с C++ к чистому C). Тут опять же следует упомянуть про стандарт C++11, который более приветлив к новичкам, предлагая удобный синтаксис, различного рода контейнеры, алгоритмы и прочие удобные вещи, предназначенные облегчить жизнь и написание кода.

    Тем не менее, хоть вероятность этого весьма снижена, прострелить себе ногу при желании всё же можно.

    Слабое продвижение


    Думаю, ни для кого не секрет, как продвигаются такие языки как C# или Java корпорациями-владельцами: Microsoft и Oracle. Не буду наверняка говорить про Java, так как с тенденциями на этом фронте не слишком знаком, но вот со стороны Microsoft продвижения весьма заметно. Большинство технологий Microsoft затачиваются именно под C#. Хакатоны, проводимые Microsoft, опять же проходят с использованием C#. Нет, это не плохо, просто констатация факта.

    Для C++ такой поддержки нет. Да, для него выпускаются различные инструменты, позволяющие облегчить работу и процесс создания приложений. Тут стоит вспомнить тот же Qt, недавно вышедший ReSharper C++ от JetBrains. В Visual Studio 2015 ввели поддержку некоторых нововведений из последних стандартов, плюс некоторые дополнительные функции — работать стало удобнее.

    Но с масштабом вышеупомянутых продвижений это всё же в сравнение не идёт.

    Специализация


    Несмотря на то, что C++ — язык, дающий разработчику, как говорится, все карты в руки, область его применения не всеобъемлюща и занимает определённую нишу. Конкуренты есть, это тоже оказывает свое влияние. Взять, например, мобильную разработку. Основные платформы заняты теми или иными языками: Windows Phone — C#, Android — Java, iOS — Objective-C. И это вовсе не означает, что под эти платформы нет возможности писать на C++, вопрос лишь в том, насколько это будет удобно и будет ли также эффективно. Для веба, разработка под который с каждым годом становится популярнее и популярнее, C++ тоже не очень подходит. Возможность работы с сокетами есть, библиотеки, наподобие Wt, есть. Но вы много слышали о веб-приложениях, работающих на С++? Вот и я нет. С учётом того, что мобильная и веб-разработка стали очень популярны и только набирают обороты, понятен выбор начинающих в пользу других языков.

    TIOBE Index


    Слова словами, но, как говорится, лучше 1 раз увидеть, чем 100 раз услышать.

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



    Как видно, по сравнению с прошлым годом C++ не только не сбавил позиций, но и смог войти в тройку лидеров. Более того — это один из двух языков в пятёрке лидеров, рейтинг которых пусть незначительно, но тем не менее поднялся.

    Заключение




    Думаю, что вы уже сформировали мнение о текущем положении C++ в современном мире. Позвольте и мне высказать своё.

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


    Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Sergey Vasiliev. C++ in the modern world.
    PVS-Studio
    411,00
    Static Code Analysis for C, C++, C# and Java
    Поделиться публикацией

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

      +12
      Интересно, откуда в список вылез Visual Basic c приростом большим, чем у JavaScript?
        0
        Может быть это VBA?
          +3
          Даже если и так, всё равно не понятно, откуда такой прирост.
          Всё стали программировать макросы в Excel?
          Это ведь единственное применение этой технологии?
        • НЛО прилетело и опубликовало эту надпись здесь
            +5
            Visual Basic .NET — это другая строчка, с существенно меньшим приростом.
            +8
            Давно уже замечено, что этот рейтинг не отвечает действительности.
            +8
            Несмотря на то, что C++ — язык, дающий разработчику, как говорится, все карты в руки, область его применения не всеобъемлюща


            Удивлен! В какой же это области нельзя применить С++?
            • НЛО прилетело и опубликовало эту надпись здесь
                –3
                Из веба у тех же google и Яндекс полно сервер-сайда на C++
                • НЛО прилетело и опубликовало эту надпись здесь
                    +1
                    А нужен ли обычному вебу с++? В нашей компании к примеру сервер-сайд тоже частично на с++.
                  0
                  ActiveX же. Хоть и закрывает и устарел, но нельзя сказать, что «нельзя применить C++»
                    +4
                    А при чем тут AciveX? Он никак к языкам не привязан.
                      0
                      При том, что с его помощью можно применить C++ в «браузер-сайде».
                      0
                      Ну тогда уж и NPAPI (плагины к FF и до недавнего времени к Chrome).
                        +2
                        и emscripten
                    +6
                    Согласен, в настоящее время самый кроссплатформенный и высокопроизводительный код на компилируемом языке пишется на C++.
                    –11
                    Когда то в универе у нас был c++ и я страшно не любил программирование из-за этого. Позже появилась Java, с которой я сейчас и работаю, и полюбил писать код. Однако решил начать c++ с нуля и знаете, это чертовски крутой язык. Да, он сложнее, но он настолько крут, что даже Чак Норис не настолько крут.
                      +19
                      Чак Норрис настолько крут, что минусует комментарии даже не зная что такое хабр.
                        0
                        Вы с ФП не сталкивались. После ФП понимаешь, что Scala/Haskell/Kotlin/OCaml/etc настолько круты, что всякие C++/Java кажутся жалкой поделкой (последние 3 года пишу на C++, говорю не от балды). Я опускаю вопрос производительности, т.к. спорить тут не о чем — числодробилки на C/C++, спору нет.
                          +2
                          Люблю Haskell и C++ одновременно, и с удовольствием пишу код на них обоих. Если стандарт плюсов достаточно свеж, конечно.
                            +1
                            Да, мы пишем на старом стандарте. Новый приятен, не спорю. Но до ФЯП ему далеко.
                              0
                              Конечно, далеко.

                              Просто при написании кода на современном C++ я тоже получаю удовольствие. Иногда кажется, что весьма плохое и извращённое удовольствие, это да.
                                0
                                Просто при написании кода на современном C++ я тоже получаю удовольствие. Иногда кажется, что весьма плохое и извращённое удовольствие, это да.

                                Тоже очень люблю и практикую уже более 10 лет C++, далее поток сознания
                                … и очень часто погружаюсь и ощущаю то Бесконечное Добро Сострадание и Милосердие, что содержится в нём :)

                                Часто и особо чувствую я это когда нужна мне, например, такая простая вещь как if этапа компиляции, который уж внутри шаблона точно не проблема сделать. Нужен он, конечно же, дабы можно было сделать шаблон с шахматами и дамами функциональностью, которой можно аннигилировать целые планеты одним вызовом которую регулировать в широких пределах… а его нет.

                                Но как говорилось в одном анекдоте «у нас есть метод» ибо в стандарте есть Полностью Прекрасное sfinae, которым с помощью enable_if и оверхедом по коду в пачку функций таки можно добиться функциональности эквивалентной по смыслу if-у этапа компиляции.

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

                                – Как же так? — удивляются физики, — Ведь в поезде контролёр, вас же без билетов оттуда выгонят!
                                – Не волнуйтесь, — отвечают математики, — У нас есть МЕТОД.

                                Перед отправкой поезда физики рассаживаются по вагонам, но стараются проследить за применением загадочного «метода». Математики же все набиваются в один туалет. Когда контролёр подходит к туалету и стучит, дверь приотворяется, оттуда высовывается рука с билетом. Контролёр забирает билет, и дальше все они без проблем едут в пункт назначения.

                                После конференции те же вновь встречаются на вокзале. Физики, воодушевившись примером математиков, покупают один билет. Математики не берут ни одного.

                                — А что же вы покажете контролёру?
                                — У нас есть МЕТОД.

                                В поезде физики набиваются в один туалет, математики — в другой. Незадолго до отправления, один из математиков подходит к туалету, где прячутся физики. Стучит. Высовывается рука с билетом. Математик забирает билет и возвращается к коллегам.

                                МОРАЛЬ: Нельзя использовать математические методы, не понимая их!



                                Ну а если серьёзно, то в виду отсутствия if этапа компиляции и, например, switch для basic_string, который тоже нужен и который также очень легко сделать, приходится в современном C++11 — C++14 использовать либо макросы препроцессора либо жрать кактус и писать без макросов ещё более унылый для восприятия код :(

                                В общем, искренне не понимаю почему такие простые вещи, думаю многие смогут назвать ещё несколько подобных, не реализованы до сих пор.
                            0
                            Был у меня опыт написания на Scala,Groovy. Кратко и красиво спору нет.
                          +2
                          Мы в универе начинали с одновременного изучения C++ и Pascal. В C++ изучали в основном подмножество C, просто написание учебных программ без использования стандартной библиотеки. Он мне показался более понятным и удобным, чем Pascal. Но сейчас я пишу на более «высокоуровневых» языках.
                          Скрытый текст
                          В принципе, это неплохой язык для начального обучения, если не лезть в дебри метапрограммирования и сложных ООП абстракций. Потом уже можно переходить на другие языки, с пояснениями в плане «в C++ надо было делать так, а в этом языке это делается вот так, и это удобнее». Для начинающих будет более понятно, зачем придумали сборщики мусора, динамическую типизацию, и как устроена работа со строками. А то я пару раз сталкивался с вопросами вида «а почему C++ сам int в строку не конвертирует?».

                          C++ хороший язык, но правильно писать на нем достаточно сложно. Надо знать много технических нюансов.
                            +4
                            А то я пару раз сталкивался с вопросами вида «а почему C++ сам int в строку не конвертирует?».

                            А потом появляются вот такие статьи
                            +4
                            я сам убежденный .Net-Чик. для меня C# и JS это главные языки. но недавно столкнулся с задачей программирования по видеокарту. и понял что обёртки под .Net полная багнутая фигня. А C++ позволяет работать напрямую. Да и доки все под C++. Так что юзаю C++ и радуюсь. непросто но в целом после C# более менее освоил за неделю. но на C++ все равно будет только вычислительное ядро. всю бизнес логику буду выносить в C# обертку. в общем всему свое место — бизнес логике — C#, перофмансу и низкоуровневому доступу к железу — C++. думаю правда это и так все знают )))
                              +3
                              перофмансу и низкоуровневому доступу к железу — C++. думаю правда это и так все знают )))

                              С таким же успехом можно было взять и обычный C без ++.

                              А вообще довольно много уже языков поддерживают напрямую C-заголовки и линковку к нативным библиотекам: golang, rust, objective-c, swift.

                              Так то выбор в этом плане намного больше чем кажется.
                                0
                                на самом деле, для некоторых модулей и используется чистый С. но мы тут про С++ все таки больше говорим, а не про многообразие подобных воркаэраундов…
                                  +2
                                  Rust не поддерживает C headers.
                                    0
                                    да верно, rust там лишний)
                                      +1
                                      в списке его можно заменить на Julia.
                                +3
                                А почему считается, что постоянно выходящие новые стандарты языка это хорошо?
                                  +12
                                  Как минимум потому что, скорее всего, это означает, что язык востребован, за ним следят, интересуются, понимают, что он «не идеален», пытаются улучшить, да и вообще, если есть стандарт, то скорее всего — у языка большая коммюнити…
                                    +2
                                    Потому что язык развивается, а именно:
                                    1) в стандарт попадают новые элементы стандартной библиотеки, делая ваш код менее зависимым от сторонних библиотек и более мультиплатформеным (при должном подходе);
                                    2) в язык добавляются новые синтаксические конструкции, которые увеличивают производительность (move-семантика, например);
                                    3) в язык добавляются новшества, которые позволяют делать код более абстрактным (различные trait'ы) и/или, например, ограждают программиста от допущения некоторых ошибок (например, ключевое слово override или конструкция static_assert).

                                    Всё это продвигает язык на новый уровень, при этом полностью сохраняя совместимость со старым кодом (если он был написан без ошибок).
                                    +9
                                    Наверное, нет такого программиста, который бы не слышал о сложности С++.
                                    И большей частью — это миф. Да в языке есть непростые для понимания конструкции (привет, Александреску!) но вовсе не обязательно ими пользоваться. Можно писать в стиле Java или C# и иметь почти идентичный код. Но рано или поздно захочется поэкспериментировать с шаблонами и макросами.

                                    Но что мы получаем взамен? Производительность + глубинный контроль происходящих процессов
                                    Не все так радужно. Сейчас мало кто пишет на голом языке без парочки фреймворков. Или внешних библиотек. И вся обещанная вами производительности и глубинный контроль легко разобьются о стены закрытой библиотеки или криво написанного фреймворка, точно так же как в любом другом языке.
                                      +5
                                      И большей частью — это миф. Да в языке есть непростые для понимания конструкции (привет, Александреску!) но вовсе не обязательно ими пользоваться.

                                      Вот я тоже всегда удивлюсь фразам типа «С++ — сложный».
                                      Сам с паскаля на него за неделю перешел. И спокойно достаточно писал нормальный код.
                                      Уже больше 10 лет я пишу на С++.
                                      И сейчас могу встретить код, который поставит меня в тупик.
                                      Это же не сложность языка. Это сложность кода который можно на нем писать.

                                      На русском тоже можно писать сказки, которые даже ребенок понимает. А можно — юридические документы, которые может понять и разобраться только специалист в соответствующей области. Это опять же не сложность языка, а широкие возможности.
                                        +4
                                        Ну, вы с такой аргументацией в защите C++ уже доходите до абсурда, по сути заявляя, что русский язык — не сложный. Следуя вашей логике, и квантовая физика не сложная, и функциональный анализ, и вообще ничего сложного в мире не существует, ведь это не они сложные, а с ними делают сложные вещи.

                                        С++ это не принцесса, которая какает бабочками, а вполне конкретный язык, который объективно сложен. Скотт Мейерс достаточно компетентен, как считаете? У него есть что сказать о сложности C++: The Last Thing D Needs
                                      0
                                      Мой цикл разработки высокопроизводительных приложений обычно таков:

                                      1) Написание алгоритма на C++ с использованием всей мощи конструкций этого языка и библиотек для того, чтобы код был красивым и понятным. Отладка алгоритма.

                                      2) Выявление, какие сложности языка, дающие красоту, ухудшают производительность программы или расход памяти.

                                      3) Перевод программы на C или в C-подобный стиль, собственная реализация тех структур данных и библиотечных функций, которые оказались неэффективными.

                                      4) Profit
                                        +8
                                        К сожалению развитие C++ напоминает снежный ком, который рано или поздно просто превратится в черную дыру, с которой ни разработчики стандарта, ни разработчики компиляторов совладать не смогут. Возможности копятся, но старые костыли как были, так и остаются, чего стоит только механизм сборки и разделение исходов на 2 .h/.cpp, а еще ведь inline и шаблоны писать только в .h файлах, но всё остальное не надо, будет компилироваться долго, но почему-то никто не думает о том, что наличие одного файла в других языках не мешает компилироваться быстрее.

                                          +1
                                          Адекватные модули уже планируются, есть пропозалы.
                                            0
                                            Спасибо за наводку, поглядел чутка, опять попытка сделать что-то новое, но оставить старое. В итоге получим +1 фичу, но при этом .h и .cpp останутся, судя по тому что я понял, это нечто унифицированное типа precompiled headers. В итоге разделение по файлам на месте и никуда не делось. Да и при этом имя модуля одно, пространства имён другое, общего ничего, зачем опять это нагромождение сущностей. Почему нельзя было как в .NET, в проекте доступны все модули подключенные в проект, а уж хотите вы писать using namespace или нет, это ваше дело, нет лишней сущности в виде имени модуля.
                                              +1
                                              Потому что обратную совместимость нужно учитывать, к сожалению.
                                                +3
                                                "use strict" рано или поздно появится.
                                                –2
                                                C# в некотором роде и есть работа по упрощению и декостыляции С++.
                                                  +3
                                                  C# — это ответ Microsoft на лицензионные претензии Sun касательно Java. Вспомните такую штуку как MS Visual J++ и то, как удивительным образом она исчезла после 6-й версии и появился .NET. К C++ это не имеет ни малейшего отношения.
                                                    +1
                                                    Если на то пошло, Java тоже не в вакууме появилась. С-синтаксис какбэ намекает, откуда брали основу его разработчики. Но вы правы, стратегически C# это крайне удачный ответ MS на огораживание Java.
                                                      –1
                                                      Про удачность C# по сравнению с Java надо бы рассуждать в другом посте. Мой камент был к тому, что ни о какой декостылизации С++ в C# не может идти и речи.
                                                  0
                                                  Ну кому нормальные модули нужны тот уже на D перешел. github.com/Syniurge/Calypso кстати позволяет использовать С++ библиотеки напрямую.
                                                    +1
                                                    Так какие крупные компании перешли? Facebook попонтовались и всё. Переписывать полностью проекты никто не будет.
                                                      0
                                                      www.sociomantic.com самая крупная использующая D повсеместно.
                                                      Переписывать понятно дело никто не будет, однако новые проекты проще на D писать или на C# (кому нужен .NET).
                                                      Сейчас вот с веб-сервером vibed разбираюсь. Пока очень радует.
                                              –4
                                              Статья ниочем. Кроме ссылки на TIOBE ничего вразумительного. Согласно томуже TIOBE C++ планомерно идет ко дну www.tiobe.com/index.php/content/paperinfo/tpci/C__.html, даже у Си картина лучьше www.tiobe.com/index.php/content/paperinfo/tpci/C.html
                                                0
                                                Дело еще не только в сложности с++, но и в сложной и запутанной инфраструктуре. Одни только системы сборки чего стоят: make, cmake, automake, qmake. Все это не слишкой юзерфрендли. Другие тянутся еще с незапямятных времен. Современному айтишнику привыкшему к девларативности на каждом шагу (json yaml xml) странный синтаксис того же make кажется избыточным
                                                  –2
                                                  Намного интереснее выглядит возможность воплотить в железе ту же JVM, сделать на уровне языка что-то типо inline assembler только для jvm и вот вам скорость и гибкость
                                                    0
                                                    Для любителей юзерфрендли есть IDE, которые всё это генерируют сами.
                                                    +1
                                                    В статье упущено главное: решаемые задачи. Речь не о платформах (C++ не для web, Java для Android и т.п.), а вот о чем: на сегодняшний день по каким-то причинам C# используется для enterprise-проектов. И все. Из известных продуктов, написанных на WPF кроме АВ Касперского даже вспомнить ничего не могу. Xamarin не так популярен для Android, как Java.

                                                    Это означает следующее: если вы — C# разработчик, то с высокой вероятностью придется заниматься автоматизацией бизнеса, так сказать. CRM, ERP, и прочие корпоративные проекты. Чем я занимаюсь последние 5 лет, что безумно надоело. Все интересные задачи, где много алгоритмов, наукоемкая предметная область, исследования и инновации — все на С++, но никак не C#. Печаль.

                                                      +1
                                                      Где бы взять наукоемкие задачи, исследования и инновации в приложениях на WPF или под Андроид?..
                                                        0
                                                        Наукоемкие — это не только обсчет данных с БАКа на суперкомпьютере. Хотя бы что-то связанное с исследовательской, а не бизнесовой предметной областью. На WPF можно очень быстро делать качественный UI — это актуально в любой сфере, в т.ч. и научной (например, на C# быстро можно вывести кучу графиков, сделать сложное окно со множеством регионов, отображаемых динамически в зависимости от условий, генерить word отчеты с кучей таблиц и пр.). Кроме того, что мешает разрабатывать коробочный софт (для пользователей) на C#?
                                                          +1
                                                          Ничего не мешает. Но какая связь между наукоемкостью и WPF? Вычислить что бы то ни было и отобразить — это две совершенно разные задачи, зачем вы связываете одну с другой?
                                                            0
                                                            Затем, что проще работать на одном стеке технологий. Далеко не во всех проектах нужна сверхпроизводительность, в .net кроме unsafe есть и другие способы написания вполне производительного кода, для работы с БД и параллельными вычислениями в .net есть хорошие решния — т.е. можно взять и написать на C# все, не только UI на WPF, но и все что ниже этого UI. Я не говорил о связи между интересными проектами и WPF, речь шла как раз о том, что этой связи быть не должно: есть задача, пишешь хоть на С++, хоть на C#. А сейчас это не так. Мне нравится C#, но не интересны задачи, обычно на нем решаемые.
                                                              0
                                                              Но что мешает решать на нем другие задачи?
                                                                0
                                                                Работодатель, очевидно) Полистайте вакансии .net и C++ разработчиков, весьма ощутимая разница в проектах. В первом случае больше Enterprise, во-втором — интересные разработки чего-то нового (распознавание изображений, биометрия и т.п.). У каждого языка сложилась своя ниша, хотя оба из них — языки общего назначения.
                                                                  0
                                                                  Работодатель запрещает вам заниматься интересными проектами — или запрещает использовать C#?

                                                                  В любом случае, язык не виноват в причудах работодателя.
                                                                    +2
                                                                    Возможность стоять у истоков нового проекта, выбирать для него технологии — это редкость. В большинстве случаев за каждой открытой вакансией стоит уже запущенный проект (в той или иной степени готовности), технологии выбраны, и нельзя сказать, что этот выбор свободен от сложившихся в индустрии стереотипов. В итоге, то что реально интересно, это С++ (нередко на Linux), а не .net (хотя он мог для этой задачи подходить еще больше). У сторонников Linux вообще какая-то обостренная нелюбовь к .net
                                                                      0
                                                                      А с чему им любить .NET, когда реализация его в виде mono была долгое время далеко не идеальна…
                                                                    0
                                                                    Эти задачи как раз требуют максимально-возможной производительности, нередко являющейся основным конкурентным преимуществом решения, зачастую то же распознавание изображений например должно быть в жестком реалтайме, оттого и C++
                                                        0
                                                        C++ — это безбрежный океан, где каждый может найти свой четко очерченный островок по своим возможностям и способностям.
                                                          0
                                                          А вы скажите, на чем писать кроссплатформенные desktop приложения, с легким использованием любых API, предоставляемых конкретной платформой, если не на C++?

                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                        Самое читаемое