Какой новый язык следует изучать для высокой производительности, высокой concurrency, веб-разработки?

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

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

NodeJS: записать в JavaScript, скомпилированный и работал через Google V8, который Chrome.

RingoJS: писать в JavaScript, запускается под Mozilla Rhino Java-based двигатель.

misultin: Erlang, не знаю многого, но кажется супер-быстрым: http://www.ostinelli.net/a-comparison-between-misultin-mochiweb-cowboy-nodejs-and-tornadoweb/

mochiweb: Эрланг тоже, и вообще принято быстро.

Торнадо: основанный на Python, который кажется быть самым медленным из всех.

Мне интересно, на каком языке я должен учиться. Если я пойду с RingoJS/NodeJS, тогда мне ничего не нужно учиться. Однако я ничего не знаю об Эрланге или Питоне. Должен ли я рассмотреть возможность изучения одного из них, если моя цель - создать высокопроизводительные веб-серверы (программное обеспечение/сайты)?

В целом, какой язык и библиотека имеют самое яркое будущее с точки зрения включения высокопроизводительных сайтов? Конечно, я мог бы сделать все на С++, но это, похоже, требует много времени, и я полагаю, что Python и Erlang проще.

ASP.NET с потоками кажется болезненным, поэтому я думаю, что оставлю его. А как насчет Twisted (Python)? Или Eventmachine (Ruby)?

Ответ 1

Высокая производительность, высокая concurrency

Вам понадобится асинхронный HTTP-сервер, управляемый событиями. Это самое важное. Вы даже можете использовать PHP и nginx, но это похоже на использование ASP.NET с ASyncHTTPRequests

Оба Mochiweb, misultin, Tornade и node.js удовлетворяют этому.

Лично я рекомендую node.js, потому что это потрясающе!

mochiweb:

mochiweb, похоже, не хватает документации из того, что я вижу. У этого есть WebMachine, хотя.

ringoJS:

Я не могу дать вам хороший аргумент в пользу использования ringojs над node.js. Сообщество node.js просто больше и имеет большую поддержку, оно, скорее всего, станет стабильным лидером отрасли.

другой:

Я бы также рекомендовал альтернативные веб-серверы aync manos [С#], eventmachine [Ruby] и twisted [Python].

misultin:

Это вызывающе стоит посмотреть, поскольку Erlang - отличный язык для массового concurrency, и это также имеет разумную документацию.

Вывод:

преимущества с Erlang и node.js заключаются в том, что сервер и все IO сами не являются блокирующими и асинхронными из коробки, поэтому я рассмотрю эти два.

Если вы хотите широкомасштабные серверы сегодня на сильно параллельном языке, тогда выберите misultin/mochiweb, написанный в Erlang. Эрланг просто выигрывает в шкале. Бонус для обучения Erlang заключается в том, что вы изучаете функциональную парадигму.

Если вы хотите, чтобы асинхронный веб-сервер с активным растущим сообществом, с активной разработкой сторонней библиотеки выберите node.js. Бонус за использование node заключается в том, что вы знакомы с JavaScript.

Ответ 2

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

Я бы сказал, что в разработке программного обеспечения нет такой вещи, как nothing I actually need to learn. Даже если кто-то квалифицирован в JS из передней части мира, есть множество вещей и техник, которые вам нужно будет изучить, чтобы создать качественный серверный материал. Если вы выберете рамки, отличные от JS, тогда вам придется инвестировать еще больше времени для освоения других языков. Например, каждый язык может предложить определенные преимущества, например, в отношении синтаксического сахара, но я думаю, вы должны придерживаться того, который вам подходит лучше всего.

В общем, какой язык и библиотека имеет самое яркое будущее с точки зрения мощные высокопроизводительные сайты?

Я думаю, что ответ на этот вопрос очень субъективен. Node.js постепенно получает популярность и тягу к сетям реального времени и масштабируемым сетевым программам, но трудно сказать "в общем", где будущее.

ASP.NET с потоками кажется болезненным, поэтому, я думаю, я оставлю это.

Вы можете посмотреть manos, что-то вроде Node.js для мира .NET.

А как насчет Twisted (Python)? Или Eventmachine (Ruby)?

Я не испытываю ни на Python, ни в Ruby, но я бы рекомендовал слушать эти два подкаста.

Ответ 3

Google Go стоит рассмотреть. Это чистый и выразительный код с встроенным concurrency и производительностью, который соперничает с C.

Здесь Go web hello world:

package main

import (
    "fmt"
    "http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

EDIT:

Haskell также стоит упомянуть. Это чистый функциональный язык и тесты. Но, как и большинство языков, легко работать в синхронной библиотеке.

Отсутствие синхронных библиотек является одной из лучших частей node.js

Ответ 4

Попробуйте Python + Pyramid, более мощный, чем Tornado. С помощью этой пары вы напишете быстрый и очень маленький код.