LINUX.ORG.RU

А как у common lisp дела с производительностью?

 


4

10

Решил покурить cl ,не ну реально красивый язык. Учить решил по книге Practical Common Lisp (может посоветуете что ещё?), а запускать код на clisp. Ну так вот какие реализации языка предпочесть? Касаемо книг хотелось бы что то типа k&r, в такой же манере, но для common lisp, ну вы поняли.

Ну и вообще что посоветуете начинающему лисперу?

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

Напоминаю, что речь о компиляторе а не об интерпритаторе. Интерпретатор, конечно, сделать можно. А компилятор - нет. Не получится заставить рантай общелиспа «притвориться» рантаймом схемы. Они кардинально разные.

С какой радости речь стала идти об интерпретаторе? Да, это не будет компиляцией в натив, это будет «неполноценный» компиляцией в «CL-натив», но никакой интерпретации на этапе выполнения не будет. Будет жутко неоптимальный код.

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

Для тестировантя производительности реализаций схемы есть набор стандартныю тестов.

Не я пытаюсь доказать, что «схема на CL - трэш и угар, если вообще возможна»

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

Так больше использовать нечего.

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

в, это будет «неполноценный» компиляцией в «CL-натив»,

Компиляцию в cl-натив сделать нельзя, не важно полноценную или нет. Только интерпретацию.

но никакой интерпретации на этапе выполнения не будет.

Без интерпретации не получится изза несовместимости рантаймов. Придется моделировать рантайм схемы как объект общелиспового рантайма - то есть интерпретировать.

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

я всегда думал, что «интерпретировать» в области компьютерных языков означает несколько другое. Но если ты настаиваешь...

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

Интерпретация - мроцесс исполнпния программы интерпретатором. Ты другое определение знаешь?

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

Ну не будет в таком режиме «исполнпния программы интерпретатором». Будет создание «интерпретирующим компилятором» по схемному коду CL-кода, а уж как он будет выполняться - покомандно или сначала будет целиком откомпилирован и потом запущен - зависит от условий запуска, как и любого другого CL-кода. Можно с натягом сказать, что для данного схемного кода будет написан свой «шитый интерпретатор» (для этого и только для этого кода), а уж он будет откомпилирован. Но назвать подобный процесс интерпретацией «в чистом виде» у меня язык не поворачивается :)

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

Будет создание «интерпретирующим компилятором» по схемному коду CL-кода

Так в том и дело, что нет. У ебя вместо cl-кода будет код на промежуточном языке, который будет скармливаться интерпретатору, притворяющемуся рантаймом схемы.

н и потом запущен - зависит от условий запуска, как и любого другого CL-кода.

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

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

ак в том и дело, что нет. У ебя вместо cl-кода будет код на промежуточном языке, который будет скармливаться интерпретатору, притворяющемуся рантаймом схемы.

нет, ибо нет разницы: рантайм схемы, написанный на схеме, си или CL-е, будет откомпилирован и работать «в нативе».

Кросскомпилятор на cl ее обеспечить ее сможет, нельзя рантайм общелиспа заставить вести себя как рантайм схемы.

Да, местами он будет её эмулировать. Но тебя, почему-то, очень «парит», что будет стоять за «конкретной семантикой схемы» - 100 или 10 000 процессорных инструкций.

Ладно, спор беспредметный, ибо ты пытаешься доказать принципиальное несуществование чего-то, я же, дабы не нарваться на «не веришь - напиши», пытаюсь выудить из тебя эти самые принципы, а в ответ получаю только «нельзя и всё».

Эмулировать tco можно? Можно. Что ещё хочешь?

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

: рантайм схемы, написанный на схеме, си или CL-е, будет откомпилирован и работать «в нативе».

На схеме или общелиспе нельзя написать рантайм схемы, об том и речь. Для этого нужны как минимум операции работы с памятью - а их нет, тогда память придется эмулировать и получается интерпретатор.

о тебя, почему-то, очень «парит», что будет стоять за «конкретной семантикой схемы» - 100 или 10 000 процессорных инструкций.

Нет непарит. Какая мне разница сколько там инструкций? Вопрос же в том, можно заменить код на схеме кодом на обеиспе. Ответ - очевиднонет, из-за неовместимости придется делать эмуляцию рантайма и инерпретировать промежуточны код.

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

Эмулировать tco можно?

Конечно, нет. Для этого надо иметь прямой доступ к стеку, а у общелиспа его нет.

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

Какая буква в слове «миниинтерпретатор» тебе не понятна?

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