Создатель Linux Линус Торвальдс: C++ -ужасный язык. Еще более ужасным его делает тот факт, что его использует множество неквалифицированных программистов, причем там, где с его помощью проще всего создать полнейшее фуфло. Честно говоря, даже если язык C использовался бы только для того, чтобы держать в отдалении программистов на C++, это само по себе послужило бы достаточным оправданием использования этого языка. Другими словами, выбор языка C является единственным разумным выбором. Я пришел к выводу, что программист, который предпочел бы при написании какой-либо программы использовать язык C++, а не C, скорее всего, принадлежит к такому типу программистов, которых я бы предпочел выгнать вон, так, чтобы они не смогли прийти и испортить проект, которым я занимаюсь. C++ является причиной плохих проектных решений. Вы неизбежно начинаете использовать «изящные» возможности таких библиотек языка, как STL, Boost и другую подобную ерунду, которая может «помочь» вам программировать, однако добиваетесь этим только: - бесконечного геморроя, когда они не работают (и каждый, кто скажет мне, что STL и, в особенности, Boost, стабильны и переносимы, просто несет полный бред, и это даже не смешно). - создания неэффективных, оторванных от жизни программных моделей; в результате через пару лет вы замечаете, что некоторые абстракции не слишком эффективны, однако весь ваш код уже находится в зависимости от всех этих изящных объектных моделей, и вы не можете исправить его, не переписав при этом всё приложение. Другими словами, единственный способ использовать хороший, эффективный, системный и переносимый C++ заключается в том, чтобы ограничить себя теми возможностями, которые в принципе доступны в языке C. Кроме того, использование языка C означает, что никто не испортит ваш проект, и вы сможете найти кучу программистов, которые действительно разбираются в низкоуровневых проблемах и не испортят все дело какой-нибудь идиотской объектно-моделируемой чепухой.
Потому что Линус Торвальдс занимается (или занимался, не уверен насчёт текущего уровня его активности) преимущественно разработкой ядра ОС, а там лишние абстракции действительно могут только мешать.
Потому что Линус Торвальдс сам же и говорил что он уже старый и не способен принимать новые технологии. C++ не любят только три типа людей: Быдло кодеры, Школьники, Старики. Более того С++ хорош тем что очень легко отсеиваются некомпетентные в нём люди. особенно такие как автор вопроса. который является простым школьником которой обозлился на С++, на котором в свою очередь, написано большая часть нативного кода. Что косается OS то Linux написана на С совершенно из-за других причин про которые чуть позже расказывал Торвальдс: "как пишу код так и генерируется, для строгих и не сложных систем это лучший вариант, будь ядро чуть посложней и сам же язык С стал бы для нас ловушкой". С++ позволяет делать огромное количество вещей в сотни а то и в тысячю раз проще особенно когда дело касается алгоритмически сложных систем такие как ядерная физика, компьютерные игры, сложный софт, компиляция. *Базон хигса считали на С++ *Ядерные реакторы работают на С++ *Весь космос работает на С++ *Все AAA игровые движки написаны на С++ *Браузеры работают на С++ *Абсолютно всё медицинское оборудование *Все высоко нагруженые сетевые сервисы. *Виртуальные машины *Автопром/AI *Драйвера видеокарт пишутся только на С++ *Поисковые движки *CERN *Офис * компиляторы *Мат-вычислители, и идругие невероятно сложные архитектурно системы написаны на С++. *Недавно С++ получил всемирную награду за вклад в кинематограф C остается главным языком там где что-то потенциально устарело либо было задумано так.
То есть нет смысла сначала учить C, а потом C++? Можно ли только на C++ разработать отличную ОС(ну может где-то ассамблер поиспользовать), без глюков, тормозов, вылетов и прочего? И почему тогда андроид не пишут на C++, раз этот язык такой высокопроизводительный?
Загляните к нему github.com/torvalds Он не то что С++, он Qt полюбил, однако большинство репозиториев всё же на Си. Я читал что, когда он начинал делать Линукс ему было 20 лет, а С++ был сделан недавно. Может он просто не знал о нём, хотя врятли. Мне лично нравится С++, но сам классы я практически не создаю (только для Qt) т. к. в стандартной библиотеки их уже достаточно много, а в неродных вообще неисчислимое количество. И я думаю у многих такое же отношение к нему
Звучит красиво. Но когда на производстве или для производства создано ПО на с++ и переписать его ради вышеозначенного текста не представляется возможным то либо программист начинает работать на с++ либо он там не нужен. У меня был работник который пришел с такими идеями все переписать. Не задержался. Просто никто не хотел и не мог оплачивать его идеи. Это привело бы к остановке производственного продукта. И в дальнем если бы продукт был все таки переписан, то ещё нужно было время, которого как всегда нет на производстве, на тестирование и доводку до ума нового кода и самого продукта. Такие идеи хороши с нуля, когда действительно есть задача создать новое и тут каждый готов делать это так как сочтет нужным. Победит лучший и быстрый и небагованный, а так же с лучшей функцией дебага.
C++ -ужасный язык. Еще более ужасным его делает тот факт, что его использует множество неквалифицированных программистов, причем там, где с его помощью проще всего создать полнейшее фуфло. Честно говоря, даже если язык C использовался бы только для того, чтобы держать в отдалении программистов на C++, это само по себе послужило бы достаточным оправданием использования этого языка. Другими словами, выбор языка C является единственным разумным выбором. Я пришел к выводу, что программист, который предпочел бы при написании какой-либо программы использовать язык C++, а не C, скорее всего, принадлежит к такому типу программистов, которых я бы предпочел выгнать вон, так, чтобы они не смогли прийти и испортить проект, которым я занимаюсь. C++ является причиной плохих проектных решений. Вы неизбежно начинаете использовать «изящные» возможности таких библиотек языка, как STL, Boost и другую подобную ерунду, которая может «помочь» вам программировать, однако добиваетесь этим только:
- бесконечного геморроя, когда они не работают (и каждый, кто скажет мне, что STL и, в особенности, Boost, стабильны и переносимы, просто несет полный бред, и это даже не смешно).
- создания неэффективных, оторванных от жизни программных моделей; в результате через пару лет вы замечаете, что некоторые абстракции не слишком эффективны, однако весь ваш код уже находится в зависимости от всех этих изящных объектных моделей, и вы не можете исправить его, не переписав при этом всё приложение.
Другими словами, единственный способ использовать хороший, эффективный, системный и переносимый C++ заключается в том, чтобы ограничить себя теми возможностями, которые в принципе доступны в языке C. Кроме того, использование языка C означает, что никто не испортит ваш проект, и вы сможете найти кучу программистов, которые действительно разбираются в низкоуровневых проблемах и не испортят все дело какой-нибудь идиотской объектно-моделируемой чепухой.