> Красивый хак. Кто не понимает, зачем это нужно - те просто кретины, не осилившие даже прочитать по ссылке.
Да да, конечно. Ну если ты понял: в двух словах опиши что же это такое. "Clue is an ANSI C compiler (C89, some C99) that targets high-level languages such as Lua, Javascript or Perl (and some low-level ones)" - да, я знаю слово targets и что оно значит, но черт возьми, что оно значит в этом контексте???
"It's sole purpose is to be interesting, and not necessarily useful" - т.е. эксперимент и не имеет смысловой нагрузки.
Какие все прагматики стали, такие как ты в XIX веке устраивали обструкцию преподавателям за изучение "ненужных" комплексных чисел.
И таки не дочитал:
> Clue is mainly an experiment into the use of dynamic VMs to run static code.
> In terms of actual practical value, it may be useful to allow the use of code written for one system to run on another, much more restricted system. For example, using clue you could use off-the-shelf encryption systems like gpg to work inside a web browser.
То есть, чтобы статический и потенциально неуправляемый код пускать на виртуальных средах с распределением памяти и прочими фишками. И пример приведен про gpg на жабаскрипте в браузере.
>То есть, чтобы статический и потенциально неуправляемый код пускать на виртуальных средах с распределением памяти и прочими фишками. И пример приведен про gpg на жабаскрипте в браузере.
в наши дни программисты уже даже за памятью не следят. конечно значит, пусть java сама следит...
> То есть, чтобы статический и потенциально неуправляемый код пускать на виртуальных средах с распределением памяти и прочими фишками. И пример приведен про gpg на жабаскрипте в браузере.
Все, понял, спасибо :) Действительно замечательная идея (если я её правильно понял). Таким образом я смогу вставить свой код, который я написал на Си в новую программу на Java, так?
> - да, я знаю слово targets и что оно значит, но черт возьми, что оно значит в этом контексте???
Ты не знаешь смысла глагола to target.
> "Clue is an ANSI C compiler (C89, some C99) that targets high-level languages such as Lua, Javascript or Perl (and some low-level ones)"
Перевожу для особо одарённых:
"Clue это компилятор ANSI C (C89, с элементами C99), производящий код на высокоуровневых языках, таких как Lua, Javascript или Perl (а так же на некоторых низкоуровневых)."
> т.е. эксперимент и не имеет смысловой нагрузки.
Дурак. Нет такого эксперимента, который не имел бы смысла. А тут смысл вполне очевиден - демонстрируется возможность преобразования низкоуровневого языка в языки более высокоуровенвые и ограниченные (не имеющие goto и арифметики указателей, например).
> как-то не верится, а может оно знает наперёд какая программа остановится, а какая нет?
Это только абстрактный конь в вакууме не может остановиться. А в реальной жизни любая программа на Си (да и на JVM тоже) обязательно остановится. Хотя бы потому, что никто не будет тысячелетиями поддерживать среду, в которой она могла бы работать :)
Да и знать наперед надо не сильно больше, чем при обычной компиляции с Си в машинные коды.
translate - переводить с одного языка на другой (в т.ч. и на язык машинных кодов)
compile - собирать (компоновать) программу, например из объектных модулей.
Когда инструмент является одновременно транслятором и компилятором - я еще могу понять, поячему говорят "компилятор" на транслятор. Но когда транслятор является только транслятором, тогда мне становистянепонятно, зачем его обзывают компилятором :) Или же сабж действительно является компилятором? Поясните плиз кто в теме.
Автор называет свое детище компилятором. Дело в том, что разбор кода производит gcc (который уж точно компилятор), но генерируется из промежуточного, оптимизированного представления не ассемблер, а код на языке высокого уровня.
>Или же сабж действительно является компилятором? Поясните плиз кто в теме.
На входе код на C — на выходе код на одном из перечисленных языков. Смекаешь, что это?
> Автор называет свое детище компилятором. Дело в том, что разбор
> кода производит gcc (который уж точно компилятор), но генерируется
> из промежуточного, оптимизированного представления не ассемблер, а
> код на языке высокого уровня.
Тогда понятно, почему на выходе такой странный код :-D В таком случае, его детище скорее является дизасемблером ))) Впрочем, независимо от названия, автору респект. :-)
интересно, а какой язык и среда исполнения/VM "самый кривой"?
Берём компилятор из этого языка в Си. Транслируем, потом полученный си код запускаем под сабжем. Переводим сабжем его назад в среду "этого языка". Сравниваем с первоначальным вариантом, и подсчитываем оверхед.
для R вроде пытались делать бенчмарк: переводим код на R в язык X (лисп, си, перл, питон, луа, ...). Сравниваем перевёдённое с оригинальным. Любопытно, что вариант "R через Lisp" ускорился в несколько раз.