Я слышал о современной популярности C ++ и некоторых разговорах о переходе на C ++ с C # или других C-подобных языков.
Я знаю о возможностях C ++ 11, но мне бы хотелось услышать ваш опыт, особенно от разработчиков, которые перешли с C # на C ++.
Что еще более важно, подталкивает ли Microsoft разработчиков к использованию C ++? Если да, то почему?
Ответы:
Да, ваши подозрения верны. Microsoft подталкивает C ++, чтобы вернуться и стать более популярным.
Я не могу найти его сейчас, но некоторое время назад я увидел презентацию одного из крупных парней Microsoft, и все это было направлено на разработчиков и было связано с развертыванием Windows 8 и особенно WinRT (замена также для .NET framework). как Win32 API).
У него был график, в котором он объяснил, как различные факторы влияют на то, какая технология популярна в определенные периоды времени. Сначала люди хотели скорость, поэтому все они написаны на C / C ++ (два разных языка). По мере того, как аппаратное обеспечение становилось все быстрее, внимание смещалось от скорости выполнения и больше к скорости разработки, поэтому языки более высокого уровня стали намного популярнее.
Однако теперь все больше внимания уделяется мобильным компьютерам и компьютерам на базе ARM (Windows 8 - первая версия Windows, скомпилированная для ARM), и многие считают, что они станут намного более популярными, а для некоторых полностью заменят настольные компьютеры. Таким образом, основное внимание (по крайней мере, в глазах Microsoft) вернулось к C ++, потому что теперь мы заботимся о времени автономной работы. Код более высокого уровня = больше инструкций = требуется больше сока.
Чтобы поддержать этот переход обратно на C ++, они представили совершенно новый программный API для Windows 8, названный WinRT (последнее, что я проверил, так оно и было). Этот API следует теме .NET Framework в том объеме, который он предоставляет, но он будет доступен любому, кто кодирует на C ++ (через COM-интерфейсы), на C # или даже на Javascript для тех, кто хочет писать приложения HTML 5 / Javascript. Они также предоставляют XAML (технологию, используемую в WPF, их новейшей среде пользовательского интерфейса), которая также будет доступна в C ++.
Так что для меня это указывает на то, что в Microsoft определенно больше внимания уделяется C ++, чем в прошлом.
ОБНОВЛЕНИЕ № 1:
Поскольку я только что получил значок «хороший ответ» для этого, я подумал, что, возможно, мне следует вернуться и а) прояснить некоторые вещи и б) осчастливить полицию по проверке фактов, потому что, как мы все знаем на технологических форумах, все неточное может привести к войнам это длится годами.
WinRT не является заменой .NET Framework, но это еще одна альтернатива, которую сейчас имеют разработчики MS Windows, и MS настоятельно подталкивает людей идти в этом направлении. Похоже (пожалуйста, держите себя в руках, если это не на 100% точно), что WinRT был в первую очередь нацелен на приложения современного пользовательского интерфейса, хотя обычные настольные приложения также должны иметь возможность воспользоваться этим. Сказав это, MS настоятельно призывает людей перейти к написанию: а) современных приложений пользовательского интерфейса и б) начать использовать WinRT, так как процент смещения баланса людей, использующих .NET Framework, скорее всего, снизится.
C ++ НИКОГДА не заменит языки более высокого уровня, такие как C # или python. Так же, как эти языки никогда не заменит C ++. Это была, вероятно, самая противоречивая часть вопроса ОП. Но все дело в балансе, а факты таковы:
Итак, в заключение: да, MS настаивает на возвращении C ++, поэтому, скорее всего, его популярность возрастет. Нет, C ++ никогда не заменит C #.
Обновление № 2:
Я не знаю почему, но техническое сообщество склонно видеть вещи в абсолютно абсолютном черно-белом выражении, когда реальность полна оттенков серого. Это ответ на несколько новых комментариев, которые были добавлены к этому сообщению:
.NET Framework не исчезнет в ближайшее время (или когда-либо). Почти все технологии, которые были у окон с 90-х годов, все еще существуют в той или иной форме. Поэтому для тех, кто так привязан к .NET Framework: а) не беспокойтесь об его исчезновении и б) прекратите спорить в его пользу, как будто ваша жизнь зависит от него, ваш API безопасен.
WinRT действительно реализует множество функций, которые в прошлом предоставлялись API-интерфейсами Win32 и .NET. Люди, которые хотят эту функциональность, будут иметь выбор, если они захотят использовать WinRT, .NET Framework или продолжить работу с Win32 API (это тоже не мертво). Если WinRT не поддерживает простое создание веб-приложений сегодня, очень велика вероятность, что он поддержит их в будущем.
Microsoft объявила о том, что WinRT - это большой фреймворк, который дал Microsoft возможность начать с чистого листа и создать API, используя уроки, извлеченные из Win32 API и самой .NET Framework. Я пытался найти это видео, но до сих пор не могу его найти, но одна из вещей, о которых говорил докладчик, состоит в том, что существуют определенные области .NET Framework, которые можно было бы определить лучше / проще / чище, и WinRT предоставляет те же функциональные возможности. в этом новом чистом интерфейсе.
источник
Full
.NET Profile и 'WinRT' .NET Profile есть только незначительные различия , а основные отличия заключаются в том, что большое количество вещей, которые были плохо реализованы 10-15 лет назад, были удалены и заменены более качественным кодом. Пока они не избавятся от библиотеки Win32, все вместе .NET останется здесь. Ваш комментарий показывает полное и полное отсутствие знаний в отношении самого языка .NET и C #.Нет, Windows 8 полностью использует любой язык, который вам нужен (или вы знаете), чтобы выполнить свою работу. JavaScript, языки .Net (C #) и C / C ++ поддерживаются одинаково.
Ничто не заменяется, и в конечном итоге дело за разработчиками. Тем не менее, есть толчок к увеличению времени автономной работы, что облегчает WinRT.
Исключение составляют игры, в которых C ++ получает большую поддержку, особенно в Windows Phone 8, в то время как управляемые языки не имеют встроенной поддержки (иначе xna).
источник
Мысль о том, что люди предпочли бы C ++, а не C # (или почти любой другой пост 1990 [non-php] альтернативный) для программирования общего назначения, смешна . C ++ 11 добавляет несколько хороших пропущенных кусочков, но это все еще прибивает ногу собаке .
C ++ имеет несколько хороших ниш, и это все еще лучший вариант на некоторых платформах с ограниченной поддержкой компилятора. Но нет, современный C ++ нигде не близок к замене чего-либо, кроме, возможно, устаревшего, сломанного C ++.
источник
ДХМ написал:
Согласно этим словам, выбор Java в качестве основного языка / фреймворка для Android от Google был ошибкой. Не было. Язык более высокого уровня обычно означает, что работа выполняется быстрее, и я думаю, что это самое важное для Microsoft и Google. Чем больше приложений создается для платформы, тем выше прибыль производителя ОС.
С другой стороны, существует множество программ для Windows, все еще написанных на C ++, поэтому подталкивать этих разработчиков к переходу на C # / JavaScript / что-либо еще было бы безумно. Microsoft стремится предоставить возможность разработки приложений для Win8 как можно большему числу разработчиков, поэтому, по моему мнению, они решили поддержать C ++ и JavaScript в стеке разработки Win8.
источник
В C ++ все еще есть файлы заголовков, гибкие препроцессоры (#define), ... такие вещи некоторые люди считали этими функциями «злыми» или «трудными в управлении».
C #, с другой стороны, использует метаданные, нет необходимости писать и поддерживать заголовочные файлы.
О добавлении Microsoft дополнительных функций в C ++: не удивительно.
Каждый компилятор C ++ добавляет больше функций, включая функции C ++ 11. gcc тоже.
источник
Это может быть только я, но я вижу гораздо более простое использование C, чем C ++.
Тот факт, что C ++ проглотил простое C целом, затрудняет вывод, кто чем пользуется.
Но проектов с открытым исходным кодом на C гораздо больше, чем на C ++.
На мой взгляд, если вам нужна скорость, близкая к металлу, используйте C. Если вам нужна гибкость и управляемость при разумной производительности, используйте C # или Java. Если вы хотите быстро создать чистый дизайн, используйте Python, Scala, Groovy или любой из множества полнофункциональных языков.
источник
C ++ не заменяет C #. Давайте посмотрим, где используется язык C ++. Он используется, когда требуется высокая производительность, для написания библиотек промежуточного программного обеспечения, низкоуровневого доступа и для написания кода для устройств с ограниченными ресурсами. Хотя вы можете использовать c # для некоторых из этих c ++ больше подходит для них. Толчок Microsoft к c ++ тесно связан с ее большим толчком в мобильном пространстве. Никто не попросит вас написать ваше следующее веб-приложение на с ++. Но с Qt аргумент производительности не может быть сделан против c ++. Но я думаю, что многие люди не знакомы с Qt.
источник
Нет, C ++ не может заменить C #, потому что все не-Direct3D приложения для Windows Phone 8 должны быть разработаны на C #. Вы не можете разрабатывать и публиковать приложения в магазине приложений wp8, просто используя C ++ или HTML5 / Javascript. И пока Microsoft не снимает это ограничение, C ++ ничего не заменяет. В результате я уверен, что мало кто будет разрабатывать для WP8. Бедная Nokia, проигрывает еще раз.
Вот выдержка из Microsoft Dev Center :
еще один:
Даже Microsoft MVP утверждают, что этот слух является преднамеренной дезинформацией, сделанной самим Microsoft:
И этот намеренный неправильный маркетинг тратит впустую месяцы людей :
источник