Linux.org.ru
Новости - Галерея - Форум - Трекер - Wiki - Поиск
[#]  

Clue 0.5, теперь и в Java

Clue — компилятор ANSI C для динамических языков и виртуальных машин. Может генерировать lua, javascript, perl, lisp, C и, в последней версии, java.

>>> Подробности.

Метки: программирование

Loh ** (17.12.2008 14:51:41)
Проверено: anonymous_incognito (18.12.2008 8:54:03)

[#]  
gods-little-toy (фотография)

Re: Clue 0.5, теперь и в Java

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

gods-little-toy ** (17.12.2008 17:00:33)
[#]  
Aceler (фотография)

Re: Clue 0.5, теперь и в Java

Вот бы наоборот, а.

Aceler ***** (17.12.2008 21:08:20)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от Aceler 17.12.2008 21:08:20  

Re: Clue 0.5, теперь и в Java

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

Loh ** (18.12.2008 0:32:18)
[#]  

Re: Clue 0.5, теперь и в Java

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

// colored

anonymous (18.12.2008 10:17:10)
[#]  
fpga (фотография)

Re: Clue 0.5, теперь и в Java

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

fpga (18.12.2008 11:08:39)
[#]  

Re: Clue 0.5, теперь и в Java

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

anonymous (18.12.2008 11:27:01)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от fpga 18.12.2008 11:08:39  

Re: Clue 0.5, теперь и в Java

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

manlee (18.12.2008 11:28:29)
[#]  

Re: Clue 0.5, теперь и в Java

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

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

st0ke * (18.12.2008 12:11:30)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от st0ke 18.12.2008 12:11:30  

Re: Clue 0.5, теперь и в Java

Хотелось бы услышать критерии полноценности.

VladimirP ** (18.12.2008 12:23:43)
[#]  
xintrea (фотография)

Re: Clue 0.5, теперь и в Java

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

xintrea * (18.12.2008 12:25:54)
[#]  
jtootf (фотография)

Re: Clue 0.5, теперь и в Java

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

jtootf ** (18.12.2008 12:38:52)
[#]  

Re: Clue 0.5, теперь и в Java

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

anonymous (18.12.2008 12:43:42)
[#]  

Re: Clue 0.5, теперь и в Java

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

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

чочо?

anonymous (18.12.2008 12:49:19)
[#]  

Re: Улика 0.5, теперь и с банновым вкусом!

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

anonymous (18.12.2008 12:54:10)
[#]  

Re: Clue 0.5, теперь и в Java

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

aliens * (18.12.2008 13:10:14)
[#]  
cap838383 (фотография)

Re: Clue 0.5, теперь и в Java

Что это ?

cap838383 (18.12.2008 13:10:46)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от aliens 18.12.2008 13:10:14  

Re: Clue 0.5, теперь и в Java

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

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

anonymous (18.12.2008 13:13:35)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от anonymous 18.12.2008 13:13:35  

Re: Clue 0.5, теперь и в Java

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

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

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

anonymous (18.12.2008 13:16:42)
[#]  

Re: Clue 0.5, теперь и в Java

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

anonymous (18.12.2008 13:18:01)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от anonymous 18.12.2008 13:18:01  
fpga (фотография)

Re: Clue 0.5, теперь и в Java

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

Да да, конечно. Ну если ты понял: в двух словах опиши что же это такое. "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 (18.12.2008 13:57:50)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от fpga 18.12.2008 13:57:50  

Re: Clue 0.5, теперь и в Java

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

Какие все прагматики стали, такие как ты в 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 (18.12.2008 14:06:36)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от anonymous 18.12.2008 14:06:36  

Re: Clue 0.5, теперь и в Java

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

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

st0ke * (18.12.2008 14:12:39)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от anonymous 18.12.2008 14:06:36  
fpga (фотография)

Re: Clue 0.5, теперь и в Java

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

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

fpga (18.12.2008 14:13:08)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от fpga 18.12.2008 13:57:50  

Re: Clue 0.5, теперь и в 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 и арифметики указателей, например).

anonymous (18.12.2008 14:22:10)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от anonymous 18.12.2008 14:22:10  
fpga (фотография)

Re: Clue 0.5, теперь и в Java

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

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

fpga (18.12.2008 14:44:16)
[#]  

Re: Clue 0.5, теперь и в Java

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

AiFiLTr0 * (18.12.2008 14:52:17)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от fpga 18.12.2008 14:13:08  

Re: Clue 0.5, теперь и в Java

ты это можешь делать уже лет 10 - кури про JNI

anonymous (18.12.2008 15:06:40)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от anonymous 18.12.2008 15:06:40  

Re: Clue 0.5, теперь и в Java

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

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

Korwin ** (18.12.2008 15:26:02)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от Korwin 18.12.2008 15:26:02  
dimon555 (фотография)

Re: Clue 0.5, теперь и в Java

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

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

dimon555 ** (18.12.2008 16:12:44)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от dimon555 18.12.2008 16:12:44  

Re: Clue 0.5, теперь и в Java

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

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

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

anonymous (18.12.2008 16:47:44)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от anonymous 18.12.2008 12:49:19  

Re: Clue 0.5, теперь и в Java

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

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

>чочо?

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

Loh ** (18.12.2008 16:52:01)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от anonymous 18.12.2008 10:17:10  

Re: Clue 0.5, теперь и в Java

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

Их есть у нас: http://manju.cs.berkeley.edu/cil/

anonymous (18.12.2008 18:12:44)
[#]  
EmStudio (фотография)

Re: Clue 0.5, теперь и в Java

До

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 # (18.12.2008 21:59:37)
[#]  

Re: Clue 0.5, теперь и в Java

Мне одному показалось, что это не компиляция, а трансляция?

raa (19.12.2008 1:47:19)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от raa 19.12.2008 1:47:19  

Re: Clue 0.5, теперь и в Java

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

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

raa (19.12.2008 1:56:43)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от raa 19.12.2008 1:56:43  

Re: Clue 0.5, теперь и в Java

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

Loh ** (19.12.2008 2:13:42)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от raa 19.12.2008 1:56:43  

Re: Clue 0.5, теперь и в Java

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

anonymous (19.12.2008 2:14:31)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от Loh 19.12.2008 2:13:42  

Re: Clue 0.5, теперь и в Java

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

anonymous (19.12.2008 3:40:49)
[#] Ответ на: Re: Clue 0.5, теперь и в Java от Loh 19.12.2008 2:13:42  

Re: Clue 0.5, теперь и в Java

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

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

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


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

raa (19.12.2008 13:00:11)
[#]  

Re: Clue 0.5, теперь и в Java

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

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

anonymous (19.12.2008 15:57:46)
[#]  

Re: Clue 0.5, теперь и в Java

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

anonymous (19.12.2008 16:00:03)
[#]  

Re: Clue 0.5, теперь и в Java

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

PITJ (19.12.2008 18:58:54)
[#]  
Correctnoe_imya_polzovatelya (фотография)

Re: Clue 0.5, теперь и в Java

лисп говорите...

Correctnoe_imya_polzovatelya *** (22.12.2008 17:24:07)

http://www.linux.org.ru/

Rambler's Top100 TopList