Подтвердить что ты не робот

Должен ли я отклонять С++, потому что он становится juggernaut?

Я старался идти в ногу с С++, так как они представили 1998 ANSI/ISO С++. Я поглотил новые концепции и попытался их понять. Я узнал об обработке исключений, шаблонах и пространствах имен. Я прочитал о новых механизмах броска и работал с библиотекой STL.

Все эти концепции потребовали много энергии. Но теперь я немного беспокоюсь о будущем С++, когда смотрю новый стандарт С++ 0x.

Все становится все сложнее. Этот язык становится монстром.

Я не уверен, что хочу больше не отставать от языка, так как в любом случае я не выполняю ежедневный хакер на С++. Я в основном использую интерпретированные или байт-коды.

Итак, почему я должен учиться этому сложному, но исключительно мощному языку? Я могу сделать 95% своей работы с Python et al. С оставшимися 5% я могу справиться с простым старым С++ или C без проблем.

Как вы думаете?

4b9b3361

Ответ 1

Слушайте, что Брюс Эккель (автор двух так называемых лучших книг на С++} прокомментировал С++ несколько недель назад:

Тем не менее, я почти никогда не использую С++ больше. Когда я это сделаю, это либо изучение устаревшего кода или запись критически важные разделы, как правило, как можно меньше вызванный из другого кода (мой предпочтительный подход - быстро написать приложение в Python, затем профиль его и если необходимо улучшить производительность вызывая небольшие части С++, используя Python ctypes library).

Поскольку я был на С++-стандартах Комитет, я видел, что эти решения были сделал. Все они были чрезвычайно тщательно рассмотрены, гораздо больше, чем многие из решений, принятых на Java.

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

Кроме того, вы должны прочитать этот поток и предсказания Дэнни Калева на С++.

Однако возрастающая сложность С++ создаст давление на разделение языка на квази-официальных диалектах. Мы уже можем видеть эту тенденцию сегодня; он, вероятно, активизируется в будущем.

ИЗМЕНИТЬ

Вы также должны посмотреть на это обсуждение:

С++ - Кто-нибудь еще чувствует, что С++ становится слишком сложным?

Ответ 2

Каждый использует подмножество С++. Для почти всех прикладных программ на С++, будь то сервер или клиентская сторона, это подмножество управляемо. По моему мнению, единственные люди, которые должны оставаться на вершине абсолютно любого нюанса языка, - это библиотечные писатели - люди, реализующие Boost, STL, Loki и т.д.

Но я бы абсолютно использовал язык, который соответствует задаче. Если Python более читабельна и удобна в обслуживании, чем С++ для вашей работы, и вам не нужен то, что предлагает С++, то обязательно придерживайтесь Python.

Ответ 3

Во-первых, многие функции С++ 0x облегчают использование языка. Более читаемые ошибки компиляции шаблона, более последовательный синтаксис инициализации, поддержка потоков, которые в противном случае должны были бы полагаться на библиотеки, специфичные для платформы, и т.д.

Итак, если вы используете С++, я чувствую, что изучение важных частей С++ 0x должно быть управляемой задачей. Помните, что вам не нужно изучать все новые функции для использования языка. Некоторые функции в основном добавляются в качестве помощи для разработчиков библиотек, например, что позволяет STL быть реализовано более эффективно, но не обязательно влияет на использование конечным пользователем языка. И некоторые из них действительно необходимы в очень редких случаях. Игнорируйте те части языка.

Одна из заявленных целей с С++ 0x заключается в том, чтобы избежать трудностей с ее использованием.

Но кроме этого вам нужен С++? Если вы делаете свое кодирование на других языках, зачем беспокоиться о С++?

Ответ 4

Вы не должны использовать каждую функцию, предоставляемую языком. Я не использую setjmp/longjmp в C, несмотря на то, что он там. Я также не использую все аспекты коллекций Java.

Если вы считаете, что новые функции улучшат доставку кода (быстрее или выше качество или оба), используйте их. В противном случае игнорируйте их.

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

Я даже не успел использовать шаблоны С++ до перехода на Java, но я знал, для чего они нужны.

Это не всегда об изучении последних и самых больших. Программное обеспечение (по крайней мере, на вашей работе) касается доставки продукта. Это можно сделать в COBOL или FORTRAN, если вы достаточно владеете этим.

Ответ 5

Никто, кроме, может быть, Бьярн и Херб Саттер, не знает все С++. Как вы сказали, это невероятно огромный язык. Ожидая, что вы сможете использовать весь стандарт +, конкретные детали реализации вашего конкретного компилятора или компиляторов правдиво нереалистичны.

Но вам не нужно все знать, чтобы использовать С++. Вместо этого вы узнаете только подмножество С++, которое ценно для вас и ваших проектов. Не больно расширять ваши знания, но если вы не пишете компилятор С++, нет оснований знать все это. Даже если вы это сделаете, все люди, с которыми вы работаете, не будут.

Ответ 6

Так почему я должен учиться этому сложный, но исключительно мощный, язык? Я могу сделать 95% своей работы с python et al. С остальными 5%, я могу иметь дело с обычным старым С++ или C без хлопот.

Хорошо, по большей части вы отвечаете на свой вопрос. В настоящее время вам не нужно идти в ногу с кровоточащим краем С++.

Однако язык будет продолжаться. Через несколько лет некоторые из концепций, которые вы считаете сегодняшними потерями времени, будут широко использоваться. Когда-нибудь вы обнаружите, что в течение 5% использования "простого старого С++", который содержится в некотором примерном коде или коде, который вы используете, используется конструкция, с которой вы не знакомы. В этот момент вам нужно нажать на сеть и обновить новый "текущий" С++.

Это будет проблема? Конечно нет. Ты программист. Вы не отстаете от последних программных концепций в контексте своего 95% языка, который также меняется со временем. Вы, скорее всего, уже хорошо знакомы с концепциями и должны только ознакомиться с его синтаксисом С++, когда придет время, что вы должны их использовать.

Лично я надеюсь продолжать идти в ногу с С++, даже если моя карьера больше движется к Java или другому языку следующего поколения. Зачем? Я хотел бы сказать, потому что это меня интересует больше всего, и потому, что мне нравится сложность и выразительность всего этого. Скорее всего, это потому, что это был мой первый профессиональный язык; Я считаю это своим "родным языком".

Если это вас не интересует и не касается вашей работы или будущей работы, не беспокойтесь. Что не так с этим? Ничего.

Ответ 7

Мне сложно найти один экземпляр, где С++ 0x стал более сложным, чем С++ 98. Есть две вещи, которые действительно сложны:

  • Concepts.
  • Модель памяти

но первая была удалена снова (к счастью: стандартизация нереализованных функций никогда не разрабатывалась в С++, спецификации броска свидетелей, шаблоны extern, auto_ptr,...), а вторая не совсем то, что современное программирование язык может убежать. Это было вызвано извне, вызванное Intel и Co, помогающим взломать ваши программы, чтобы заставить их работать быстрее.

Остальное - это просто исправление неприятностей, которые каждый программист на С++ часто поражал в последние десятилетия.

В качестве побочного примечания: я нахожу это... забавным... посмотреть, как языки, такие как С#, заполняются языком запросов к базе данных (LINQ) и С++, подвергаются обмазке как раздутой.

Ответ 8

Хорошие ответы.

Производители компьютеров конкурируют за покупателей, программное обеспечение конкурирует за ваше дисковое пространство, а языки конкурируют за пользователей. Они делают это, пытаясь уловить друг друга.

Мне интересно, как долго мы увидим, как Fortran выходит с лямбда-выражениями: -)

Ответ 9

Вам не нужно знать каждый стандарт, который выдается наизусть. Тем не менее, это помогает узнать о большой картине. 5%, которые вы вводите в код, возможно, вы изобретаете случайное колесо. В зависимости от того, сколько времени важно, чтобы 5% (подумайте Парето), вам нужно позвонить.

Кроме того, любая конкретная причина (например, зависимость устаревшего кода), почему вы не можете переместить этот 5% в python?

Ответ 10

Сначала попробуйте посещать курс на С++ 0x и заставляйте вашу фирму платить за это:) Наши мозги могут поместиться в огромное количество знаний об утиль. Вместо того, чтобы проклинать и иметь программист-wtf-моменты, мы должны сначала научиться у пользователей программы и слушать мнения других людей/ноу-хау. Знания гораздо быстрее передаются таким образом.

Ответ 11

Мое предложение состояло бы в том, чтобы узнать новые ключевые слова С++ 0x (& FTW), но не пытайтесь изучить всю библиотеку lib. Используйте python для w/e, вы хотите, возможно, С# для приложений, а затем используйте С++ (0x), когда вам нужно сделать что-то мощное. и попросите stackoverflow и google о новом контейнере при прототипировании.

Вам не нужно использовать несколько языков,