LINUX.ORG.RU

ждем добавления javascript-mozilla в список платформ генты... и ебилдов...

gods-little-toy ★★★
()
Ответ на: комментарий от Aceler

> Вот бы наоборот, а. Где проблема? Внутреннее представление gjc можно в C транслировать

Loh ★★
() автор топика

Компилятор ANSI C, который может генерировать код C - вот это дзэн.

// colored

anonymous
()

Стыдно признаться, но я не вкурил о чем речь... Что эта штука делает? Транслирует код на Си в текст на других языках или что оно делает?..

fpga
()

>>в последней версии, java. генератор зла...

anonymous
()
Ответ на: комментарий от fpga

что она делает будет известно в версии не ниже 1.0 :)

manlee
()

>Может генерировать lua, javascript, perl, lisp, C и, в последней версии, java.

зачем оно нужно? C самый полноценный язык в мире!

st0ke
()

Русская языка бальшая и могучая

xintrea
()

а в Tcl не мозет :(

jtootf ★★★★★
()

может в байткод транслирует? тогда причем тут жабоскрипт?

anonymous
()

>компилятор для динамических языков

>и, в последней версии, java.

чочо?

anonymous
()

Очень хорошо!

anonymous
()
Ответ на: комментарий от anonymous

>>так кто скажет, че оно делает?

>Версию 0.5 обычно пъют.

А потом делают "клууээээээээ"

anonymous
()

Красивый хак. Кто не понимает, зачем это нужно - те просто кретины, не осилившие даже прочитать по ссылке.

anonymous
()
Ответ на: комментарий от anonymous

> Красивый хак. Кто не понимает, зачем это нужно - те просто кретины, не осилившие даже прочитать по ссылке.

Да да, конечно. Ну если ты понял: в двух словах опиши что же это такое. "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" - т.е. эксперимент и не имеет смысловой нагрузки.

fpga
()
Ответ на: комментарий от fpga

> т.е. эксперимент и не имеет смысловой нагрузки.

Какие все прагматики стали, такие как ты в 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 на жабаскрипте в браузере.

anonymous
()
Ответ на: комментарий от anonymous

>То есть, чтобы статический и потенциально неуправляемый код пускать на виртуальных средах с распределением памяти и прочими фишками. И пример приведен про gpg на жабаскрипте в браузере.

в наши дни программисты уже даже за памятью не следят. конечно значит, пусть java сама следит...

st0ke
()
Ответ на: комментарий от anonymous

> То есть, чтобы статический и потенциально неуправляемый код пускать на виртуальных средах с распределением памяти и прочими фишками. И пример приведен про gpg на жабаскрипте в браузере.

Все, понял, спасибо :) Действительно замечательная идея (если я её правильно понял). Таким образом я смогу вставить свой код, который я написал на Си в новую программу на Java, так?

fpga
()
Ответ на: комментарий от fpga

> - да, я знаю слово 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 и арифметики указателей, например).

anonymous
()
Ответ на: комментарий от anonymous

> Перевожу для особо одарённых

Мальчик, не хами, а? :) Предыдущий анонимус был более вежлив, причем он все грамотно и доступно объяснил. Тебе низачот :)

fpga
()

Блин... подержку брейнфака добавье.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от anonymous

> ты это можешь делать уже лет 10 - кури про JNI
И через этот JNI код без изменний и перекомпиляций заработает под Linux, Windows, Solaris, ...?

Смысл в том, что имея на входе *.c файлы на выходе получишь *.class который отработает на всех системах где есть JVM.

Korwin ★★★
()
Ответ на: комментарий от Korwin

>Смысл в том, что имея на входе *.c файлы на выходе получишь *.class который отработает на всех системах где есть JVM.

как-то не верится, а может оно знает наперёд какая программа остановится, а какая нет?

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

> как-то не верится, а может оно знает наперёд какая программа остановится, а какая нет?

Это только абстрактный конь в вакууме не может остановиться. А в реальной жизни любая программа на Си (да и на JVM тоже) обязательно остановится. Хотя бы потому, что никто не будет тысячелетиями поддерживать среду, в которой она могла бы работать :)

Да и знать наперед надо не сильно больше, чем при обычной компиляции с Си в машинные коды.

anonymous
()
Ответ на: комментарий от anonymous

>>компилятор для динамических языков

>>и, в последней версии, java.

>чочо?

и виртуальных машин

Loh ★★
() автор топика

До

typedef struct{
int a;
int b;
char c[];
} fuck;

void main(){

int q;
fuck *z;
char *map=malloc(10000);

for(q=0;q<100;q+=100){
z=(fuck*)map[q];
z->a=1;
z->b=2;
}

}


после:


var _main;

function _main(fp, stack) {
var sp;
var H0;
var H1;
var H2;
var H3;
var H4;
var state = 0;
for (;;) {
switch (state) {
case 0:
sp = 0;
sp = fp + sp;
H0 = 0;
state = 1; break;
case 1:
H1 = 100;
H2 = (H0 < H1) ? 1 : 0;
state = H2 ? 2 : 3; break;
case 2:
H2 = H1 + H0;
H3 = null;
H1 = 0;
H4 = H3[H1 + 0];
H4 = 1;
H3[H1 + 0] = H4;
H4 = 2;
H3[H1 + 1] = H4;
H1 = H0;
H3 = 100;
H4 = H1 + H3;
H1 = H4;
H0 = H1;
state = 1; break;
case 3:
return;
} } }


function initializer() {
var H0;
var H1;
var state = 0;
for (;;) {
switch (state) {
case 0:
return;
} } }

clue_add_initializer(initializer);


яничегонепонял.jpg

EmStudio
()
Ответ на: комментарий от raa

translate - переводить с одного языка на другой (в т.ч. и на язык машинных кодов) compile - собирать (компоновать) программу, например из объектных модулей.

Когда инструмент является одновременно транслятором и компилятором - я еще могу понять, поячему говорят "компилятор" на транслятор. Но когда транслятор является только транслятором, тогда мне становистянепонятно, зачем его обзывают компилятором :) Или же сабж действительно является компилятором? Поясните плиз кто в теме.

raa
()
Ответ на: комментарий от raa

Автор называет свое детище компилятором. Дело в том, что разбор кода производит gcc (который уж точно компилятор), но генерируется из промежуточного, оптимизированного представления не ассемблер, а код на языке высокого уровня.

Loh ★★
() автор топика
Ответ на: комментарий от raa

>Или же сабж действительно является компилятором? Поясните плиз кто в теме.
На входе код на C — на выходе код на одном из перечисленных языков. Смекаешь, что это?

anonymous
()
Ответ на: комментарий от Loh

точнее "Clue is based on the sparse C compiler frontend" - который еще Линус в Трансмете ваял.

anonymous
()
Ответ на: комментарий от Loh

> Автор называет свое детище компилятором. Дело в том, что разбор
> кода производит gcc (который уж точно компилятор), но генерируется

> из промежуточного, оптимизированного представления не ассемблер, а

> код на языке высокого уровня.


Тогда понятно, почему на выходе такой странный код :-D В таком случае, его детище скорее является дизасемблером ))) Впрочем, независимо от названия, автору респект. :-)

raa
()

интересно, а какой язык и среда исполнения/VM "самый кривой"?

Берём компилятор из этого языка в Си. Транслируем, потом полученный си код запускаем под сабжем. Переводим сабжем его назад в среду "этого языка". Сравниваем с первоначальным вариантом, и подсчитываем оверхед.

anonymous
()

для R вроде пытались делать бенчмарк: переводим код на R в язык X (лисп, си, перл, питон, луа, ...). Сравниваем перевёдённое с оригинальным. Любопытно, что вариант "R через Lisp" ускорился в несколько раз.

anonymous
()

Приплюснутого Си нет. Не-Ъ :(

PITJ
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.