Ну давайте будем откровенными, ни я, ни вы никогда не писали код на LLVM IR. Подозреваю, что даже не использовали замыкания в C++. Кое-где у меня каша в голове, кое-где — у вас. Это нормально.
Так что мы оба с вами в данной ситуации категоричные шарлатаны. Разница в том, что насчет компилируемости AS3 вы правы, а я — был нет.
Что касается больших букв, нетикет не рекомендует их использовать именно по причине схожести с криком. Да я и не про большие буквы говорил, а про переход на личности.
Я предлагаю, раз мы технический аспект обсудили и пришли к единому мнению, беседу прекращать, чтобы не флудить.
Вы отрицаете существование интерпретируемых языков программирования? :) Смело.
P.S. А вот про то, что начиная с версии AS3 в нем нет eval; именно по причине того, что его сделали компилируемым (уйдя от ECMAscript) вы так и не сказали, наверное потому что не знали. А ведь с этого и нужно было начинать. И по-меньше эмоций, прошу Вас. У нас все-таки техническая дискуссия.
Видимо, в отличии от вас, я их в Go пробовал. Это не замыкание, а издевательство. В описании (ещё не вышедшего, кстати) C++0x с ними все тоже не так уж и прозрачно, но это попытки не стать чересчур медленным.
Но в принципе соглашусь, в том или ином виде с потерей производительности сделать замыкание компилируемым можно.
Ещё как имеет. Для LLVM есть фронтенды для интерпретируемых Python и Ruby. То, что ещё один интерпретируемый язык научились преобразовывать в промежуточное представление LLVM ровным счетом ничего не доказывает.
Возможность JIT-компиляции никак не коррелирует с тем, является ли язык компилируемым или интерпретируемым. Посмотрите на Parrot, например.
Аббревиатура LLVM расшифровывается, как low level virtual machine, как я писал выше, скомпилировать для виртуальной машины можно и интерпретируемый язык.
А вот, о каком native ARM code идет речь, нужно разбираться. У меня есть подозрения, что там что-то не чисто. Хочется верить, что у них все получилось, но чудес не бывает.
Либо они взяли небольшое подмножество языка, либо помимо компиляции там есть ещё что-то.
В C++ не настоящие замыкания, они, в частности, не подхватывают область видимости. Именно по описанным выше причинам.
Встроенный компилятор часто ещё медленнее, чем встроенный интерпретатор (особенно для небольших файлов). И встраивание компилятора в, якобы, откомпилированный код — это как раз грязный трюк, о котором я говорил.
Хм. Прошу прощения, я не дочитал до конца, а среагировал на первое предложение.
Интерпретатор, все-таки, интерпретирует. Компилятор — компилирует. Как правило компилятор быстрее виртуальной машины, виртуальная машина, как правило, быстрее интерпретатора.
Встраивания интерпретатора в исполняемый файл неэквивалентно компиляции.
Я как раз и говорил, что AS — интерпретируемый ЯП, поэтому скомпилировать «по-честному» его нельзя.
Или например классические замыкания, которые, я так понимаю, в AS3 есть, по-честному не скомпилировать. Можно завести таблицу с текущей областью видимости и т.п., но это уже почти ничем не отличается от встраивания интерпретатора в бинарник.
Откуда столько эмоций? Actionscript — это обычный ECMAscript.
А ECMAscript — это довольно динамический язык, написать полноценный компилятор которого без грязных трюков вроде встраивания интерпретатора в исполняемый файл просто невозможно.
HTC молодцы.
Ну я так понимаю, это скорее теоретические рассуждения, чем что-то практически применимое?
Так что мы оба с вами в данной ситуации категоричные шарлатаны. Разница в том, что насчет компилируемости AS3 вы правы, а я — был нет.
Что касается больших букв, нетикет не рекомендует их использовать именно по причине схожести с криком. Да я и не про большие буквы говорил, а про переход на личности.
Я предлагаю, раз мы технический аспект обсудили и пришли к единому мнению, беседу прекращать, чтобы не флудить.
P.S. А вот про то, что начиная с версии AS3 в нем нет eval; именно по причине того, что его сделали компилируемым (уйдя от ECMAscript) вы так и не сказали, наверное потому что не знали. А ведь с этого и нужно было начинать. И по-меньше эмоций, прошу Вас. У нас все-таки техническая дискуссия.
Но в принципе соглашусь, в том или ином виде с потерей производительности сделать замыкание компилируемым можно.
Аббревиатура LLVM расшифровывается, как low level virtual machine, как я писал выше, скомпилировать для виртуальной машины можно и интерпретируемый язык.
А вот, о каком native ARM code идет речь, нужно разбираться. У меня есть подозрения, что там что-то не чисто. Хочется верить, что у них все получилось, но чудес не бывает.
Либо они взяли небольшое подмножество языка, либо помимо компиляции там есть ещё что-то.
Встроенный компилятор часто ещё медленнее, чем встроенный интерпретатор (особенно для небольших файлов). И встраивание компилятора в, якобы, откомпилированный код — это как раз грязный трюк, о котором я говорил.
Интерпретатор, все-таки, интерпретирует. Компилятор — компилирует. Как правило компилятор быстрее виртуальной машины, виртуальная машина, как правило, быстрее интерпретатора.
Встраивания интерпретатора в исполняемый файл неэквивалентно компиляции.
Я как раз и говорил, что AS — интерпретируемый ЯП, поэтому скомпилировать «по-честному» его нельзя.
Или например классические замыкания, которые, я так понимаю, в AS3 есть, по-честному не скомпилировать. Можно завести таблицу с текущей областью видимости и т.п., но это уже почти ничем не отличается от встраивания интерпретатора в бинарник.
eval(get_url('http://website/code'));
А ECMAscript — это довольно динамический язык, написать полноценный компилятор которого без грязных трюков вроде встраивания интерпретатора в исполняемый файл просто невозможно.