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)

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

Тебя-то, может, и не интересует. А вот того, кто будет потом рефакторить это дело (это, кстати, тоже можешь быть ты, только через пару месяцев) — очень заинтересует.

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

того, кто будет потом рефакторить это дело

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

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

без типа ничего с объектом не сделать

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

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

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

В динамике так и есть. В статике - нет. Зачем ты это написал?

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

Линус в 1991 году тоже не понимал, чего хочет, судя по заявлению в рассылке, что линукс, скорее всего, никогда не будет работать на архитектурах, отличных от 386 :).

hobbit ★★★★★
()

Вот только меня пугает нативность крестов

А я ей наслаждаюсь. :)

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

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

Также я заметил, что большинство весьма фичастых веб фреймворков на C++ - Qt based. Какая принципиальная разница - фрейм на культях или нет?

Если альтернатива такая же богатая, как Qt, разницы нет, ваш К.О. Вот только покажите мне такую альтернативу. Да, после бурного развития последних 10 лет уже очень многое можно сделать на STL+boost. К сожалению, сейчас из Qt начали выпиливать фичи, выгодно отличающие её от альтернатив, я про работу с неюникодными кодировками, которые у пользователей весьма много где никуда не девались.

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

В современных языках, если ты не хакаешь систему — не существует, да.

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

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

hobbit ★★★★★
()

Я бы посоветовал NestJS, потому сам его недавно освоил более менее и потому что кое-где использую и Django. Но, на самом деле, не факт, что зайдёт (лично мне Nest не особо понравился).

Вообще если ты с Django слезаешь, посмотри в сторону FastAPI. Да, типизация там не статическая, но зато это Python, который ты и так уже знаешь.

Но надо понимать, что если ты ищешь альтернативу Django, то её как бы нет. Точнее есть - это Ruby on Rails, но ты же асинхронщину хочешь.

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

Чего это не хотят? В Objective-C взяли и запилили сборщик, и всё летало на дохлых мобилках. А то, что ты кинул мне библиотеку - так то библиотека, а не стандартная либа/рантайм

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

Кому и кобыла невеста. GC удобен, GC не ошибается как макаки крестовые с сегфолтами - тут регулярно темы всплывают про сегфолты на крестах

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

Где чепуха? Быстро ответил за чепуху. Аргументы есть? Балаболка

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

Ага, тока TS на голову выше крестов хотя бы в том, что типизация там опциональная. Хочешь - ваще пиши на es6 javascript - и это будет валидный typescript =)

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

Ой, посмотрите, обиделся, что в сраном чатике мужского гомо-клуба нет ни одной девочки

В клубе девок полно, а у вас там какой-то рассадник жёлто-голубых мужчинок

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

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

Никого не интересует что ты там считаешь, кресты движутся к сборщику мусора маленькими нелепыми шажками - пока тока на умных указателях, а дальше слижут всё с Rust или Swift

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

C - это asm на стероидах. У него один недостаток - скудная стандартная либа, не то, что у Go

Но да, его проектировали профи. В отличии от крестов, где создатель козявку ел в прямом эфире - погугли

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

То есть из твоего утверждения следует, что в какой-нить Java один из gc ошибается. Можно пример на java? Почему на java - там прекрасные gc, есть из чего выбрать. В путь

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

Все GC ошибаются, нельзя предусмотреть очистку для всех случаев.

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

GC ошибается - он зачем-то тормозит мне софтину на 100 миллисекунд и заставляет чего-то ждать. Это такая фатальная ошибка, что я уже не знаю что хуже.

igloev
()

erlang - ассинхронщина на достойных уровнях

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

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

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

case class Heap[T](head: T, rest: Option[Binary[(T,T)]]) - где здесь рекурсия, которая у тебя здесь:

template<typename T> class Heap {
  T head;
  Heap<std::pair<T, T>> *rest;
}
anonymous
()
Ответ на: комментарий от menangen

Да не только околосистемной, любой ресурсоёмкий софт лучше без GC писать, те же графические редакторы, ide (Jetbrains продукты, Eclipse нереально жеркие и тормозные, а их конкуренты на Си++, в виде Kdevelop, VisualStudio, QtCreator - быстрые и мало жрут), игры.

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

GC удобен, GC не ошибается

Gc не бесплатен.

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

Никого не интересует что ты там считаешь, кресты движутся к сборщику мусора маленькими нелепыми шажками - пока тока на умных указателях, а дальше слижут всё с Rust или Swift

C++ не движутся ни к какому GC, его сила как раз обходиться без GC. C++ с GC давно уже есть это язык D, создатели которого как раз, не очень успешно, сейчас стараются научить его жить без GC. Одна из причин провала D, как языка притендуещего на нишу C++ это привязка системной библиотеки к GC.
В rust нет GC и управление памятью там такое же как и в С++, RAII и умные указатели.

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

Я тебе уже 10 раз говорил - не может C++-ide работать быстро. То, что твой колхозный креакл не жрёт 10 гигов - это следствие лишь того, что это не ide, а говно. Оно не может в С++.

Любая ide, которая может в С++ будет жрать дожопы и тормозить. Так работает шланг. Весь комплишен в любой С++-ide сделан на шланге, а свойство этого комплишена таково, что он парсит весь файл на каждое дополнение. Ну до места дополнения. При этом параллельно он парсит его ещё раз уже полностью, чтобы родить ast на базе которого код покрасить. Там есть разные режимы, но нормальная поддержка языка полного разбора.

Вот возьми clang, собери свои инклюды в pch и собери. Вот на каждый твой ввод будет примерно тоже самое запускаться. А если ты там где-то инклюд поправишь - он там жопа будет такая.

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

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

https://t.me/proriv_zaparti

По поводу планируется - я уже об этом писал. На тему С++ мне писать лень, потому как С++-20 не завезли ещё. Рефлексия в дерьме. Это не починить. С высокой долей вероятности ничего по С++ я писать не буду, Если только на вопросы отвечать. Задавайте.

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

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

Вместо С++ будет царьяз, но когда он будет пока непонятно.

Можно назвать проще

ЯЦарь

Каков он будет?

Владимир

anonymous
()

Зачем тебе асинхронный стек для 3.5 посетителей в неделю? Ты так никогда так не осилишь свой сайт. Бери пхп и не выделывайся.

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

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

Это от разработчика зависит.
У меня динамические объекты, которые можно создавать/использовать в любом языке программирования /и в скриптовых/.
По крайней мере в 1С все ok /а это типичный скриптовый язык/.

В объектах и семантика доступна /любой сложности/.

В 475 стандарте C++ ее обязательно добавят

ИМХО не нужно «обобщать», так как все и обо всем ни кто из нас не знает.

Владимир

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

В объектах и семантика доступна /любой сложности/.

И для объекта и для полей.
Да и объекты можно динамически изменять …, …, …

Владимир

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

Немножко об участии в форуме …

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

Владимир

anonymous
()

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

человек и с большим опытом крестов не может писать без сегфолтов.

Так что ответ простой: всё, что ты описал — для этого есть раст. Last stop choice.

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

Как заставить Lisp работать быстрее, чем C (комментарий) Как заставить Lisp работать быстрее, чем C

… в то же время Си >код транслируется более прямолинейно в ассемблер, …

Хорошее суждение.
Кстати интересен анализ «стоимости» ассемблерного кода для STL, class, …, а паче при обращении через «.» или «->» в сложных выражениях.
Вот собственно поэтому и есть потребность в разработке языка программирования, позволяющего работать с динамическими объектами и кодом.
Ныне у меня этот вопрос частично решен и при этом скорость работы с динамическими объектами эффективна, но большую эффективность можно достигнуть с использованием генерации бинарного кода на лету.
Вот собственно перед тем как начать разработку языка обязательно создам такой велоспипед, так как он позволит понять какие

педали более удобны

Владимир

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

Чувак бери FASM. Там есть макросы. Это всё, что тебе нужно.

У меня есть CASM и он весьма эффективен.

На всякий случай.
Что это у вас за блатной жаргон такой?

Владимир

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

Чувак бери FASM. Там есть макросы. Это всё, что тебе нужно.

Ээээ sorry поспешил с предыдущим постом.

Пока не знаю как лучше /с ASM имею опыт, но никакие компиляторы не хочу тащить вместе с бинарным кодом/.

Задумка в чем?

Имеются динамические переменные и объекты /компилятор о них ни чего не знает/.
Ныне решен эффективного доступа к ним, но для создания динамического кода нужен велосипед.

Владимир

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

Ныне решен эффективного доступа к ним, но для создания динамического кода нужен велосипед.

Проще всего JIT, но велосипед будет эффективней

Вот в чем вопрос

Владимир

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