Size: a a a

2020 March 17

СС

Сергей Сокол in Lisp Forever
да вошел после авторизации
источник

a

akater in Lisp Forever
Andrey Kutejko
железо для решения практической задачи делают, а не для языков ))
• Как думают, так и делают, а то, как думают, определяется языками существенно.
• Я неоднократно натыкался на упоминания того, как современные процессоры оптимизированы под части алгоритмов, ставшие популярными. То, какие алгоритмы становятся популярными, конечно, определяется языком. Но я не могу найти примеров, к сожалению, — мало интересовался. Я часто слышу, что оптимизации кэша совсем бестолковы для обхода linked list, например, то есть, ставят тех, кто много рассчитывает на linked lists, в заведомо менее выгодное (по производительности) положение по ср. с теми, кто так не делает. Например: https://stackoverflow.com/a/28560601
источник

AK

Andrey Kutejko in Lisp Forever
ссылки и кэш интересная тема. и нет однозначного ответа. Как-то смотрел доклад про Джаву и разработчик рассказал, что когда джаву делали в 90-ых это не было проблемой. Не было такой разницы между CPU и RAM. а за 25 лет всё поменялось.

Весь Лисп на ссылках. И это на современном железе работает не так хорошо.
источник
2020 March 18

AP

Alex Peresmeshnik in Lisp Forever
Andrey Kutejko
ссылки и кэш интересная тема. и нет однозначного ответа. Как-то смотрел доклад про Джаву и разработчик рассказал, что когда джаву делали в 90-ых это не было проблемой. Не было такой разницы между CPU и RAM. а за 25 лет всё поменялось.

Весь Лисп на ссылках. И это на современном железе работает не так хорошо.
Ждем квантового? )
источник

a

akater in Lisp Forever
Сергей Сокол
не хочу объявлять глобально, а локально варнит что нужно или далее использовать или ранее определить
> не хочу объявлять глобально
> не хочу

Тут ничего не посоветуешь. :-] Объявлять глобальные переменные необходимо, а просто (setf x 6) это undefined behaviour. Переменная, которая впервые упоминается в выражении (setf x 6), будет скорее всего втихую объявлена специальной, это приведет к потере производительности везде, где используется этот символ x, и возможно к неожиданным багам потом.
источник

AP

Alex Peresmeshnik in Lisp Forever
Alex Peresmeshnik
Ждем квантового? )
Приживется там лисп?
источник

AK

Andrey Kutejko in Lisp Forever
Лисп породил JavaScript. А этот приживется везде
источник

AP

Alex Peresmeshnik in Lisp Forever
"каждый лиспер является дальним родственником барона Мюнхгаузена"
источник

СС

Сергей Сокол in Lisp Forever
akater
> не хочу объявлять глобально
> не хочу

Тут ничего не посоветуешь. :-] Объявлять глобальные переменные необходимо, а просто (setf x 6) это undefined behaviour. Переменная, которая впервые упоминается в выражении (setf x 6), будет скорее всего втихую объявлена специальной, это приведет к потере производительности везде, где используется этот символ x, и возможно к неожиданным багам потом.
т.е. объявлять глобально и не париться? и что значит - будет объявлена специальной? как это отразится?
источник

SA

Sokolov Andrew in Lisp Forever
Нет стоп
источник

SA

Sokolov Andrew in Lisp Forever
В репле ты и не можешь сделать ничего кроме глобальной переменной глобально
источник

SA

Sokolov Andrew in Lisp Forever
В этом типа...весь смысл
источник

SA

Sokolov Andrew in Lisp Forever
Все что объявлено в let живёт внутри let
источник

SA

Sokolov Andrew in Lisp Forever
Не хочешь засорять память глобальными переменными пиши все с let
источник

SA

Sokolov Andrew in Lisp Forever
Специальная значит что в скоупе можно значение поменять
источник

AP

Alex Peresmeshnik in Lisp Forever
@Madness_Rubicon дай боту возможность сообщения слать, весело же будет )
источник

a

akater in Lisp Forever
Сергей Сокол
т.е. объявлять глобально и не париться? и что значит - будет объявлена специальной? как это отразится?
CL-USER> (defvar x nil) (funcall (lambda () (setf x 'wow))) x
WOW
CL-USER> (funcall (lambda (&aux x) (setf x 'non-special)))
NON-SPECIAL
CL-USER> x
WOW


Поэтому специальные переменные обозначают с помощью earmuffs:
(defvar *x* nil)

Кто так не делает, тех посоны ругают на своих форумах. Можно научиться определять специальные и без earmuffs, и чтоб посоны не ругали, но это advanced уровень.

Еще примеры, что может пойти не так: http://random-state.net/files/nikodemus-cl-faq.html#whats-with-the-earmuffs

Еще вот CLHS (лучше привыкнуть к CLHS пораньше): http://clhs.lisp.se/Body/d_specia.htm

Там тоже есть примеры, типа declare-eg.
источник

СС

Сергей Сокол in Lisp Forever
Про "уши" я знаю.
источник

СС

Сергей Сокол in Lisp Forever
Что глобалки надо писать с "ушами"
источник

БР

Безумный Рубикон in Lisp Forever
Alex Peresmeshnik
@Madness_Rubicon дай боту возможность сообщения слать, весело же будет )
какому боту?
источник