LINUX.ORG.RU

Посоветуйте асинхронный бэкенд

 , , ,


2

7

Пишу в dev, а не web-dev потому, что C++ и другие якобы «не вэб языки» здесь в тему.

Буду в одиночку пилить сайт для определённых задач (не на заказ). Бэк, фронт, деплой, сопровождение, бизнес-специфичные занятия - всё своими руками и головой.

Есть некоторый опыт и хорошие впечатления от Django.

Нужны:

  • Хорошая производительность
  • Асинхронщина для любого IO а-ля нода
  • Выразительный ЯП со СТАТИЧЕСКОЙ типизацией
  • Хорошая документация и немаленькое сообщество (не просто API Reference, а ещё и Tutorials) и чтобы фреймворко-специфичные проблемы легко гуглились
  • Много батареек, как в джанге, обязательна ORM
  • И REST API, и Server Side Rendering // решил отказаться
  • Всякие Light, zero-dependency и embedded мне безразличны // но рассматривались тоже
  • Удобная работа с WebSocket // да, этот пункт я дописал гораздо позже

Лучше советовать не «язык Х» а «язык Х + фреймворк Y».

Также меня царь образумил в том смысле, чтобы делать SPA вместо server side rendering. Ведь перерисовывать ВСЁ по нажатию кнопки - это же антипаттерн отзывчивого интерфейса. Плюс везде, где можно заменю http на websocket - вместо целой страницы по тормозному хттп всего лишь небольшой json по шустрому вебсокету - это сильная разгрузка bottleneck’а на клиенте - обмен данными по сети.

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

UPD Решил брать NestJS + React + MobX. Если по ходу дела откажусь, то буду рассматривать Dart + Flutter, Scala + Play, Java/Kotlin + Spring/Boot.

В будущем обязательно поэксперементирую и запилю сайт крупнее хелловорлда на C++ и Rust и поделюсь с вами впечатлениями.



Последнее исправление: arturianec100 (всего исправлений: 5)

Ответ на: комментарий от bonta

Написал чел, у которого в профиле:

Не нравится: Питон, Раст, чисто-функциональные яп и яп со сборкой мусора.

Считаю что веб должен оставаться страничками, страничками с медиаконтентом и форумами, чатами

Консервативный, однако. Это свойство мозга - не желание, сопротивление новым идеям. Хочу как в 89-ом, тогда ты был, видимо, стройным и не лысым. И странички весили по 1 Кб - не рай ли

menangen ★★★★★
()
Ответ на: комментарий от anonymous

Тяп-ляп и в продакш0н. С сегфолтами и stackoverflow

anonymous
()
Ответ на: комментарий от anonymous

И что вы там делаете? Соревнуетесь в поедании бананов?

menangen ★★★★★
()
Ответ на: комментарий от anonymous

Нет, там всё иначе. Это другого плана секта.

Секта ругающих C++?

anonymous
()
Ответ на: комментарий от cloun1901

обосновывай потугу в контексте «когда тебе нужно»

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

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

Nervous ★★★★★
()
Ответ на: комментарий от menangen

а ты лично на си++ что-то отличное от студентческих лаб писал? Имеешь какой-то опыт? Или как у большинства хейтеров - «просто аллергия на язык».

Консервативный, однако. Это свойство мозга - не желание, сопротивление новым идеям.

У вас ошибка в суждениях. Вы видимо всё новое на ура хаваете, даже не рассуждая что в нём классно а что нет.

bonta ★★★★★
()
Ответ на: комментарий от Nervous

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

В ней и оператор есть ИдиНахер

anonymous
()
Ответ на: комментарий от bonta

В фактах не может быть ошибки. Это факт. Свершившееся событие - кресты устарели, кресты не нужны. Нужны они только тем, у кого уже на крестах написаны тонны говно-кода, либо апи на крестах (как у меня, к примеру) мне приходится писать на крестах

menangen ★★★★★
()
Ответ на: комментарий от anonymous

В ней и оператор есть ИдиНахер

Эквивалент exit()

anonymous
()
Ответ на: комментарий от bonta

Старые апи. Которые переписываем не на раст, а на свифт. Осталось совсем немного и будет всё на свифте

menangen ★★★★★
()
Ответ на: комментарий от anonymous

В ней и оператор есть ИдиНахер

Может быть @den73 пригодится

anonymous
()
Ответ на: комментарий от menangen

Как хорошее, непрерывно развивающееся, может устареть? о_O Если бы на ++ жил только на поддержки старых проектов - он не был бы в топе поппулярнейших языков.

bonta ★★★★★
()
Ответ на: комментарий от menangen

а там есть вся та свобода переопределять операторы, работать с указателями, хранить все что угодно в void* если потребуется, множественное наследование? Или кастрировали как Шарп и Джаву?

Ну и главное - отсутствие сборщика мусора?

bonta ★★★★★
()
Последнее исправление: bonta (всего исправлений: 1)
Ответ на: комментарий от bonta

Если бы на ++ жил только на поддержки старых проектов - он не был бы в топе поппулярнейших языков.

Если бы и ничего не делали, все равно был бы популярным.
Microsoft в свое время попыталась Windows на C# реализовать и поняли, что он для других целей /перед вистой была попытка/.

anonymous
()
Ответ на: комментарий от menangen

Ну допустим звучит интересно, а почему он не взлетел как тот же шарп или тот же раст больше на слуху чем Д?

bonta ★★★★★
()
Ответ на: комментарий от anonymous

У МС там сейчас каша из Си, потом всякие плюсовые обёртки над Си под плюсы для «классических приложений». Потом у них появился «управляемый Си++», в котором расширен синтаксис для поддержки работы со сборщиком мусора.

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

Вот мне идейно Хайку нравится - от ядра до системного софта - все на ++ написано.

bonta ★★★★★
()
Ответ на: комментарий от menangen

прям недостатка? Лично вы не видите случаев где отсутствие GC лучше?

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

Отсуствие сборщика в плюсах - это их преимущество перед другими ЯП, потому что даёт более полный контроль над ресурсами.

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

В итоге куча тормозного, объёмного софта.

bonta ★★★★★
()
Ответ на: комментарий от bonta

У МС там сейчас каша из Си, потом всякие плюсовые обёртки над Си под плюсы для «классических приложений».

Если не ошибаюсь, то Си создавался без всяких зависимостей от ru-time библиотек.
То бишь он предназначался всего лишь для разработки алгоритмов и конечно мог использовать библиотеки.
Ну а потом уже «продвинутые» прибили его гвоздями к run-time библиотекам.

Владимир

anonymous
()
Ответ на: комментарий от Nervous

Объясняю в формате «для самых маленьких». Это не свойство ts, это свойство любого нормального статически типизированного языка.

cloun1901
()
Ответ на: комментарий от peregrine

В модель акторов и MapReduce почти никто не умеет

Ой, правда? То-то на Эрланге начинают писать рабочий код практически сразу, как только синтаксис распробуют.

Miguel ★★★★★
()
Ответ на: комментарий от cloun1901

Кгхм. Все распространённые браузеры, базы, и ядра ОС — это дремучее легаси, с кучей кривого кода.

Miguel ★★★★★
()
Ответ на: комментарий от anonymous

Если не ошибаюсь, то Си создавался без всяких зависимостей от run-time библиотек. То бишь он предназначался всего лишь для разработки алгоритмов и конечно мог использовать библиотеки.

Если не найду кем то разработанный, то свой создам.
От него мне нужно всего лишь:

  • управляющие операторы;
  • строки /но эффективные/;
  • struct и возможность использования динамических объектов;
  • использование /при необходимости/ метадата базы;
  • модули и библиотеки;
  • интеграция с Си

Ни каких #include, template, class, …

Почему возникла необходимость?
Для более эффективного и простого использования API, обеспечивающего возможность работы с динамическими объектами.

И конечно возможность на лету создания и загрузки/исполнения алгоритмов.

PS: О многом не сказал …
Как-то так.

А с C++ каши много не сваришь /для моих задач/.
Попробуйте на лету создать сложный объект с использованием STL, class, … о котором компилятор ни чего не знает.

Владимир

anonymous
()
Ответ на: комментарий от Miguel

А это тут при чём?

При всем. Если праздно звиздеть на форумах о том, какие сферические кони в вакууме лучше – розовые или голубые, то тогда можно глубокомысленно заключить, что генерики в Scala много лучше, чем шаблоны в C++. И даже в качестве доказательства выхеренный пример привести, который на практике никому нахер не упал, даже вам самому.

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

Так что на форуме вы можете рассуждать о статическом контроле за одинаковостью неизвестных в компайл-тайме размерностей. Тогда как в реальном коде возмете array<T, N> и вам этого за глаза хватит. Более того, даже array<T, N> вам придется из кода выбросить, если окажетесь в команде со среднестатическими разработчиками, в которой вы будете больно умным.

eao197 ★★★★★
()
Ответ на: комментарий от peregrine

Вакансии ничего не умеют, умеют люди. Кроме того, речь была как раз про «не умеют, но учатся».

Но вообще это реально одна из основных фишек Эрланга — на нём даже макаки начинают в короткий срок выдавать работоспособный код. Правда, оборотной стороной является наличие в исходниках необычно высокого процента кода, написанного макаками (знаем, плавали).

Miguel ★★★★★
()
Ответ на: комментарий от eao197

Это всё замечательно, но меня попросили прояснить моё замечание про отсутствие дженериков в плюсах. Мне кажется, это я сделал. При чём тут «решать реальную проблему»?

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

Ну это не важно, легаси или нет. Важно что всё остальное строится на основе этих и некоторых других компонентов(которые тоже на си/пп). Без этого легаси не было бы ничего.

cloun1901
()
Ответ на: комментарий от menangen

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

igloev
()
Ответ на: комментарий от cloun1901

Это как раз важно. Потому что это, собственно, единственное преимущество плюсов: необходимость поддержки старого кода.

И, кстати: сам по себе C, без ++, по-моему, вполне приличный язык. У него как раз есть узенкие области, где он идеален.

Miguel ★★★★★
()
Ответ на: комментарий от anonymous

И конечно возможность на лету создания и загрузки/исполнения алгоритмов.

Кстати не маниловские фантазии …
В 1С вместо их родных переменных и объектов использую свои, но
для эффективности и простоты использование нужен все же не навороченный язык программирования.
Кстати скорость исполнения кода в 1С не теряется, а это уже

не плохо

PS: «Где сложно там дураков со ста»

Владимир

anonymous
()
Ответ на: комментарий от Miguel

Ты мне ответь. Я, да и не только, всё думаем о твоих куллстори. Каким образом можно статически гарантировать идентичность рантайм-значений? Это невозможно в этой реальности.

Он тебе какую-то херню отвечает, поэтому ответь мне. Вот я тебе могу на С++ написать что угодно, но ни я, ни кто-либо с кем я говорил - не понимают, что тебе нужно.

anonymous
()
Ответ на: комментарий от Miguel

единственное преимущество плюсов: необходимость поддержки старого кода.

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

cloun1901
()
Ответ на: комментарий от Miguel

При чём тут «решать реальную проблему»?

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

Тогда как C++ – это практичный язык для решения реальных задач.

eao197 ★★★★★
()
Ответ на: комментарий от Miguel

И, кстати: сам по себе C, без ++, по-моему, вполне приличный язык.

Она как. Ну тогда вопросов больше нет. Извините, что побеспокоил.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Тогда как C++ – это практичный язык для решения реальных задач.

Угу, только весьма посредственный. Но это не имеет никакого отношения к обсуждаемому вопросу.

Miguel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.