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)

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

тут смотря сколько усилий уйдёт на написание велосипеда.

Велосипед должен уметь: управляющие операторы, динамические объекты и переменные, expression и call. Этого будет достаточно для большой ниши задач.
Потому как

Нельзя объять необъятное

На лабу смахивает по сложности.
Проблема лишь в том, что нужно преодолеть свою лень.

Владимир

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

потеря асинхронщины

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

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

На лабу смахивает по сложности.

Можно конечно спросить зачем?
Безусловно не во всех проектах требуется возможность использования
динамических объектов, … и кода, но иногда даже очень кстати.
Например для разработки обобщенных алгоритмов /а от них польза бывает весьма не малая/.

C++ в основном заточен на компилятор.
RAII это детский лепет.

Можно конечно для разработки использовать некий разработанный API.
Конечно НУЖНО, но для обобщенных алгоритмов нужна иная функциональность.

Вот ныне имеется API, который позволяет тривиально делать копии сложных объектов, …

Конечно в процессе разработки радует то, что динамические объекты можно создавать и эффективно использовать, но работы еще

МНОГО

PS: К публикации явно не готов /не потому, что код сырой/.
Еще многое нужно улучшить и разработать.
Да и проблемы в том, что делать и как тоже нет.

Владимир

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

При всем уважении к вашим успехам в бизнесе, но позвольте поинтересоваться, вы когда в последний раз C++ видели? Вообще C++, даже не говоря про нормальный код на современном C++?

Судя по тому, что вы сами про себя рассказывали, это было где-то во времена студенчества, когда вам курсачи и лабы приходилось на плюсах делать. А потом вы зарабатывали себе на хлеб Ruby-On-Rails и Erlang-ом.

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

Распиши плиз уровень типичного крестовика с твоей точки зрения.

Нахера мне это делать, пардон май френч?

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

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

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

Да и альтернатив то пока особо нет.
То что разрабатываю это ни как не альтернатива, а развивающийся проект.

Владимир

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

Я не использую clang-расширение в qtcreator. И я прекрасно вижу что 20 гигабайт никто не отжирает. Даже большие проекты умещаются в 2гб памяти.

В VisualStidio же стоит проверка кода на лету, но тоже замечательно уживается в малых объемах ОЗУ, и работает хоть и медленнее Креатора, но быстрее чем всякое другое: Eclipse, Clion и прочее ненужное.

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

В VisualStidio же стоит проверка кода на лету, но тоже замечательно уживается в малых объемах ОЗУ, и работает хоть и медленнее Креатора, но быстрее чем всякое другое: Eclipse, Clion и прочее ненужное.

А с VAssistX - песня!
Хороший рефакторинг, удобный редактор, … - вообщем «вполне». Да и Studio community бесплатна.
Но лучше ее использовать на компьютере не подсоединенном к сети … /а то все проги сильно «любознательны»/.

Владимир

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

т.е. до появления относительно новой фичи с реалтайм анализом кода - все что было раньше это не Си++?

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

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

Так это не у меня спрашивать надо, а у людей. Они же выбрали Go, а не Rust для веб разработки. Rust для веба - это маргинально

menangen ★★★★★
()

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

Просто скилла себе хотите добавить?

Владимир

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

Rust не для веб создавался. А для системного ПО. Для веб - Go

Вот это к чему сказано? Тот факт что изначально раст не позиционировался для вэба, как мешает то?

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

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

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

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

Мы тут тс’у советуем платформу для веб разработки. Не теряй нить. Rust тут ни к селу ни к городу. Просто чтобы было. Чтобы помнили. Что есть такой… раст

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

Так на тостере каждый 10-ый вопрос о Джанге. А царёк тут верезжал о том, что питон сдуется и никому не нужен будет, с джангой в придачу… что всё будут писать на крестах новомодных или на чём он там мечтает писать? =)

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

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

Это ж надо так в говне изваляться, это ещё надо уметь самому так занырнуть глубоко

Распарси код питона, олух. Или quickJS чтоль

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

Это ж надо так в говне изваляться, это ещё надо уметь самому так занырнуть глубоко

Даже не верится, что Царь такое мог написать …

Владимир

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

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

Недаром умные люди пришли к логичному выводу - написать уже LLVM, создать нормальные языки на базе LLVM, и оставить C++ пенсионерам

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

Да он на чём-то тяжелом сидит, уже забывает через час что пишет, все привыкли

Хоть верьте, хоть нет.
Считаю, что Царь специально троллит так /может быть для развлечения?/.
Не утверждаю, что прав …

Владимир

anonymous
()

Асинхронщина для любого IO а-ля нода

Асинхронщина то зачем? Модно молодежно?

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

Шутка

Типичное мнение некоторых об анонимусах

Гы-гы-гы-гы

PS: От БОЛЬШОГО ИНТЕЛЕКТУ и ЧСВ

Владимир

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

Мы тут тс’у советуем платформу для веб разработки. Не теряй нить. Rust тут ни к селу ни к городу

Тс вообще на C++ писать собрался, раст в этом контексте вполне и к с селу и к городу.

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

Если учесть, что он в дефолтной поставке GCC, как и Go, то оба они взлетели. В отличии от rust

Это немного не так работает. Go отлично бы себя чувствовал и не будучи в «дефолтной поставке GCC», а D и это уже не поможет.

DarkEld3r ★★★★★
()

Go в моих глазах во всём слабее, чем C++.

Чем неудобен для разработки сайтов?

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

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

Ну слава ТНБ, наконец этот главный вопрос задали. А можно было еще на первой странице закрыть этим тред.

anonymous
()

ТС, ты научись сначала синхронно писать нормально. Так, чтобы кто-то захотел купить твой продукт или твой труд.

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

Покажи мне вариант крестов в котором нет легаси. Например, кресты с вменяемым менеждментом зависимостей проекта, и модулями.

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

В сравнении с крестами Go удобней, конечно, а в сравнении с python/php/js - нет. Но вообще от задачи зависит. Какой-нибудь сетевой демон писать на php - бред, конечно.

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

Мне хотелось бы знать. Хотя бы несколько предложений. Не хочешь - никто не заставляет.

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

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

Царю хватает только header-only и git submodule.

Я считаю vcpkg и conan нормальными. Но я не готов к срачу «что для кого является нормальным».

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

Недаром умные люди пришли к логичному выводу - написать уже LLVM, создать нормальные языки на базе LLVM, и оставить C++ пенсионерам

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

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

Очевидно потому что на момент написания ничего лучше не было, а переписывать LLVM после того как он уже написан – экономически глупо.

Ты как будто вчера родился

mersinvald ★★★★★
()

UPD, написал в шапке принятое решение. Всем спасибо за советы. Приятно, что столько мнений было озвучено помимо флуда.

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

После джанги от пхп блевать хочется. Плюс мне вебсокет понадобился. Для меня всё что угодно (в разумных пределах) лучше пыхи.

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

После джанги от пхп блевать хочется

Сравнил фреймворк с языком - класс!

Плюс мне вебсокет понадобился.

Ты не про костыль в виде django-channels, надеюсь? Или в джангу уже асинхронщину нормально завезли?

Для меня всё что угодно (в разумных пределах) лучше пыхи

Аргументы?)

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

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

А при обычных http-запросах прогрессбар юзеру не показать? http-запросы можно вообще асинхронно дёргать, и никаких тормозов интерфейса не будет.

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

После джанги от пхп блевать хочется.

Вот не нужно блевать, когда освоите PHP и JavaSript профессионально, то все будет ok.
NodeJS кстати вполне …
Обязательно научитесь использовать Ajax, WebSocket, …, а также разработку синхронного и ассинхронного кода /и тот и другой бывают нужны/.
А главное никогда не ругайте языки программирования.
Так поступают только

Танцоры

На форуме «танцоров» много.

Всегда себя вините.  
Больше пользы будет /зеркало не виновато .../.  

Владимир

anonymous
()

Немного философии.

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

Рецепт быстрой разработки давно известен - побольше использовать готового, поменьше собственно разрабатывать. Вплоть до «говорим разрабатывать - подразумеваем конфигурирование уже созданного ПО». Именно поэтому так популярны CMS.

У меня другая ситуация и я её сразу явно описал:

Буду в одиночку пилить сайт для своих нужд (не на заказ).

Для каждого человека характерна рационализация всех своих действий. Убил условный Вася Пупкин убил педофила - сразу «так ему и надо, это мразь, а не человек», а мысли а-ля «не проводил расследования, вдруг его подставили» сразу отвергаются. Если тот же самый Вася Пупкин с теми же моральными установками сам совершит акт педофилии - вместо «я должен быть наказан» скорее всего снова будет рационализация - «вообще-то ребёнку понравилось, меня бабы довели до такого своей меркантильностью и вообще это был не я - меня споили и какой-то чёрт в моём теле сделал это». Вместо твёрдых убеждений - самооправдания.

Вот собирается человек работать программистом в небольшом городке - пхп или идёт на 3 буквы. У него НЕТ ВЫБОРА. То же самое, но в большом городе с вакансиями на многих языках - он не синьор, а нуб - где взяли, там и работает. У него НЕТ ВЫБОРА. На фрилансе - где взяли, там и работает. У него НЕТ ВЫБОРА. А если умудрён опытом - «здесь я синьор, а в других ЯП я пустое место». У него НЕТ ВЫБОРА кроме как продолжать начатый путь или опуститься до джуна/стажёра на другом ЯП.

К чему это я про рационализацию? Никто не хочет думать «жизненные обстоятельства заставили меня годами сидеть на ущербном недоязычке», каждый кодер думает «мне повезло работать с %langname, который просто замечателен в своей предметной области». Вот только это - психология человека, а не объективные свойства ЯП. «Быстро разработать» - это не про супер мощный, быстрый, гибкий и т.п. ЯП, это - про наличие уже написанного кода, который можно использовать, выдавая за «свой» продукт.

У очень многих хозяин (заказчик, работодатель…) говорит на чём писать. Тем самым лишая выбора.

У меня же нет хозяина, который висит над душой и требует писать на определённом ЯП + фрейме. И я именно выбирал и сделал выбор с запасными вариантами на основании «ЯП может A, B и C», а не «миллионы мух выбирают Х». При этом я не рассматривал бесперспективную маргинальщину. И это не та логика, которой руководствуется большинство (см. предыдущие абзацы).

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

Ну так сделай на своей джанге, раз умеешь.

Джанга не удовлетворяет всем описанным требованиям.

Или ты хочешь перепрофилироваться в веб-дев?

В таких случаях смотрят на фриланс заказы и вакансии. Описанная мною ситуация - другая, см. начало шапки.

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

Джанга не удовлетворяет всем описанным требованиям.

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

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

Владимир

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

Или в джангу уже асинхронщину нормально завезли?

Если бы джанга меня устраивала - я не создавал бы этот посоветуй-тред.

Аргументы?)

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

Я прямо как собака Павлова негативно реагирую на обилие $variable на экране и дело тут не в самом символе. А немного $store в js не вызывают у меня такой реакции, ведь там основная масса переменных без $.

А при обычных http-запросах прогрессбар юзеру не показать?

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

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

Вебсокет быстрее и создаёт меньше оверхеда.

Вебсокет - «это жизнь».
Кстати Perl весьма не плох /для него все есть/.

Владимир

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

Я здесь ничего не писал про работодателей.

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

Владимир

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