Страницы

Поиск по вопросам

среда, 11 декабря 2019 г.

С++ как язык прикладной разработки умер? [закрыт]

#cpp


        
             
                
                    
                        
                            Closed. This question is opinion-based. It is not currently
accepting answers.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Want to improve this question? Update the question so
it can be answered with facts and citations by editing this post.
                        
                        Closed 4 года назад.
                                                                                
           
                
        
Взгляните хотя бы на наш раздел C++. 
Большинство вопросов примитивные, явно студентов, делающих лабораторные работы. 
Взять хотя бы последние 3 вопроса. На такие вопросы даже не хочется отвечать. Они
напишут с горем пополам свои лабораторки и забудут С++, как страшный сон.

А в англоязычном разделе С++ вопросы такие, что хрен разберешь, не для среднего ума.
Если взглянуть на раздел C#, то там вопросы совсем другие - вопросы использования
прикладных технологий, GUI, библиотек, баз данных.

На С++ перестали писать обычный прикладной софт?

У меня есть опен-сурс проект на С++. Программа для Windows.

За всё время его существования НИ ОДИН человек ни предложил ни одного коммита/патча
в С++ код, да хотя бы взглянул на этот код. Хотя ей активно пользуются, пишут свои
xml-файлы для поддержки других хостингов, некоторые даже скрипты на языке Squirrel
пишут. Конечно, я её практически не раскручивал, и пользователи в основном из xUSSR,
но всё же.

Для сравнения, аналогичная программа на C# (более популярная, хотя, на мой взгляд,
менее понятная простому пользователю) имеет целых 42 контрибутора!!!
    


Ответы

Ответ 1



Я бы не стал делать каких-то категоричных суждений (что дескать, да, умер, несите гроб, будем закапывать или напротив, живее всех, я вчера его в магазине в очереди за пивом видел). Однако тенденция такая явно есть. Причин тому достаточно - это и порог вхождения, который явно выше, чем у java, c#, python или php, и отсутствие поддержки большой корпорацией (как в случае Microsoft и C# или Oracle и Java) и то, что популярные нынче направления прочно застолблены за другими языками (а это мобильная и веб-разработка, где позиции С++ не сказать что сильны), и тяжкий груз обратной совместимости, который не позволяет взять и просто забыть о тяжелом наследии мезозойского периода, что также усложняет язык. В итоге так и получается, что С++ находит применение в более специфических областях, нежели те, что нынче являются стандартом де-факто. Впрочем, значимость тематики вопросов на этом форуме я бы переоценивать не стал. Тут скорее имеет смысл смотреть на рынок труда - где, для чего и в каких количествах требуются С++-программисты (однако сюрприза тут тоже не будет - нужно их существенно меньше, чем phpшников или джавистов). В целом, думаю, вы правы, но драматизировать я бы не стал

Ответ 2



Проблема крестов в том что там слишком много возможностей из-за необходиомсти поддержки совместимости с С, добавления ООП, шаблонов и лямбд в поздних версиях стандарта. В них одновременно коварно сосуществуют взаимоисключающие или частично дублирующие друг друга сущности вроде virtual и указателей на фукнции, шаблонов и препроцессора, лямбд и императивности C, malloc и new, printf и cout, namepspace и #include и.т.д и.т.п. В довершении ко всему С++ очень популярно в ВУЗах. В результате при вываливании всего этого на плохо разбирающегося в сути дела студента мы и получаем все прелести http://govnokod.ru/cpp . Количество всевозможных комбинаций разных сущностей языка грубо говоря растет как факториал от их количества. C++ конечно примечательный язык, но чтобы писать на нем хорошие программы нужно постоянно бороться с ним же самим, пытаясь правильно подобрать нужную комбинацию из десятка если не больше возможных вариантов, так чтобы это выглядело хорошо в данной ситуации. Поэтому я его не люблю и предпочитаю обычный С. Но не думаю что он умрет или внезапно исчезнет в ближайшее время. На нем так или иначе написано очень много кода и он вполне годен для практически любых прикладных проектов будь то компьютерные игры, графические оболочки, медиа-проигрыватели, браузеры и.т.д. UPD: В подтверждении моих слов можно рассмотреть отношение числа сочетаний(биномиальных коэфициентов) для двух ключевых слов в C и С++: C_c++(84,2)/C_c(32,2) = 1743/248 ~= 7 Да, кресты в 7 раз сложнее обычного C. Ключевые слова взяты отсюда: C и C++

Ответ 3



Я думаю, что интересных вопросов по C++ (и Си) мало не потому, что на этих языках мало пишут, а потому, что те кто их использует, просто неплохо владеют языком. По крайней мере тем подмножеством языка, которое вполне им достаточно для решения практических задач. А вот почему здесь действительно мало интересных вопросов не связанных напрямую с языком (да, конкретный язык может быть важен, но все же он не первичен), таких как обсуждение идей, да и технических тонкостей реализации практических задач -- вот это действительно вопрос (конечно, для Меты). Впрочем, ответ (видимо активного большинства SO) очевиден -- формат Q&A не предусматривает... и т.п.

Ответ 4



В чистом виде -- возможно, вы не сможете написать полноценное ПО с пользовательским интерфейсом без использования дополнительных возможностей из фреймворков или библиотек. Собственно, могу напомнить о существовании изумительного (не побоюсь этого слова) фреймворка Qt (читается: кьют), который улучшает и облегчает разработку на C++ (собственно, в своё время я остановился на C++ исключительно из-за Qt). Некоторые преимущества Qt: Qt широко используется для разработки прикладного ПО, запускаемого на различных программных и аппаратных платформах с минимумом изменений в основной кодовой базе, или и вовсе без них, при этом сохраняя силу и скорость нативных приложений. Единый код для множества платформ и всех видов устройств: X11 (GNU/Linux, FreeBSD, HP-UX, Solaris, AIX и т.д.), Embedded Linux, Android, OS X, iOS, Windows (XP, Vista, 7, 8), Windows RT (win8 apps и phone 8.1), QNX / BlackBerry 10, Wayland, etc. Помимо этого, Qt является основой для многих интерфейсов операционных систем. Из основных: Ubuntu (Unity 8/Next), KDE, Sailfish. Лицензии: LGPL, GPL и коммерческая (содержит дополнительные возможности). Отличная документация. Qt позволяет на всех этапах ускорить процесс создания программного обеспечения, повысить его эффективность и, как следствие, значительно сократить время, затраченное на реализацию проекта при разработке. Сообщество насчитывает более 800.000 человек и продолжает расти. Согласно данным официального сайта, "95% довольных пользователей -- качество, подтверждённое успешным опытом разработчиков". Расширение, улучшение, облегчение C++. Более 700 C++-классов. Qt Quick и декларативный язык QML для создания UI и логики. Возможна интеграция с C++. Итого, можно бОльшую часть кода написать на QML (JavaScript) с некоторыми "вкраплениями" C++. Из минусов Qt могу отметить разве что отсутствие его в вебе (есть проект по переносу QML в web, но пока на ранней стадии) и излишний вес (например, ~10 МБ apk), что, впрочем, не является особой проблемой в современном мире. Вывод: C++ актуален (особенно после нововведений C++11 и C++14). Плюс есть Qt (в некотором роде, "надстройка" над C++), который более чем пригоден для разработки прикладного ПО и является одним из лучших решений вообще.

Ответ 5



Я считаю, что не умер, но значение его сильно уменьшилось по сравнению с прошлым. На сегодняшний день С++, как мне кажется, берут для разработки прикладных приложений только в нескольких случаях. К примеру требование мультиплатформенности и требование высокой скорости работы. Благодаря Qt на С++ можно писать весьма комфортно, но всё же этот язык не столь прост в освоении как Java, C# и многие другие. К тому же С++ (как мне кажется) не очень приспособлен для вэба, а многие приложения на сегодняшний день именно на это и ориентируются. 2 года назад я тут задавал вопрос про ORM-Framework'и для C++, но мне так никто толком ничего не смог ответить. Начал более подробно искать сам и понял, что ORM на С++ лучше вообще не использовать... :( Похожая история была когда задумался о том как писать вэб-сервисы на С++. Понял, что геморой тот еще... Погоревал и пошел писать на C# за считанные минуты (при помощи WCF писать вэб сервисы просто сказка). Многие другие языки разработки выигрывают у плюсов в скорости разработки, а на сегодняшний день это очень важный фактор. Свою роль играет и не хватка айтишников по всему миру. Программистов набирают даже из всякого сброда и порог вхождения в язык тут выше чем у той же явы. Кроме того мне кажется, что читабельность кода на С++, скажем так, оставляет желать лучшего, но это может быть и дело вкуса. Компиляторы под С++ тоже не "айс" - часто и густо не говорят вовсе в чём ошибка, а лишь выдают какую-то весьма абстрактную информацию. Примитивнейшие ошибки из-за этого могут замедлить разработку на многие минуты, а то и часы (зависит от опыта). Безопасность приложения написанного на плюсах так же зависит от опыта и знаний программиста - сам по себе язык из-за обратной совместимости весьма дырявый. Всегда хотел заниматься разработкой прикладных приложений и во время учёбы я честно и от всей души пытался найти веские причины почему мне стоило бы специализироваться на плюсах. Так и не нашел... Мультиплатформенность нужна слишком редко, что бы тратить такие усилия. При нынешних мощностях вычислительной техники большой роли скорость загрузки приложения не играет. Даже +-5 секунд в этой области (в большинстве случаев) не оправдывает высоких ресурсных затрат при разработке. P.S. Всё выше сказанно лишь отражает мнение автора и не претендует на истину в первой инстанции ;)

Ответ 6



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

Комментариев нет:

Отправить комментарий