Есть еще другая манифестация фулстек-ниндзи — не размазанная по языкам и инструментам, а сосредоточенная в одном языке или окружении (Smalltalk например). И вот в таком окружении, которое по сложности как игровая реальность, вполно можно неплохо ориентироваться на полном фулстеке — от виртуальной машины до валидаций форм ввода.
WebSharper на F#, Scala Lift, Ocaml Ocsigen, на BlazeHtml все используют DSL.
На Эрланге по любому писать лучше чем на HTML, тем более в едином AST.
Кроме того nitro DSL уже давно вынесен из n2o, так что n2o занимает теперь только 1200 LOC.
У меня все показано в README сколько N2O вносит по сравнению с чистым web server.
Там отдельно цифры с сессиями, без сессий, с шаблонами, без шаблонов и т.д.
И мои цифры можно проверить, так как тесты выложены github.com/maxlapshin/fpbenchmark
А где написано, что я сравинивал производительность? Я привел цифру для приведенного кода.
Переключишь с ETS на KVS — цифра изменится, но код не изменится.
Я вообще думаю, что ненормально приводить DB throughput в статье про веб фремворк.
Но если для Habrahabr это ок, то пусть будет :-)
Это все разные модели parallel/concurrency вычислений. Операционные системы поддерживают только первый вид. Остальные модели реализуются посредством библиотек и собственных планировщиков легковесных потоков со своими стеками работающих в контексте одного потока ОС.
Чисто логически представьте себе что в одном 32-битном потоке Эрланга работает 1 000 000 процессов, откуда там столько примитивов ОС.
https://github.com/Nebo15/ecto_mnesia
Попробуйте его
На Эрланге по любому писать лучше чем на HTML, тем более в едином AST.
Кроме того nitro DSL уже давно вынесен из n2o, так что n2o занимает теперь только 1200 LOC.
Есть даже компилятор из эрланга в JavaScript SHEN.
Там отдельно цифры с сессиями, без сессий, с шаблонами, без шаблонов и т.д.
И мои цифры можно проверить, так как тесты выложены github.com/maxlapshin/fpbenchmark
Переключишь с ETS на KVS — цифра изменится, но код не изменится.
Я вообще думаю, что ненормально приводить DB throughput в статье про веб фремворк.
Но если для Habrahabr это ок, то пусть будет :-)
Вот memory cache REST server на Erlang:
Использовать так:
23K RPS
Оригинально приложение forum.xda-developers.com/showthread.php?t=2092158
1. multi-threading approach — Semaphores, Threads, Shared Memory
2. message passing approach — Queues, Messages, Processes
3. data flow concurrency
4. software transnational memory
Это все разные модели parallel/concurrency вычислений. Операционные системы поддерживают только первый вид. Остальные модели реализуются посредством библиотек и собственных планировщиков легковесных потоков со своими стеками работающих в контексте одного потока ОС.
Чисто логически представьте себе что в одном 32-битном потоке Эрланга работает 1 000 000 процессов, откуда там столько примитивов ОС.
Я проверял не только на Linux и Mac но и Windows.
(«gnu». «elpa.gnu.org/packages/»)
(«marmalade». «marmalade-repo.org/packages/»)))
(when (load (expand-file-name "~/.emacs.d/marmelade-package.el"))
(package-initialize))
Это все что нужн вставить что бы работать с тремя репозиториями пакетов одновременно.