170 похожих чатов

Народ, как думаете можно ли переключиться на с++ но при

этом продолжить заниматься веб-разработкой? Я сам javascript/typescript full-stack веб-разработчик и пишу сайты или точнее динамические spa-приложения (которые помимо работы в браузере могут быть упакованы в мобильные приложения через cordova или десктоп-приложения через electron) и появилось желание переключится на с++ посему возникли вопросы:

1) Как много народу пишут бэкенд на плюсах, много ли вакансий?

2) Как много народу которые пишут фронтенд на плюсах? Поскольку в браузерах уже несколько лет как появился webassembly а язык с++ умеет компилироваться него то я не вижу никаких преград к тому чтобы писать сайты или сложные динамические spa-приложения которые будут работать в браузерах точно так же это делают на javasscript.

3) Как много народу пишут мобильные и десктопные кросс-платформенные приложения на плюсах? В javascript-индустрии популярна разработка мобильных приложений c использованием cordova (враппер поверх webview для anroid и ios) и десктопных приложений с помощью еlectron (враппер поверх webview для windows/linux/ios). А webview это по сути контент-часть браузера которая предоставляет апи для написания ui/gui интерфейсов и написав один раз код для webview оно будет одинаково выглядеть и работать на всех платформах. Можно сказать что webview это некая кросс-платформенная gui-библиотека которая предоставляет апи для создания html-элементов/виджетов (которые стилизуются установкой css-стилей) с помощью которой разработчик может написать фронтенд/ui-приложение для работы не только в браузерах но и под все мобильные и все десктопные операционные системы.
Как с этим обстоит дела в плюсах? Поскольку сами браузеры написаны на плюсах то это значит что их webview уже предоставляет готовое с++ апи которое можно вызывать напрямую (без javascript) и соотвественно нет никаких преград к тому чтобы пилить кросс-платформенные приложения на html/css используя с++ (точно так же как как это делают на javascript)

30 ответов

21 просмотр

Бэк как правило пишут на java(Spring\JavaEE), EcmaScript (nodejs) или php А зачем вам так заморачиваться с C++ ?

вебассембли и плюсы в фронтенде это возможно будущее, но пока я не слышал особой популярности(никто ещё не успел попробовать мб)

Kelbon
вебассембли и плюсы в фронтенде это возможно будущ...

поддерживаю - оно пока что очень сырое и про этот способ нужно думать только если есть очень веские причины

Богдан- Автор вопроса
DarkPerl
Бэк как правило пишут на java(Spring\JavaEE), Ecma...

Если вкратце то мне надоело возиться с различными нюансами джаваскрипта которые влияют на производительность и которые должен знать сениор javascript-разработчик. Вот пример подобных статей и нюансов https://habr.com/ru/post/350018 https://habr.com/ru/company/ruvds/blog/350240 https://habr.com/ru/post/303542 В с++ с этим на порядки проще - предсказуемая модель работы и расположение объектов в памяти, отсутствие оверхеда (хедеров у объектов) ну и главное - отсутствие GC. Ну а с последними стандартами плюсов начиная с замыканий в с++14 заканчивая корутинами в с++20 по удобству и возможностям плюсы теперь стали не хуже чем тот же джаваскрипт

Богдан
Если вкратце то мне надоело возиться с различными ...

ну между джабаскриптом и крестами есть еще выбор - зачем сразу кресты то

Богдан
Если вкратце то мне надоело возиться с различными ...

Богдан, вы глубоко копаете 😊👍 Но, все дело в том, что мы всегда чем то платим за удобства. Например, скорость разработки программ и их сопровождение. А быстродействие JS я бы оставил на откуп разработчикам движка и искал бы алгоритмические и архитектурные проблемы. Возможно, там есть узкие места. Если все возможности исчерпаны, то можно подумать о том чтобы написать куски кода на Asm\С\С++ и вызывать этот код из языка более высокого уровня. Такие механизмы есть практически в любых языках.

Богдан- Автор вопроса

Я просто хочу заниматься full-stack разработкой (писать фронтенд в виде сайтов/приложений для браузеров, мобилок и десктопов а также бэкенд для их работы и даже high-load backend на случай взлета стартапа) на одом и и том же языке. Потому что зачем выбирать один язык для фронтенда а другой язык для бэкенда а третий язык для мобильной/десткопной версии приложения? Чтобы испытывать постоянное переключение контекста и дисонанс из-за разного ситаксиса, код-стайла различных подходов и разной экостистемы? Чтобы в три раза раза больше времени тратить на подучивание новых версий языков и различных нюансов и языковых особенностей? В общем смысла в постоянном переключении между языками нет и до появления поддержки webassembly в браузерах единственным таким full-stack языком на котором можно было писать не только сайты но desktop/mobile приложения и бэкенд был javascript а с появлением webassembly теперь можно выбирать между другими языками. И если сравнить популярность и количество разработчиков а также возможности языка то с++ тут вне конкуренции. А благодаря отсутствию GC на с++ еще можно писать high-load сервера и базы данных и альтернативой ему среди других языков может быть разве что только rust который местами непонятно переусложнен (я так и не разобрался как на нем написать двухсвязный список) и он на порядки менее популярен и на нем намного меньше разработчиков (язык си как подможество c++ преподают в школах и вузах что подразумевает миллионы потенциальных разработчиков а про раст я такого не слышал) ну и наконец на расте на порядки меньшая экосистема и написанного софта чем на c/c++.

Богдан
Я просто хочу заниматься full-stack разработкой (п...

в раст просто встроят внутрь языка двусвязный список и им нужно будет пользоваться под unsafe ))

Kelbon
в раст просто встроят внутрь языка двусвязный спис...

Шутки шутками, а сколько раз тебе пригождался неинтрузивный двусвязный список на проде?

Dmitriy [Отпуск]
Шутки шутками, а сколько раз тебе пригождался неин...

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

Kelbon
ну недавно на корутинах делал, правда односвязный....

Односвязный и интрузивный, а я задал вполне конкретный вопрос)

Dmitriy [Отпуск]
Шутки шутками, а сколько раз тебе пригождался неин...

0, вообще написать интрузивныц двусвязный проще чем односвязным, каждую ноду циклишь на себя, и dummy хранишь в списке, красота же С односвязным же начинаются проверки на null :(

Богдан
Я просто хочу заниматься full-stack разработкой (п...

Вы когда что-то хотите переписать на плюсы - вам нужно очень очень очень хорошо подумать

Богдан
Я просто хочу заниматься full-stack разработкой (п...

Пощупайте qt под wasm. Сразу поймёте надо оно вам или нет.

Arelav
0, вообще написать интрузивныц двусвязный проще че...

Оба просты, непростость возникает в хранении size/back.

Богдан
Я просто хочу заниматься full-stack разработкой (п...

Я вас понимаю ) Во-первых, с языками и технологиями во многом сложилось исторически. Во-вторых, вы представляете себе front написанный на C++ ? ))) Написать то можно, но кто потом этот код будет поддерживать ? Например, Java была придумана не просто так ) Решались вопросы переносимости, упрощения и скорости разработки, безопасности и др. Люди хотят думать о предметной области больше, нежели об управлении памятью. То есть, я хочу сказать, что бизнес-логика как правило пишется на более подходящем для этого языке с необходимым уровнем абстракции. А низкоуровневые вещи пишутся на С\С++ и заворачиваются в удобные обертки и предоставляется интерфейс наружу. Я не хочу думать о выделении\освобождении памяти, примитивах синхронизации и тд и тп. Другими словами, язык как выразительно средство должен помогать мне в реализации задач, а не заставлять меня думать о том как мне не получить спагетти код на выходе.

Dmitry Sokolov
Оба просты, непростость возникает в хранении size/...

Ну я не утверждал что сложные, утверждал что один проще и красивее

Богдан- Автор вопроса
DarkPerl
Я вас понимаю ) Во-первых, с языками и технология...

А чем с++ плох для написания бизнес-логики или фронта или логики какой-то предметной области? Я честно не понимаю какой смысл мне как с++ программисту юзать какой-то там скриптовый язык со своим синтаксисом чтобы писать какую-то там "важную бизнес-логику" ? Аргумет про "не думать про ручное управления памяти" не уместен потому что всегда будет некий слой с которым будет работать разработчик бизнес-логики и этот слой будет автоматически заниматься управлением памяти (через тот же shared_ptr или другие средства) и другими задачами. Ок, пожалуй синтаксис "user->profile->firstName" в плюсах менее удобен чем "user.profile.firstName" как в javascript но это мизерный недостаток а в остальном есть те же условия, циклы, объекты, классы, лябда-функции, замыкания, корутины - в общем если собрать все возможности последних стандартов вроде с++20 и с++23 то я не уверен что можно будет найти какую-то фичу которая есть у популярных скриптовых языках для написания "бизнес-логики" и которой нет или нельзя реализовать в с++ (кстати может кто-то подскажет чего еще не хватает в плюсах?)

Богдан
А чем с++ плох для написания бизнес-логики или фро...

а с какими еще технологиями и насколько глубокий вы имеете опыт?

Богдан
А чем с++ плох для написания бизнес-логики или фро...

Имхо, здесь проблема плюсов не в том, чего у них нет, а в том, что они оставляют слишком большой простор для "пострадать на ровном месте", "увязнуть в споре о трактовках стандарта" и... просто для различного оверинжиниринга Кроме того, сам факт наличия неопределенного поведения не способствует написанию бизнес-логики. Лучше исключение, чем краш или форматирование диска И в любом случае, я бы предпочел специализированный язык разметки вместо general purpose language даже вне контекста плюсов

Богдан
А чем с++ плох для написания бизнес-логики или фро...

На мой взгляд, удачный альянс предлагает Qt: - Система сигнал/слотов - реактивность - QML - декларативный UI - JS/Property Binding- презентационная логика - С++ - бизнес логика Скорость разработки UI, верифицируемость бизнес-логики выше всяких похвал

Богдан- Автор вопроса
Anatoly Shirokov
На мой взгляд, удачный альянс предлагает Qt: - Сис...

А зачем мне Qt если есть более распространенная и производительная кросс-платформенная библиотека для построения gui которая прекрасно работает на windows/linux/macos/android/ios и называется она Blink и является редер-движком браузера хрома и предоставляет c++ апи для построения дерева html-виджетов (и их стилизации через css-свойства). Главным отличием Blink от Qt является то что написав gui приложение на с++ поверх blink я дальше могу скомпилировать это приложение в webassembly и выбросить эту жирную библиотеку blink заменив вызовы ее апи на вызовы dom-api через js (которые являются идентичными с++ апи) и получить по сути работающее в браузере сайт-проложение которое будет рендерить gui через html/css и будет занимать сравнимый с javascript объем при загрузки страницы (а может быть и меньше так как webassembly будет компактнее чем js). А как Qt-приложение будет работать в браузере и сколько мегабайт нужно будет загрузить юзеру при заходе на сайт?

Богдан
А чем с++ плох для написания бизнес-логики или фро...

В плюсах много чего не хватает *Ждун Freestanding*

Богдан
А зачем мне Qt если есть более распространенная и ...

я же просил - с продолжением вот сюда: https://t.me/fludpac

Богдан
А чем с++ плох для написания бизнес-логики или фро...

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

ИМХО, на плюсах не стоит писать просто потому что захотелось, надо на все 100% понимать почему именно плюсы, если реально веских причин нет, то я бы советовал выбрать более современный и безопасный язык

Kirill Ochnev
ИМХО, на плюсах не стоит писать просто потому что ...

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

Похожие вопросы

Обсуждают сегодня

Ребят в СИ можно реализовать ООП?
Николай
33
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем доброго вечера. Разрабатываю 32 раз. приложение в Delphi. Столкнулся с тем, что стандартный  TFilestream  не работает с большим файлом > 2 ГБайт (после вызова функции see...
Vadim Gl
16
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
добрый день. Подскажите, есть сайт на 1.4.7 и я хочу обновиться, особо ничего не меняя. мне выбирать версию 1.4.35 или третью ветку? и можно ли обновлять "как есть", или нужно...
Digital Cat
12
Кто кодит под Лазарем на винде, у вас аналогично VCL переопределяются CreateWnd и CreateParams для конкретных классов контролов и все заданные флаги влияют?
А Андрей
11
У меня задача: написать брокер сообщений. Очереди и потребители. Очереди поддерживают приоритеты. Очередь отдает сообщения, только обработчикам с соответствующими характеристи...
Aleksandr Filippov
2
народ, плиз хелп, всю голову сломал себе уже... разве может быть так, что GetProcAddress( GetModuleHandle( "kernel32.dll" ), "SetThreadDescription" ) вернёт ненулевое значение...
Iluha Companets
12
А, ты про текущую реализацию? Нет конечно, я бы сделал правильно - сейчас там гавнокод
Александр (Rouse_) Багель
6
Карта сайта