LINUX.ORG.RU

Python vs Lisp. Расстановка точек


0

1

питон:

den@ira-desktop:~/work/test$ time python -O test.py 
('answer: ', 39)

real	0m33.035s
user	0m32.890s
sys	0m0.084s
den@ira-desktop:~/work/test$

clisp:

den@ira-desktop:~/work/test$ time clisp test.lsp
39

real	2m44.491s
user	2m42.970s
sys	0m1.464s
den@ira-desktop:~/work/test$

def test():
    r = 0
    for i in range(0, 10000):
        for j in range(0, 10000):
            r = (r + (i * j) % 100) % 47
    return r
r = test()
print("answer: ", r)
(defun test ()
    (setq r 0)
    (dotimes (i 10000 r)
        (dotimes (j 10000 r)
            (setq r (mod (+ r (mod (* i j) 100)) 47))
        )
    )
)

(write (test))

а теперь докажите, что лисп не тормознутое УГ

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

> приведите пример места, где он преподается первым, базовым или основным?

Раньше в очень многих университетах лисп был первым языком, никому мозги это не ломало. Сейчас больше Haskell и ML первыми идут, иногда Python.

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

> Собственно, кодогенерация - это вообще единственное, на что лисп

годится. Но зато это он делает лучше всех прочих.


Очень смешно.

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

> Java и C имеют более ужасный синтаксис для новичка

Для новичка (особенно глупого) любой синтаксис одинаково ужасен. Так что, чем меньше этого синтаксиса, тем лучше. У лиспа синтаксиса совсем мало. Правда, у форта еще меньше.

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

>> Покажи мне h-файл со стандартным C API, общим у CLISP и SBCL.

Откуда может взять C API у того, что на нём не написано?

Спроси ловсанчега, он знает.

И зачем оно нужно?

Кому? Для реализации Cython оно необходимо.

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

> Откуда может взять C API у того, что на нём не написано? И зачем оно нужно?

Затем, чтобы вызывать из Си и любого другого языка то, что не на Си написано. Затем, чтобы сишные биндинги могли адекватно взаимодействовать с GC.

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

Список с ошибками, как минимум. Назван Оксфорд, в котором первый язык Haskell, а второй вообще Oberon.

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

> Какие синтаксические конструкции очень сокращают (в разы) код

по сравнению с к примеру Ruby или Scala?


Никакая, в CL нет «самой убойной фишки». Его сила в сбалансированности и продуманности стандарта, плюс здоровый прагматизм. Это не выглядит очевидным и нужно потратить время на изучение, что бы понять это.

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

Сейчас в основном в американских школах и универах идет Java, C и C++. А с чего бы было подругому вдруг? Три самых растпростараненных языка. Хотя у меня в школе в США был BASIC и Java. Первый как Basic ))) Programming, второй как Advanced programming.

Вот смотрю я на Лисп, список - голова и хвост. Типы не впитываются с молоком матери. Куча скобок, которые просто угнетают. Зачем это детям или хотябы как база в универе?

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

Кодогенерация легко делается на любом лиспе с макрами и квазиквотой. CL не обязателен. В то же время, лисп без макр - это уже совсем не лисп, и толку от него ноль.

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

Почитай SICP, послушай MIT-овские лекции - тогда поймешь, зачем. Или не поймешь, если ума мало.

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

> Ты еблан.

Ты только что сказал «Я лиспер»

Извини, archimag, очень далеко не все лисперы на форумах так адекватно себя ведут как ты

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

> Затем, чтобы вызывать из Си и любого другого языка то,

что не на Си написано


Я и так могу написать на CL функцию и скормить её как callback в сишную либу.

Затем, чтобы сишные биндинги могли адекватно взаимодействовать с GC.


Это делается средствами CL, зачем C API?

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

> В то же время, лисп без макр - это уже совсем не лисп,

и толку от него ноль.


Про другие лиспы не скажу, но CL без макр по прежнему будет очень мощным языком. И кстати, их на нём можно будет реализовать, угу.

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

> Ты еблан.

Я так понимаю, что заголовочных файлов с единым C API разных Лиспов ты не покажешь? Тогда ПНХ.

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

>Ты только что сказал «Я лиспер»
Извини, не могу вежливо общаться с теми, кто не понимает, что такое FFI, но тем не менее, декларирует его отсутствие в языке, из которого этот термин пришел.

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

> Про другие лиспы не скажу, но CL без макр по прежнему будет очень мощным языком.

Не будет. Он будет какашкой с кучей бесполезных скобок.

И кстати, их на нём можно будет реализовать, угу.

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

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

> Я и так могу написать на CL функцию и скормить её как callback в сишную либу.

Иногда это ограничение неприемлемо.

Это делается средствами CL, зачем C API?

Затем, что это ограничение. А ограничения мешают жить.

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

> Вот смотрю я на Лисп, список - голова и хвост. Типы не впитываются с молоком матери. Куча скобок, которые просто угнетают. Зачем это детям или хотябы как база в универе?

зачем тебе вообще программированием заниматься? думаю это не твое.

CL-USER
()
Ответ на: комментарий от vertexua

> Вот смотрю я на Лисп, список - голова и хвост. Типы не впитываются с молоком матери. Куча скобок, которые просто угнетают. Зачем это детям или хотябы как база в универе?

зачем детям типы?

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

> Не будет. Он будет какашкой с кучей бесполезных скобок.

Веришь в божественное происхождение макросов? Макросы это всего лишь удобный инструмент.

Реализуй. Без единой конструкции, позволяющей напрямую дёргать

компилятор. Попробуй, например, реализовать лисповские макры в какой


либо R5RS-схеме с раздельной компиляцией.



Зачем мне так делать? Обернув macroexpand и eval в риадер-макрос можно эмулировать поведение стандартных макросов, просто не так удобно. Используя свой вариант macroexpand можно получить какие-нибудь другие макросы, это довольно просто.

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

> Веришь в божественное происхождение макросов? Макросы это всего лишь удобный инструмент.

Макросы - это всего лишь основная фича лиспа. Без которой в Лиспе нет смысла.

Обернув macroexpand и eval в риадер-макрос можно эмулировать поведение стандартных макросов, просто не так удобно.

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

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

> не нужно давать детям оружие =)

Так для этого и нужны типы

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

Не простым детям, а детям из физматов ))) Им надо типы, а не вывернутый спец.язык, который потом отдалит от понимания работы компрьютера.

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

> Просто ты пока ещё не понял Лиспа.

Угу, тогда наверное Edi Weitz тоже, давай возьмём его проекты и посмотрим насколько там велика роль макросов, начать можно, например, с hunchentot. А?

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

> Им надо типы, а не вывернутый спец.язык, который потом отдалит от понимания работы компрьютера.

Есть мнение, что тебе пока еще рано судить о том, что отдалит от понимания, а что приблизит. Ты еще слишком мало знаешь. Прочитай все таки SICP. Практика показывает, что те, кто читал и понял, понимают работу компьютера на порядок лучше чем те, кто не читал.

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

> Угу, тогда наверное Edi Weitz тоже

Вообще таки да, и он тоже. Очень много кто не понял и употребляет Лисп не по назначению. Я уж не говорю о реализациях Лиспа, которые вовсе не Лиспы (elisp, например, или Autolisp).

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

То, что питон где-то используют, абсолютно ничего не значит. В какой-то мелочи используют наверняка везде. Ты со своей ссылкой вклинился в разговор о том, какой язык преподают первым, вот и отвечай за базар по всей строгости.

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

> Ты еще слишком мало знаешь.

О Лиспе, да.

Прочитай все таки SICP. Практика показывает, что те, кто читал и понял, понимают работу компьютера на порядок лучше чем те, кто не читал.

Сколько человек начали с этого? Они не знали С, Pascal, Java, просто сели и прочитали эту книгу. А потом легко поняли С и ассемблер?

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

>Практика показывает, что те, кто читал и понял, понимают работу компьютера на порядок лучше чем те, кто не читал.

а в SICP есть про вычисления на GPU? а то я не очень понимаю, как оно работает

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

> Очень много кто не понял и употребляет Лисп не по назначению. Я уж не говорю о реализациях Лиспа, которые вовсе не Лиспы (elisp, например

RMS тоже не понял Лиспа? O_o

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

Макросы обязаны своим существованием механизму компиляции и вычисления CL и концепции код=данные, в частности.
Говорить о CL без макросов - глупо, как и о современном лиспе без макросов вообще. Поэтому же, кстати, CL на данный момент - вершина развития лиспов, а учитывая и все его остальные фичи, то и вообще, языков программирования(предоставляет уникальные возможности для построения абстракций). И поэтому же CL подходит практически для любой области программирования, кроме самых близких к железу(и то, надеюсь, временно).

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

>> Прочитай все таки SICP. Практика показывает, что те, кто читал и понял, понимают работу компьютера на порядок лучше чем те, кто не читал.

Сколько человек начали с этого? Они не знали С, Pascal, Java, просто сели и прочитали эту книгу. А потом легко поняли С и ассемблер?


да. вот сели и сразу поняли.

CL-USER
()
Ответ на: комментарий от Love5an

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

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

> RMS тоже не понял Лиспа? O_o

Он в особенности. Так не понять - это надо очень постараться.

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

> а в SICP есть про вычисления на GPU? а то я не очень понимаю, как оно работает


школьник? или дошкольник? видать читать не научили еще.

CL-USER
()
Ответ на: комментарий от vertexua

> О Лиспе, да.

Нет, об IT и CS вообще. Очень мало знаешь.

Сколько человек начали с этого?

Многие, многие поколения выпускников MIT.

Они не знали С, Pascal, Java, просто сели и прочитали эту книгу. А потом легко поняли С и ассемблер?

Именно так. Тем более, что в SICP объясняют, как строить компиляторы для стековых и для регистровых машин.

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

когда из лора сделают среднемагистральный лайнер на метане, ты будешь обеспечивать работу одного из двигателей

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

> когда из лора сделают среднемагистральный лайнер на метане, ты будешь обеспечивать работу одного из двигателей

а ты остальных?

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

> Говорить о CL без макросов - глупо, как и о современном лиспе без

макросов вообще.


Ну, давай, откроем исходный код Hunchentot и начнём искать там макросы (мы их там, конечно, найдём, но их роль очень далека от определяющей). Или какой проект ты предлагаешь в качестве примера?

Поэтому же, кстати, CL на данный момент - вершина

развития лиспов



«Если вам нравится использовать нетривиальное метапрограммирование, то рекомендую избегать такого примитивного в этом отношении языка, как Common Lisp, и использовать современный язык с многостадийной компиляцией и четко определенной семантикой (например, язык модулей PLT Scheme, camlp4 для OCaml, и другие системы, обрабатывающие файлы детерминированным образом).» (с) Fare

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

кстати, а где используют лисп? я из популярного ПО знаю только автокад и максиму, ну емакс как-то к популярному не очень относится

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