Прежде чем увидеть невооружённым глазом Эриду (именно так по-русски называется то, что по-английски называется Eris), проделайте простенькое упражнение — найдите невооружённым глазом Плутон ;)
Диаметр у них примерно одинаков, перигелий у Эриды в полтора раза больше, правда, у Эриды альбедо чуть побольше, но разница в яркости будет примерно одинакова. А для того, чтобы увидеть Плутон, нужен телескоп с апертурой от 30см (и то не факт, что хватит).
Да, вы ведь Плутона не боитесь? А ведь он ближе Эриды, и лишь чуть меньше ;)
Во, надо бояться Луны. Она, во-первых, больше и Эриды и Плутона, а во-вторых, куда ближе (несопоставимо!).
Да, но тут возникает такая проблема: формально CPS-преобразование глобальное, и компиляторам нужно знать, внутри каких функций используются продолжения (прямо или опосредованно), а внутри каких — нет. А без этого знания компилятор преобразует вызовы request.sendBody/sendHeader и других библиотечных вызовов (но не сами библиотечные функции, естественно).
Так что надо пробовать, смотреть, какой код генерируют эти компиляторы и можно ли указать функции, которые конвертировать не надо (или, может быть, компилятор не конвертирует функции, про которые ничего не знает, но в этом случае тоже будут проблемы).
Пусть хотя бы добавят в v8, и то будет большой прогресс :)
Если я правильно помню, в новый стандарт ECMAscript продолжения не вошли из-за давления Microsoft, т.к. их нельзя эффективно реализовать на .NET (я имею в виду Jscript .NET). Опять виновата Microsoft :) хотя, возможно, и другие вендоры были не очень рады.
Но не всё потеряно — есть несколько Source-to-Source компиляторов Javascript. Не знаю, удастся ли их использовать вместе с node.js, всё собираюсь попробовать:
Конечно, можно. function в 4-й строке — самый что ни на есть continuation.
Однако на уровне языке продолжений как объектов первого класса нет, их приходится делать самому, вставляя в нужных местах function и скобочки. А вот в Scheme — есть. См. call-with-current-continuation. en.wikipedia.org/wiki/Call-with-current-continuation
Точно так же в C нет поддержки замыканий. Их, конечно, можно сделать с помощью указателей на функции, передавая им enironment в виде структуры, и можно даже говорить, что это «скорее вопрос стиля программирования»… Но это не значит, что там замыкания есть.
Чего не хватает джаваскрипту, чтобы превратиться в идеальное решение для написания асинхронных приложений (в том числе AJAX), так это поддержки продолжений на уровне языка, чтобы можно было писать асинхронный код линейно, а не с помощью огромного количества вложеных замыканий.
Даже в ядре виндоус может быть зашит какой-нибудь бот. А уж если вспомнить бота обновления винды, то страшно жить становится…
Вот сойдёт снег, куплю себе GPS и буду оцифровывать тропинки в соседнем лесу. Отличное лекарство от гиподинамии :)
По крайней мере нам из Сибири так видно :)
Диаметр у них примерно одинаков, перигелий у Эриды в полтора раза больше, правда, у Эриды альбедо чуть побольше, но разница в яркости будет примерно одинакова. А для того, чтобы увидеть Плутон, нужен телескоп с апертурой от 30см (и то не факт, что хватит).
Да, вы ведь Плутона не боитесь? А ведь он ближе Эриды, и лишь чуть меньше ;)
Во, надо бояться Луны. Она, во-первых, больше и Эриды и Плутона, а во-вторых, куда ближе (несопоставимо!).
Есть целое радио с астрономическими звуками: www.radio-astronomy.net/listen.htm :) Правда, что-то сейчас поток не идёт (ещё до хабраэффекта).
Лучше на те же деньги купить бинокль, а то и телескоп (за 10 т.р. можно взять телескоп практически без пластмассы).
Так что надо пробовать, смотреть, какой код генерируют эти компиляторы и можно ли указать функции, которые конвертировать не надо (или, может быть, компилятор не конвертирует функции, про которые ничего не знает, но в этом случае тоже будут проблемы).
Если я правильно помню, в новый стандарт ECMAscript продолжения не вошли из-за давления Microsoft, т.к. их нельзя эффективно реализовать на .NET (я имею в виду Jscript .NET). Опять виновата Microsoft :) хотя, возможно, и другие вендоры были не очень рады.
Но не всё потеряно — есть несколько Source-to-Source компиляторов Javascript. Не знаю, удастся ли их использовать вместе с node.js, всё собираюсь попробовать:
www.neilmix.com/narrativejs/doc/
chumsley.org/jwacs/
en.wikipedia.org/wiki/Continuation#Programming_language_support
Хорошо, попробую совсем разжевать. С помощью продолжений, встроенных в реализацию, можно написать:
var a = stream.readline();
var b = stream.readline();
var c = a + b;
…
при этом оба вызова будут асинхронными, но второй readln будет вызван строго после того, как выполнится первый.
При этом в языке без поддержки продолжений придётся выписать их явно:
stream.readline(function (a) {
stream.readline(function (b) {
var c = a + b;
…
};
});
Почувствуйте разницу.
(Тег pre я указал, но парсер его съел, поэтому код не форматирован).
Однако на уровне языке продолжений как объектов первого класса нет, их приходится делать самому, вставляя в нужных местах function и скобочки. А вот в Scheme — есть. См. call-with-current-continuation. en.wikipedia.org/wiki/Call-with-current-continuation
Точно так же в C нет поддержки замыканий. Их, конечно, можно сделать с помощью указателей на функции, передавая им enironment в виде структуры, и можно даже говорить, что это «скорее вопрос стиля программирования»… Но это не значит, что там замыкания есть.
V8 compiles Javascript source code directly into machine code when it is first executed. There are no intermediate byte codes, no interpreter.
code.google.com/intl/ru/apis/v8/design.html
Переписать node.js на Scheme, что ли :)
В IE6/7/8 НЕ РАБОТАЕТ!!!11
Боюсь, для столь сложного приложения excanvas не поможет.