Где С++ действительно светит?

Я знаю C и Python, и я продвигаюсь к другому языку для обучения. Моя проблема в том, что мне нравится учиться чему-то делать (например, вносить свой вклад в какой-то проект или делать что-то потрясающее, а не скучную равную алгебру).

Я хотел бы услышать предложения о полях, в которых сияет С++, и где я могу найти интересное программирование на С++. (Для полей я имею в виду сетевое/графическое программирование/алгоритмы/игры...)

Я подтверждаю, что меня интересуют проекты/разработки с открытым исходным кодом.

Ответ 1

Я расскажу, в каких полях я использую язык и почему я использую язык над другими. Возможно, вы можете решить, могут ли мои причины квалифицироваться как "сияет".

Какие поля:

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

Почему:

  • Я хочу написать код, который переносится в широком масштабе архитектур. От небольших 16-битных встроенных систем до крупных корпоративных платформ. Это потому, что мне не нравится решать одни и те же проблемы снова и снова. Компиляторы С++ доступны для большей целевой платформы, чем любой другой язык OO. Я теряю эту способность на очень маленьких (то есть 8-битных) системах, но я больше не трачу много времени в этом пространстве.

  • Системный код может быть записан (например, драйверы устройств, драйверы FS и т.д.), поскольку для них требуется язык, который компилируется в собственный код. При тщательном выборе языковых функций и используемых библиотек он может быть почти таким же компактным, как C.

  • Широкое использование среди скомпилированных языков, поэтому есть опыт работы с экспертами, а также доступные библиотеки и исходный код.

  • Детерминированное и предсказуемое поведение при длительных запусках (от нескольких месяцев до нескольких лет), поскольку схема управления памятью может быть тщательно отобрана для потребностей приложения.

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

Надеюсь, это немного помогло.

Ответ 2

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

  • С++ создает чрезвычайно жесткий и быстрый код и, следовательно, подходит для большинства задач, с возможностью беззаботного исправления в некоторых ассемблерных кодах для небольших деталей, которые недостаточно быстры. Включение C-кода в Python для производительности не так просто.
  • С++ позволяет мне рисовать из нескольких парадигм программирования: метапрограммирование, объектно-ориентированное программирование, функциональное программирование; они доступны, мне не нужно пытаться подражать любому из них, чтобы заставить алгоритм работать.
  • С++ позволяет мне писать исключительно надежный и управляемый код, используя преимущества RAII (гарантированное удаление) и Pimpl (двоичная совместимость, компилятор firewall) идиомы.
  • С++ позволяет мне выбирать, когда я хочу заплатить за что-то и, если не хочу.
  • С++ позволяет мне работать со многими существующими библиотеками и использовать опыт и работу. из десятков тысяч программистов в мире. Это требует некоторого поиска, поскольку они не связаны с компилятором, но Boost упрощает работу в эти дни, а затем есть Google:)

Конечно, есть недостатки, чем больше свободы вы получаете, тем больше вероятность того, что вы повеситесь (или стреляйте в ногу, как идет популярная аналогия). Но, будучи настолько свободным, мне трудно заставить себя программировать на другом языке.

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

Ответ 3

IMO, самая сильная сила С++ может работать практически на любом уровне абстракции. Многие языки предоставляют (более или менее) один уровень абстракции. Обычно довольно сложно "спуститься" на более низкий уровень абстракции (вообще). Хотя вы можете создавать более высокие уровни абстракции, несколько языков предоставляют возможности, позволяющие этим частям работать с (или как) остальным языком. Это может привести к "кускам", которые являются точными и разумными индивидуально, но все же трудно собрать в полную программу, которая остается последовательной.

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

Ответ 4

В мире OSS (который, как я полагаю, вас интересует), С++ используется для программирования графического интерфейса в KDE project ( см. Qt).

Но мое общее замечание состоит в том, что С++ больше используется в коммерческих приложениях (играх, приложениях с тяжелой графикой), тогда как в проектах с открытым кодом C предпочтительнее (в сочетании с некоторыми высокоуровневыми языковыми оболочками, такими как Python).

Ответ 5

Intel и Nokia объединяются за смарт-устройством с именем MeeGo. И его основная структура графического интерфейса Qt. Какой хороший С++ API.

Ответ 6

Для небольшой исторической перспективы прочитайте проект Stroustrup Design and Evolution of С++.

Stroustrup работал над симуляцией еще в свои школьные годы, и нашел Simula 67, чтобы быть отличным языком для этой цели, легко для записи.

Тем не менее, Simula была совершенно неадекватна для фактического использования, поскольку она была настолько неэффективной. Страуструп был вынужден переписать материал в BCPL, который был очень примитивным предшественником C и нашел его чрезвычайно болезненным.

После этого он был настроен придумать язык, который был столь же эффективен, как и C, но который поддерживал бы программирование в стиле Simula. Результат был сначала назван C с классами, затем С++.

Однако С++ не останавливался на достигнутом. Он приобрел другие функции, такие как шаблоны. Это позволило использовать стандартную библиотеку шаблонов. Его создатель, Степанов, утверждал, что не нашел другого языка, на котором он мог бы реализовать его до его удовлетворения. (Он казался немного сварливым, чтобы снова ответить на вопрос в форуме Lisp.)

С++ сияет при эффективном применении передовых и потенциально странных методов программирования.

Ответ 7

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

Ответ 8

Большинство игр написаны на С++, потому что они относительно низкоуровневые и нуждаются в доступе к системным API. Они много полезны для объектно-ориентированного программирования.

Ответ 9

C + + означает, что он может делать что-то только C, и что-то еще другие могут делать.

Если вы хотите увидеть ее блестящую сторону, вы можете назвать ее все вокруг. Когда вы считаете это бесполезным языком, вы можете взять ответ внизу: -)