> 1 <

Автор Сообщение

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1133   2010-01-13 15:23 GMT+3 часа(ов)      
Pure - новый язык функционального программирования. Судя по руководству, довольно мощный.
ИМХО, языки подобные Pure составят жесткую конкуренцию Лиспу. Поэтому, как мне кажется Лисп в ближайшем будущем ждут довольно значительные изменения(обновления), а иначе и быть не может Т.к. я думаю, что разработчики Лисп систем не забыли уроки прошлого.

antares0

Members


Статус

185 сообщений

Где: Russia
Род занятий:
Возраст:

#1135   2010-01-13 17:41 GMT+3 часа(ов)      
К такому, скажем прямо, революционному известию, хорошо бы приложить список конкурентных примуществ, примеры мощности и выразительности. Вобще упоминание интерпретатора в начале вышеуказаного мануала, сразу многое поясняет о мощности языка.
Замечание 1) Академических языков было и будет достаточео много. Несмотрря на такое многообразие, лисп еще остается самим собой, не слишком менясь с течением времени.
Замечание 2) Обычно люди котрые пытаются усовершенствовать или заменить лисп, обычно или хотят другой язык адресуя свои претензии почему то к лиспу или вобще лиспа не знают Это такое личное наблюдение.

antares0

Members


Статус

185 сообщений

Где: Russia
Род занятий:
Возраст:

#1136   2010-01-13 18:12 GMT+3 часа(ов)      
Совсем по диагонали читал. Все же term rewriting и LLVM

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1137   2010-01-13 18:25 GMT+3 часа(ов)      
Обратите внимание, я Pure не хвалил. Для меня Схема идеал. Признайте, что для академического языка Pure достаточно мощный, хотя реализация явно не оптимизирована. Нормальных реализаций лиспа обладающих подобными возможностями можно по пальцам пересчитать.

antares0

Members


Статус

185 сообщений

Где: Russia
Род занятий:
Возраст:

#1138   2010-01-13 18:43 GMT+3 часа(ов)      
Так не в том дело кто и за что хвалил. Интересны личные мнения. Раз есть ссылка значит что-то зацепило, но вот что?
То есть какие возможности и какие лисп-реализации им обладают?
То есть я с первого взгляда ничего такого не вижу. Ну не лисп, ну term rewriting, ну и что дальше?

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1141   2010-01-14 01:05 GMT+3 часа(ов)      
Я три дня мучился пытаясь наладить взаимодействие с gnuplot. А у Pure это плагин. Собственно это и зацепило. Т.е. хочется работать, а не терять время на настройку кривых библиотек.
Цитата
antares0 :То есть я с первого взгляда ничего такого не вижу. Ну не лисп, ну term rewriting, ну и что дальше?

С перезаписью термов я(как впрочем и вы) сталкиваюсь постоянно, когда пишу на лиспе. Это обычный процесс. Если не догадались, то, например, макрос let выполняет по сути перезапись термов. ИМХО, Pure - это попытка создать лисп с хаскело подобным синтаксисом. Я думаю, в этом и есть его фишка

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1274   2010-01-30 03:56 GMT+3 часа(ов)      
Прямо из мануала следует, что Pure позволяет оптимизировать термы. Довольно интересное свойство, не так ли? Хороший лисп делает это за нас, но правда не всегда и к тому же не позволяет увидеть результат оптимизации.
С оптимизацией термов:
> x*y+x*z = x*(y+z);
> a*(3*4)+a*5;
a*17
> foo x = 2*3*x;
> show foo
foo x = 6*x;
Без нее:
> #! --nofold
> bar x = 2*3*x;
> show bar
bar x = 2*3*x;

Но это уже лисп какой-то
> let x = '(2*42+2^12); x;
2*42+2^12
> eval x;
4180.0
> foo x = c*x;
> foo 99;
c*99
> let c = 2; foo 99;
198
> let c = 3; foo 99;
297

отредактировал(а) misha: 2010-01-30 04:44 GMT+3 часа(ов)

ander-skirnir

Members


Статус

227 сообщений
http://lisper.ru
Где: Ukraine
Род занятий: `'`,`',`',
Возраст: 28

#1418   2010-02-13 03:20 GMT+3 часа(ов)      
Такой синтаксис легко реализовать на common-lisp.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1421   2010-02-13 15:55 GMT+3 часа(ов)      
Легко? Вы шутите
Этот синтаксис, имхо, главный недостаток Pure. Но он же и его фишка.

ander-skirnir

Members


Статус

227 сообщений
http://lisper.ru
Где: Ukraine
Род занятий: `'`,`',`',
Возраст: 28

#1428   2010-02-13 20:22 GMT+3 часа(ов)      
Легко. Не шучу. А его использование будет выглядеть, например, вот так:

(with-pure-syntaxis
|
let x = '(2*42+2^12);
eval x;
foo x = c*x;
|
:fold-terms T)

И еще, эта "оптимизация термов" - отчётливо демонстрирует, что разработчики вместо компила в оптимизированный нативный код, решили просто хранить код функции в виде данных, что очень плохо. Такое решение было бы понятно со стороны первокурсника, который решил написать компилятор. Я сам таков.

Я могу и ошибаться, в том маловероятном случае, если у них всё компилится честно, а результат show - это декомпил с хитрыми привязками имён к метаданным и еще какими-то чертями, но это действительно очень вряд-ли.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1456   2010-02-14 02:54 GMT+3 часа(ов)      
Похожий синтаксис состряпать не проблема. Но для точной копии потребуется реализовать собственную подсистему типов, продумать где и как хранить имена ф-ций и переменных, реализовать области видимости, разработать парсер, оптимизатор и т.д. То есть написать собственный интерпретатор. А за чем?

Вы в Схеме разбираетесь?

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1457   2010-02-14 03:12 GMT+3 часа(ов)      
Цитата
ander-skirnir :
И еще, эта "оптимизация термов" - отчётливо демонстрирует, что разработчики вместо компила в оптимизированный нативный код, решили просто хранить код функции в виде данных, что очень плохо. Такое решение было бы понятно со стороны первокурсника, который решил написать компилятор. Я сам таков.
А как вы думаете устроен интерпретатор Лиспа?
Цитата
ander-skirnir :
Я могу и ошибаться, в том маловероятном случае, если у них всё компилится честно, а результат show - это декомпил с хитрыми привязками имён к метаданным и еще какими-то чертями, но это действительно очень вряд-ли.
Как раз декомпил довольно просто реализовать, если обратить внимание на оптимизацию термов.

ander-skirnir

Members


Статус

227 сообщений
http://lisper.ru
Где: Ukraine
Род занятий: `'`,`',`',
Возраст: 28

#1458   2010-02-14 04:38 GMT+3 часа(ов)      
>> разработать парсер
Достаточно будет обработки, затем юзать (read).

with-pure-syntaxis будет макросом, его расширение для кода, привёденного выше, может быть, например, таким:
(defvar x '(+ (* 2 42) (^ 2 12)))
(eval x)
(defun foo (x)
(* c x))

>> Вы в Схеме разбираетесь?
Для меня схема неудобна, я предпочитаю common-lisp.

>> А как вы думаете устроен интерпретатор Лиспа?
Не знаю о каком конкретно "интерпретаторе Лиспа" Вы спросили, но sbcl, например, при объявлении функции, компилит её в машинный код.

>> Как раз декомпил довольно просто реализовать, если обратить внимание на оптимизацию термов.
Мне так не кажется, декомпил сложнее компила. "Оптимизация термов" на сложность декомпила не повлияет.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1459   2010-02-14 13:43 GMT+3 часа(ов)      
Цитата
Не знаю о каком конкретно "интерпретаторе Лиспа" Вы спросили, но sbcl, например, при объявлении функции, компилит её в машинный код.

Не все так просто, компиляции подлежат только простенькие функции. А если функция содержит в себе eval и состоит из нескольких частей, модифицируемых в процессе работы. То как не крути полностью ее скомпилировать не удастся.
Цитата
Мне так не кажется, декомпил сложнее компила. "Оптимизация термов" на сложность декомпила не повлияет.

Ошибаетесь. Хорошо оптимизированный код декомпилировать автоматически довольно сложно. Pure устроен гораздо проще.

archimag

Members


Статус

48 сообщений

Где: Russia
Род занятий:
Возраст:

#1460   2010-02-14 19:54 GMT+3 часа(ов)      
Не все так просто, компиляции подлежат только простенькие функции.


Что за ерунду вы говорите? SBCL даже введённый в REPL код сначала компилирует, а только потом исполняет. eval в функциях встречается весьма редко, но даже в этом случае сначала будет компиляция, а уже потом исполнение.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1461   2010-02-14 20:57 GMT+3 часа(ов)      
Вы говорите о предкомпиляции, а я о полной компиляции в байт-код без хранения каких-либо данных.

ander-skirnir

Members


Статус

227 сообщений
http://lisper.ru
Где: Ukraine
Род занятий: `'`,`',`',
Возраст: 28

#1462   2010-02-14 21:16 GMT+3 часа(ов)      
A = `декомпил довольно просто реализовать, если обратить внимание на оптимизацию термов`
B = `хорошо оптимизированный код декомпилировать автоматически довольно сложно`

При некоторых разумных допущениях:
A = ¬B

Однако, благодаря словам "термов" и "автоматически", можно при необходимости извернуть смысл как угодно.

archimag

Members


Статус

48 сообщений

Где: Russia
Род занятий:
Возраст:

#1463   2010-02-14 21:16 GMT+3 часа(ов)      
Вы говорите о предкомпиляции, а я о полной компиляции в байт-код без хранения каких-либо данных.


Какой ещё байт-код? Вы вообще что такое SBCL знаете? Я говорю о компиляции в машинный код.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1464   2010-02-14 23:33 GMT+3 часа(ов)      
Я говорил не о sbcl конкретно. А впрочем, какая разница во что компилируется, в байт-код или в машинный код. В машинный код компилировать не сложнее, чем в байт-код, но его сложнее оптимизировать. Поэтому обычно компилируется в байт-код, т.к. его проще оптимизировать. А байт-код далее обычно переводится в машинный код.

Михаил

Members


Статус

120 сообщений

Где: ---
Род занятий:
Возраст:

#1466   2010-02-14 23:56 GMT+3 часа(ов)      
Мда, слил наш мишаня.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1467   2010-02-15 00:08 GMT+3 часа(ов)      
А как вы думаете реализована оптимизированная компиляция? Это не я придумал.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1468   2010-02-15 00:10 GMT+3 часа(ов)      
Читаем классику Ахо, Сети, Ульман "Компиляторы: Принципы, Технологии, Инструменты"

slobin

Members


Статус

9 сообщений

Где: Russia
Род занятий:
Возраст:

#1945   2010-05-04 06:46 GMT+3 часа(ов)      
Моё скромное ХО: Pure -- это вообще не язык программирования, это калькулятор. Очень мощный калькулятор. Он конкурирует не с Лиспом, а со всякими Математиками и прочими. Сам автор его, насколько я понял, для signal processing использует. А один мой знакомый с его помощью исполнил мечту сопливого детства по мотивам "Занимательной арифметики" Перельмана: посчитал-таки pow 9 (pow 9 9); Вот просто так набрал и посчитал, не думая об особенностях биндингов своего любимого языка к gnu multiprecision library. Ответ занял 400 мегабайт. А лично моя любимая фишка -- вот:

> x:y:z = y:x:z if x>y;
> [3,1,2,5,4];
[1,2,3,4,5]

Понятно, что игрушка и несерьёзно, но крышу сносит! ;-)

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#1951   2010-05-04 22:57 GMT+3 часа(ов)      
>Pure -- это вообще не язык программирования, это калькулятор.
Вам не нравится хаскелло подобный синтаксис? Лично мне больше нравится SML подобный, но на Pure многие простые вещи выглядят проще.

> x:y:z = y:x:z if x>y;
Опасная фишка)
> 1 <


Онлайн :

0 пользователь(ей), 35 гость(ей) :




Реклама на сайте: