LINUX.ORG.RU

CLPython - lisp реализация языка Python


0

0

Большая часть возможностей языка (основные типы данных, функции, классы, метаклассы, замыкания, генераторы) уже реализованы.
>>> def fact(n):
... if n <= 1:
... return 1
... else:
... return n * fact(n-1)
...
#<python-function fact @ #x71d67c9a>
>>> fact(6)
720
>>> :q
Bye

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



Проверено: Shaman007 ()

Re: CLPython - lisp реализация языка Python

там хвостовая рекурсия оптимизируется или нет?

scotinomys ()
Ответ на: Re: CLPython - lisp реализация языка Python от gtbear

Re: CLPython - lisp реализация языка Python

>ну и нафига оно надо?

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

Sun-ch ()
Ответ на: Re: CLPython - lisp реализация языка Python от Sun-ch

Re: CLPython - lisp реализация языка Python

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

В цитатник..

anonymous ()

Re: CLPython - lisp реализация языка Python

максимум писать на перле. Но пистон зачем сдался?

anonymous ()

Re: CLPython - lisp реализация языка Python

Осталось только реализовать Лисп на Питоне и тогда ...

anonymous ()
Ответ на: Re: CLPython - lisp реализация языка Python от ugoday

Re: CLPython - lisp реализация языка Python

исходники к нему тут:
ftp://common-lisp.net/pub/project/clpython/releases/20060702/clpython_2006070...

но работает он пока что только на Allegro CL,
надо качать триальную версию с http://www.franz.com/downloads/

scotinomys ()
Ответ на: Re: CLPython - lisp реализация языка Python от Sun-ch

Re: CLPython - lisp реализация языка Python

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

Что и сказать, сильный аргумент. И конечно, ради этого стоит делать своою реализацию Python.

kda ★★★★★ ()
Ответ на: Re: CLPython - lisp реализация языка Python от Sun-ch

Re: CLPython - lisp реализация языка Python

>>наслаждайся http://www.ibiblio.org/obp/py4fun/

>Фигня, имхо, даже на курсовик не потянет.

ну никто и не утверждал, что это полноценная реализация

зато на приличную лабу вполне потянет :)

зы: брось, у нас в универе в качестве курсовиков такое Г здавали, причем кода там на пару страниц

anonymous ()
Ответ на: Re: CLPython - lisp реализация языка Python от Sun-ch

Re: CLPython - lisp реализация языка Python

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

Шутник, однако. В оригинале, отступы есть. Или у интерпретатора какая-то продвинутая эвристика, чтобы оперелять, где начинается и кончается блок?

watashiwa_daredeska ★★★★ ()
Ответ на: Re: CLPython - lisp реализация языка Python от asko

Re: CLPython - lisp реализация языка Python

>А нативный python, как я понимаю - всего лишь интерпретатор?

Разве? А ну теперь я понимаю, почему мне целый час доказывали, что пых-пых рвет его как тузек грелку.

Sun-ch ()
Ответ на: Re: CLPython - lisp реализация языка Python от Sun-ch

Re: CLPython - lisp реализация языка Python

> Фигня, имхо, даже на курсовик не потянет.

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

watashiwa_daredeska ★★★★ ()

Re: CLPython - lisp реализация языка Python

Ёще один язык программирования для OS GNU Emacs. Да здравствует Столлман!!!

anonymous ()
Ответ на: Re: CLPython - lisp реализация языка Python от watashiwa_daredeska

Re: CLPython - lisp реализация языка Python

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

>Шутник, однако. В оригинале, отступы есть. Или у интерпретатора какая-то продвинутая эвристика, чтобы оперелять, где начинается и кончается блок?

Вот за эти отступы Пытон и уполз 3 или 4 года назад в биореактор. Perl forever!!!!

anonymous ()
Ответ на: Re: CLPython - lisp реализация языка Python от anonymous

Re: CLPython - lisp реализация языка Python

> Вот за эти отступы Пытон и уполз 3 или 4 года назад в биореактор. Perl forever!!!!

Perl foreva за реальную перловку. Не менее 80 символов на строку!!! - вот на дефиз!!! Дайошъ прямоугольные исходники!!! Неровные углы у сорца? - В биореактор!!!

Здраво, однако

mutable ()
Ответ на: Re: CLPython - lisp реализация языка Python от anonymous

Re: CLPython - lisp реализация языка Python

> тогда вот http://www.biostat.wisc.edu/~annis/creations/PyLisp/

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

watashiwa_daredeska ★★★★ ()
Ответ на: Re: CLPython - lisp реализация языка Python от kda

Re: CLPython - lisp реализация языка Python

>Что и сказать, сильный аргумент. И конечно, ради этого стоит делать своою реализацию Python.

не просто сильный, а ГЛАВНЫЙ

Led ★★★☆☆ ()
Ответ на: Re: CLPython - lisp реализация языка Python от Sun-ch

Re: CLPython - lisp реализация языка Python

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

а мне нравятся! к стати "пистон" в этом (использование отступов) не одинок хаскелевы лейауты из той же оперы, и надо сказать, что в хаскеле этот стиль (с отступами) очень популярен (и рекомендован к использованию). так чта гражданин атсасите!

anonymous ()
Ответ на: Re: CLPython - lisp реализация языка Python от anonymous

Re: CLPython - lisp реализация языка Python

>хаскелевы лейауты из той же оперы, и надо сказать, что в хаскеле этот стиль (с отступами) очень популярен (и рекомендован к использованию).

"Один из стилей" (в хаскеле) и "единственно возможный" (в пайтоне) - бедному анонимному гуманитарию, конечно же, не под силу уловить разницу:)

>так чта гражданин атсасите!

астсасывают обычно анонимусы (по причине недостатка образования):)

Led ★★★☆☆ ()
Ответ на: Re: CLPython - lisp реализация языка Python от ugoday

Re: CLPython - lisp реализация языка Python

http://trac.common-lisp.net/clpython/ почему-то отвалился, но там было написано, что ACL выбран из-за местного yacc. Почитай исходники, там всякие defgrammar торчат...

Там ещё было сказано в том смысле, что Allegro CL требуется _пока_. То есть я так понял есть планы то ли реализовать yacc, чтобы он был доступен и в других CL, то ли переписать без него. Наверное скорее первое.

Teak ★★★★★ ()
Ответ на: Re: CLPython - lisp реализация языка Python от Sun-ch

Re: CLPython - lisp реализация языка Python

> А ну теперь я понимаю, почему мне целый час доказывали, что пых-пых рвет его как тузек грелку

гы гы ...
да тебя жестоко обманули по обоим пунктам:
1. Нативный python - это не "всего лишь" интерпретатор. Например рекомендуется задуматься о назначении расширений .py, .pyc и .pyo
2. Никакой пых пых по скорости с питоном и рядом не валялся.

Пример fact(100):
time php fact.php
9.3326215443944E+157
real 0m0.081s
user 0m0.056s
sys 0m0.016s


time python fact.py
93326215443944152681699238856266700490715968264381621468592963895217599993229915 608941463976156518286253697920827223758251185210916864000000000000000000000000

real 0m0.054s
user 0m0.036s
sys 0m0.012s

n-tony ()
Ответ на: Re: CLPython - lisp реализация языка Python от n-tony

Re: CLPython - lisp реализация языка Python

Я бы сказал, обе цифры в пределах погрешности такого рода измерений. :) Да и не сильно друг от друга отличаются. И вообще смотреть надо... Короче на бенчмарк не тянет никак.

Teak ★★★★★ ()
Ответ на: Re: CLPython - lisp реализация языка Python от n-tony

Re: CLPython - lisp реализация языка Python

Прикольно, что предыдущий результат был получен на python 2.3, а вот на 2.4 еще веселее:
time python2.4 fact.py
93326215443944152681699238856266700490715968264381621468592963895217599993229915 608941463976156518286253697920827223758251185210916864000000000000000000000000

real 0m0.034s
user 0m0.028s
sys 0m0.004s

Это уже по сравнению с php в 2,5 раза разница.
PHP использовался 4.4.2

n-tony ()
Ответ на: Re: CLPython - lisp реализация языка Python от n-tony

Re: CLPython - lisp реализация языка Python

Но надо сказать что в последнем пыхпыхе над скоростью тоже поработали:

time ../builds/php5.1.4/out/cli/php fact.php
9.3326215443944E+157
real 0m0.047s
user 0m0.024s
sys 0m0.016s

Однако змея все равно впереди :)

n-tony ()
Ответ на: Re: CLPython - lisp реализация языка Python от n-tony

Re: CLPython - lisp реализация языка Python

sco@solo:/tmp$ cat > fact.py
fact = lambda n: n<=1 and 1 or n*fact(n-1)
print fact(100)

sco@solo:/tmp$ cat > pass.py
pass

sco@solo:/tmp$ time python fact.py
93326215443944152681699238856266700490715968264381621468592963895217599993229915 608941463976156518286253697920827223758251185210916864000000000000000000000000

real 0m0.060s
user 0m0.036s
sys 0m0.024s
sco@solo:/tmp$ time python fact.py
93326215443944152681699238856266700490715968264381621468592963895217599993229915 608941463976156518286253697920827223758251185210916864000000000000000000000000

real 0m0.059s
user 0m0.044s
sys 0m0.016s
sco@solo:/tmp$ time python pass.py

real 0m0.058s
user 0m0.048s
sys 0m0.012s
sco@solo:/tmp$ time python pass.py

real 0m0.057s
user 0m0.044s
sys 0m0.016s

scotinomys ()
Ответ на: Re: CLPython - lisp реализация языка Python от ugoday

Re: CLPython - lisp реализация языка Python

Ок, парни, раз вы настаиваете: модифицируем обе проги чтобы fact(100) выполнялось в цикле 10000 раз. Получаем:

time python2.4 fact.py

real 0m1.588s
user 0m1.544s
sys 0m0.040s


time ../builds/php5.1.4/out/cli/php fact.php

real 0m2.124s
user 0m2.084s
sys 0m0.036s

Ну и ради смеха php4.4.2, который на текущий момент наиболее популярен у хостеров:
time ../builds/php4.4.2/out/cli/php fact.php

real 0m3.069s
user 0m2.944s
sys 0m0.116s

n-tony ()
Ответ на: Re: CLPython - lisp реализация языка Python от n-tony

Re: CLPython - lisp реализация языка Python

SBCL 0.9.13:

(defun fact (n) (if (<= n 1) 1 (* n (fact (1- n)))))

(time (dotimes (g 10000) (fact 100)))
Evaluation took:
0.179 seconds of real time
0.170974 seconds of user run time
0.007999 seconds of system run time
0 page faults and
38,640,048 bytes consed.
NIL

kpanic ★★ ()
Ответ на: Re: CLPython - lisp реализация языка Python от kpanic

Re: CLPython - lisp реализация языка Python

kpanic, вероятно приведя эти цифры ты подразумеваешь что у нас с тобой одинаковые тачки, одинаковый набор прог запущен и т.п. ?
В чем смысл этих цифр ?

P.S. я запускал на ноутбуке с Celeron-M 1.6 Ghz, 256 Mb RAM, kernel 2.6.16.12, Debian Sarge, KDE (konsole)

n-tony ()
Ответ на: Re: CLPython - lisp реализация языка Python от ugoday

Re: CLPython - lisp реализация языка Python

PHP vs. Python это банально и неинтересно.

зато вот такой код: fib = lambda n: n<=2 and 1 or (fib(n-2) + fib(n-1))

у меня под python-2.4 и под этим самым CLPython работает примерно с одинаковой скоростью -- fib(36) вычисляется за 68-70 сек.

при этом объём кода CLPython меньше на порядок

scotinomys ()
Ответ на: Re: CLPython - lisp реализация языка Python от n-tony

Re: CLPython - lisp реализация языка Python

В CPython:
>>> from time import clock
>>> def fact(n):
	if n <= 1:
		return 1
	else:
		return n * fact(n-1)
>>> def test():
	beg = clock()
	x = xrange(10000)
	for i in x: fact(100)
	print clock() - beg
>>> test()
1.13079315947

В CLPython:
>>> def fact(n):
...   if n <= 1:
...     return 1
...   else:
...     return n * fact(n-1)
... 
#<python-function fact @ #x2140e412>
>>> def test():
...   x = xrange(10000)
...   for i in x: fact(100)
... 
; While compiling test:
Warning: Variable i is never used.
#<python-function test @ #x21440c82>
>>> time(test)
; cpu time (non-gc) 1,011 msec user, 0 msec system
; cpu time (gc)     30 msec user, 0 msec system
; cpu time (total)  1,041 msec user, 0 msec system
; real time  1,042 msec
; space allocation:
;  5 cons cells, 45,440,176 other bytes, 0 static bytesNone

в обоих случаях - выбрал лучший из 5 замеров

Как видите CLPython быстрее, хоть и не намного!!!

PS: если хотите померять сами:

в builins.cl вставить:
(defun pybf:time (f) (time (py-call f)))

в package.cl в секции :export добавить :time

PPS: моя AMD Athlon XP 1800

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