LINUX.ORG.RU

Выбор языка/платформы для full-stack веб-приложения

 , ,


0

1

Специфика: социальная сеть, биллинг;

Требования: конкурентность, надёжность, производительность, масштабируемость, лёгкость в поддержке;

Не требуется и вопрос не стоит: фреймворк, хостинг;

Со временем на проект и в выборе технологии, - цитирую, - «определяйтесь сами»; т.е. проблемы нет;

На данный момент обозначено два варианта: Node.js, Golang.
(и оба (точнее один из них), если что, придётся осваивать в процессе)

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

С таким ником очевидно Golang.

Как альтернатива: Erlang.

korvin_ ★★★★★
()

Есть вариант Scala с Akka + Play Framework. Это просто как альтернатива, сам не использовал.

theNamelessOne ★★★★★
()

Кложура. Го не порадовал, нода вариант только если хочешь посетить лечебницу, но не знаешь как туда попасть.

zz ★★★★
()

theNamelessOne

Есть вариант Scala с Akka + Play Framework

Спасибо, отметил Akka.

zz

Го не порадовал

В каком плане?

RobPike
() автор топика

На данный момент обозначено два варианта: Node.js, Golang.
Требования: конкурентность, надёжность, производительность, масштабируемость, лёгкость в поддержке

Golang это само воплощение конкуретности, надежности, масштабируемости и легкости поддержки.

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

Единственное преимущество node.js над golang - больше стороннего кода сейчас на нем, с другой стороны сомневаюсь, что в вашем случае в нем будет какая-то серьезная необходимость (много помойных и бесполезных библиотек).

umren ★★★★★
()

У ноды, имхо, есть только одно достоинство: если знаешь js то можешь «фронтэнд» и «бэкенд» писать на одном ЯП. Это к вопросу о целостности.

Лично я так и не понял в чём фишка ноды. Мне оно кажется жутким костылём и подход «сделаем всё на колл-бэках» приветом из девяностых. Голосую за go.

true_admin ★★★★★
()

Требования: конкурентность, надёжность, производительность, масштабируемость, лёгкость в поддержке;

Node.js, Golang

WTF?

Потому что возможные ответы: Erlang, C#

lovesan ★★
()

Хацкель, очевидно. Snap/Yesod

anonymous
()

На данный момент обозначено два варианта: Node.js, Golang.

Выбор по критерию хипсторности? Тогда Go.

tailgunner ★★★★★
()

Go. Go. Go!

anonymous
()

Бросьте сомневаться, если вопрос в этом, и берите Go. Одного его рантайма для вас будет достаточно практически наверняка — а это в свою очередь целостность, и навряд ли сейчас есть и в скором времени появится что-то благоразумнее по отношению к вашим требованиям. Ну а там, конечно, смотрите сами, думайте. Голосую за Go, да и под сервер-сайд его загоняют конкретно, всё-таки гугл как ни странно в этом плане на передовой. В общем, удачи.

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

Ну с натяжкой Erlang ещё ладно, но C# (да, mono, и чё?). Да и что Erlang, у него всё же ниша. Не думаю, что это был бы хороший выбор для full-stack.

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

Выбор по критерию хипсторности?

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

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

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

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

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

Выбор по критерию хипсторности?

Вы так говорите, как будто это что-то плохое.

Да, это плохое.

Хороший, основательный язычок остается.

Те, кто выбирает «хороший, основательный язычок», даже не рассматривают Javascript.

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

но C#

А что не так, если нет аллергии на проприетарщину - отличный выбор. Производительность и масштабируемость на высоте(при должном понимании происходящего), async/await и RxExtention обеспечат безопасное конкурентное выполнение кода, а в отличие от ява-мирка тут чувствуется что у апи есть единый стиль. Да и количество плюшек под платформу достаточно большое

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

Те, кто выбирает «хороший, основательный язычок», даже не рассматривают Javascript.

Ну, может быть. Но я о Go.

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

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

Какие языки программирования гугл «поматросил и бросил»?

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

Да, это плохое.

Хипсторность или Go?
И, кстати, почему такая категоричность — Go, говорите для каких-то хипстеров, — глядя на его публичную аудиторию складывается обратное впечатление, совсем.

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

Какие языки программирования гугл «поматросил и бросил»?

С++, Python активно меняет на Go же. Было бы странно, если наоборот.

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

С++, Python, Java активно меняет на Go же. Было бы странно, если наоборот.

fixed

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

Да, это плохое.

Хипсторность или Go?

Я процитировал то, на что отвечал. Впрочем, язык Go тоже так себе - язык без параметризуемых типов, а ведь XXI век на дворе.

Go, говорите для каких-то хипстеров,

Я не говорил этого. А то, что хипсторы в последнее время любят Go, вполне очевидно.

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

Я процитировал то, на что отвечал. Впрочем, язык Go тоже так себе - язык без параметризуемых типов, а ведь XXI век на дворе.

Во первых, не «параметризуемые», а «параметрические». И появились они не в 21 веке, а раньше. А, во вторых, изучи сначала интерфейсы в Го и не говори ерунды о «несовременности».

anonymous
()

С го дела не имел.

Нода не катит вот по этой причине:

конкурентность, надёжность, производительность, масштабируемость, лёгкость в поддержке;

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

Три чая этому господину. Один с солью — за грамоту и ненужную запятую.

По теме — бери go или java, go в контексте задачи интереснее и, наверное, выигрышнее (в лёгкости сопровождения уж точно).

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

И появились они не в 21 веке, а раньше

Я не говорил, что они появились в 21-м веке.

изучи сначала интерфейсы в Го

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

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

Если в языке нет какой-либо фичи, потрудись сначала понять причину этого. В maillist Go полно объяснений на этот счет. А обобщенное программирование в 1970 появилось или раньше. Причем тут 21 век ?

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

В догонку : Шаблоны или генерики вводят в основном для поддержки обобщенного программирования, а оно в Го на интерфейсах базируется.

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

Ну не будешь же ты просить добавить параметризуемые типы в Питон или Objective-C. Там утиная типизация имеется. В Го та же фигня, только в профиль.

anonymous
()

Scala + Play (при желании, добавить Akka) или Scala + Akka + Spray.

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

ой, а шарпике и акторы есть, не такие классные как akka, но есть же, будем посмотреть.

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

Если коротко, то в Го есть такое понятие как пустой интерфейс (interface {}) к которому можно преобразовать любой тип без потери информации о нем. Но есть и понятие специализированного интерфейса со строгой проверкой типов. Получается гибрид статической и динамической типизации.

http://golang.org/doc/effective_go.html#methods

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

Интерфейсы + встроенные в язык полиморфные хэш-таблицы.

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

В maillist Go полно объяснений на этот счет.

Всего одно: не решили как правильней это сделать.

Причем тут 21 век?

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

И это всё при том, что встроенные типы [], map и chan вполне себе параметризуемы.

Шаблоны или генерики вводят в основном для поддержки обобщенного программирования, а оно в Го на интерфейсах базируется

Что не всегда удобно.

Ну не будешь же ты просить добавить параметризуемые типы в Питон или Objective-C. Там утиная типизация имеется. В Го та же фигня, только в профиль.

В пистоне динамическая типизация, в отличие от. А кроме Objective-C есть еще Objective-C++ например.

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

Всего одно: не решили как правильней это сделать.

Всего 2 :

1. Есть интерфейсы, которые решают те же задачи и необходимость ввода еще одной сущности в язык под вопросом. 2. http://golang.org/doc/faq#generics

В пистоне динамическая типизация, в отличие от. А кроме Objective-C есть еще Objective-C++ например.

В Go используются идеи динамической типизации «by design». Не даром в разработке языка принимал участие Robert Griesemer, - специалист по динамическим языкам. И я ничего не говорил о Objective-C++, С++ это совсем другой язык.

anonymous
()

На данный момент обозначено два варианта: Node.js, Golang.

Да. Не фортануло. А ведь шли к успеху.

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

Есть интерфейсы, которые решают те же задачи и необходимость

«many cases» ≠ «all cases»

В Go используются идеи динамической типизации «by design».

Как будто кто-то мешает использовать рефлексию в Delphi, C# и Java например, тем не менее, предпочитаю дженерики. Тупо удобней. А в некоторых случаях и без «a cost in ... run-time».

И я ничего не говорил о Objective-C++, С++ это совсем другой язык.

Угу, а O-C++ появился от исключительного удобства O-C, да?

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

Как будто кто-то мешает использовать рефлексию в Delphi, C# и Java например, тем не менее, предпочитаю дженерики. Тупо удобней. А в некоторых случаях и без «a cost in ... run-time».

Интерфейсы в Го сильно отличаются по своей сути от того что используется в других языках. Хотя идея довольно простая, но концепция получилась весьма мощная. И аналогия с рефлексией в других языках не катит. Дженерики удобней для тебя, но не для всех. При проектировании Го очень взвешенно относились к включению в язык тех или иных фич. И ИМХО не прогадали. Добавить фичи проще, чем кардинально менять. И добавлять фичи надо только при абсолютной уверенности в их необходимости.

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

Угу, а O-C++ появился от исключительного удобства O-C, да?

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

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

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

И всё же лучше выпустить без полиморфизма, чем со сделанным абы как.

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

Интерфейсы в Го сильно отличаются по своей сути от того что используется в других языках.

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

И аналогия с рефлексией в других языках не катит.

Отчего же? Что с помощью интерфейсов Go можно сделать такого, что нельзя или очень затруднительно — с помощью «обычных» интерфейсов в вышеупомянутых языках?

И всё же лучше выпустить без полиморфизма, чем со сделанным абы как.

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

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

в Golang их подход с автоприменением к типу подходящих интерфейсов очень похож на хаскел , а если точнее на математику

где если интерфейс(набор аксиом) применим то и теоремы(методы интерфейса) .

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

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