С++; Дескоптные приложения или веб или операционные приложения?

Ссылка скопирована
1 ответ

приветствую! уже 1,5 года изучаю с++, алгоритмы и структуры данных. Достиг, как по мне +нормального уровня и хотелось бы уже перейти к написанию программ, которые могут применяться в реальной жизни. Начал практиковать qt, но как я понимаю написание дескоптных приложений на плюсах - такое. Тогда хочу попробовать разработку ПО, cофтов, драйверов и тд. Что можете посоветовать по изучении этой темы?
PS в основном я специализируюсь на вебе и можно ли на с++ что нибудь в нем писать? в интернете видел только людей якобы "мазохистов", которые пытались так делать

Дополнительно:

Тогда хочу попробовать разработку ПО, cофтов, драйверов и тд

А разве десктопные приложения - это не ПО?
И что такое "софты"?
И почему ты считаешь, что десктопные приложения на C++ не пишутся? C++/Qt - наоборот одно из самых востребованных направлений на C++.

  • 1.5 года изучаете язык программирования, и не знаете что на нём можно написать? Боюсь вы впустую потратили полтора года. Ответ ищется в гугле за 15 секунд
  • Если хочется драйвера, то тебе нужен WDK:
    https://learn.microsoft.com/en-us/windows-hardware...
    На Linux драйвера на C++ не пишутся - там долгое время только Си был, а сейчас ещё и Rust.

    Веб на C++ можно писать, но это и правда мазохизм (говорю как человек, который видел веб на C++)
    Но если очень хочется, то есть:
    1. emscripten для wasm, если хочешь на фронте что-то делать
    2. Несколько фреймворков для бэка: яндексовский userver, Drogon из топа techempower, libhttpserver, POCO, да и ещё целая куча разных (кажется их даже больше, чем для какого-нибудь nodejs)

    • Кстати, как куратор тега веб разработки, на чем пишется веб бекенд обычно (языки, фреймворки) и, в частности, highload.
    • Dmitrii, на разном. Highload - это скорее про подход, чем про конкретный язык.
    • Dmitrii, зависит от задач и что считать highload, например на го в каждой вакансии сейчас пишут про то, что проекту нужен брокер т.к. у них "highload", но по сути им хватает дефолтных решений, а брокер вообще хз зачем им. Как вам ответили выше, то сильно зависит от задачи, т.к. бывают задачи которые хорошо масштабируются и в целом можно писать не очень производительный код, но использовать больше серверов и в целом система будет highload. И в целом вопрос некорректный, т.к. с одной стороны некоторые языки типа c++ считаются очень производительными by design, но по факту большинство не умеет использовать их производительность. Например есть сайт где тестируется производительность фреймворков, но в реальности это не совсем объективная штука, т.к. там рассматриваются довольно простые случаи и часто используются не совсем оптимимальные подходы. Например для го используются fasthttp(который может использоваться для higload), но при этом для сереализации json используется дефолтный маршалер, который относительно медленный, поэтому к таким тестам всегда стоит с настороженностью подходить.
    • calculator212,

      проекту нужен брокер т.к. у них "highload", но по сути им хватает дефолтных решений, а брокер вообще хз зачем им

      Хз где такое пишут, но брокеры сообщений часто нужны не из-за хайлоада, а из-за гарантий доставки/порядка при обработке каких-то событий или потоков данных.

    • Василий Банников,

      Хз где такое пишут,

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

      но брокеры сообщений часто нужны не из-за хайлоада, а из-за гарантий доставки/порядка

      Ну для хайлода согласен, что он не всегда нужен. Но и если нагрузка на сервер 100-200rps ценность брокера тоже немного сомнительная (на мой взгляд).

    • calculator212, лучше на конкретном примере рассматривать всё-таки, ибо можно придумать контрпример, где и с 10k rps в архитектуре просто не нужен брокер сообщений (+ не надо опускать слово "сообщений"), и наоборот в сервисе, в котором событие происходит дай бог раз в минуту - полезно иметь персистентную очередь.
    • Василий Банников, я понимаю, что highload больше про подход, мне скорее был интересен ваш опыт, если таковой есть.
    • Dmitrii, да просто не говнокодить, замерять производительность, следить за метриками.
      По ситуации добавлять больше инстансов, профилировать узкие места.
      Понимать, откуда берётся нагрузка.
      Например мы хайлоад на Rust пишем

    На С++ вы можете реализовать весьма и весьма многое.
    Например, различные графических приложений с использованием SDL, SFML, raylib, QT, imgui и др. (и это лишь самое известные библиотеки/фрейворки).
    Для веба есть oatpp, crow, fastcgi. (довольно большое число сайтов использует nginx, который написан даже не на С++, а на С.)
    Работа с видео: ffmpeg, gstreamer, opencv.

    Если есть желание разобраться с ОС и драйверами, то тут вам дорога в API самих ОС (основа которых тоже зачастую на С писалась). Зачастую драйвера пишут на С/С++ (как и прошивки для различных IoT устройств, которые иногда и нуждаются в драйверах).

    Ответы:

    PS в основном я специализируюсь на вебе и можно ли на с++ что нибудь в нем писать?

    Если речь про бек, то да можно. Часто используют boost/asio или просто asio, есть еще что-то от яндекса. Есть проекты и попроще, где всё в одном хидере лежит.

    в интернете видел только людей якобы "мазохистов", которые пытались так делать

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

    • то есть лучше не пробовать, тк есть php, js, ну или только из интереса?
    • calculator212 разве только Яндекс использует С++ для веб бека? судя по первым запросам в гугле, С++ для бека используется во всех топовых компаниях. Тем более, не уверен, что все то легаси с нулевых/десятых годов (aka core) переписано на современные языки для большинства сервисов.
    • Dmitrii,

      разве только Яндекс использует С++ для веб бека

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

      Тем более, не уверен, что все то легаси с нулевых/десятых

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

    • Harlen,

      то есть лучше не пробовать, тк есть php, js, ну или только из интереса?

      Ну тут только вам решать, но как я понял у вас нет опыта работы ни в беке, ни в c++, поэтому затея на мой взгляд труднореализуемая, т.к. для бека есть много других языков python/node/php/java/go, которые популярнее чем c++(для бека). С беком на c++ есть еще такая проблема, что особо обучабщих материалов нет. У меня первый язык тоже был c++, потом перешел на го и на c++ писать бек надеюсь никогда не буду.

    Начал практиковать qt, но как я понимаю написание дескоптных приложений на плюсах - такое. Тогда хочу попробовать разработку ПО, cофтов, драйверов и тд. Что можете посоветовать по изучении этой темы?

    Что значит "такое"? Сложно, долго, неудобно?
    Так да, программирование это не тяп-ляп и готово, это долго, скучно, неудобно.

    Что такое разработка ПО и софтов по-вашему? Или десктопные приложения это не ПО и не софт? А что тогда?

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

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

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Дмитрий К. Ответ

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

    Если вы заинтересованы в создании быстрых и эффективных приложений, работающих на уровне операционной системы, то C++ может быть хорошим выбором. C++ обеспечивает высокую производительность и позволяет управлять памятью непосредственно, что особенно важно для разработки операционных приложений.

    Десктопные приложения также часто разрабатываются на C++, особенно если требуется работа с низкоуровневым оборудованием или высокая производительность. Однако существуют и другие языки программирования, такие как Java или C#, которые также хорошо подходят для разработки десктопных приложений.

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

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

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

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно