Помимо использования другого языка сценариев, основная привлекательность node.js заключается в поддержке программирования, управляемого событиями, которое облегчает написание масштабируемых серверов (или других приложений, обычно связанных с вводом / выводом) из-за егоупрощенные неблокирующие вызовы ввода / вывода.Однако эта функция достигается за счет необходимости изучения новой модели программирования, которая по существу требует, чтобы вы передавали обратный вызов после функции обратного вызова, делая некоторые простые задачи (например, зависимые последовательности действий) немного более сложными.
Контраст, которыймодель программирования для традиционной Ruby on Rails, которая блокирует все операции ввода-вывода и (эффективно) однопоточна (из-за реализации зеленого потока MRI).
Просто мечтая здесь вслух, кажется, чтодолжна быть возможность реализовать среду выполнения Ruby (или Rails), которая согласовывает эти модели, перехватывая вызовы ввода-вывода, прозрачно заменяя их их неблокирующей версией, сохраняя текущее продолжение и вызывая его, когда операция ввода-вывода завершена.Таким образом, вы получите знакомый, процедурный стиль программирования и преимущества модели управляемой событиями / асинхронной / обратного вызова.
Технически возможна ли такая среда выполнения (или транслятор времени выполнения)?Существуют ли веб-фреймворки, которые уже делают что-то подобное?