LINUX.ORG.RU

Чем отличается поверхностное связывание от глубокого

 


0

1

Чем отличается поверхностное связывание (shallow) от глубокого (deep). Вопрос, наверное, в первую очередь, к знатокам лиспа, но не обязательно. На русском что-то не нашел ничего внятного по теме, а английский я разбираю в час по чайной ложке. Слышал, что лисп-1.5 был с поверхностным связыванием. Очень хотелось бы услышать простое объяснение для новичка, если это возможно.

Заранее благодарю за ответы.



Последнее исправление: cetjs2 (всего исправлений: 1)

А зачем тебе?

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

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

И я, собственно, пишу, простенькие проги на лиспе.

Это необязательно. Та цель, которую преследует «изучение лиспа», достигается и без написания программ.

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

В смысле?

Ведь ты изучаешь LISP не для того, чтобы профессионально программировать на нем (он непригоден для этого). Ты изучаешь его, чтобы выделиться. Чтобы возвыситься в своих глазах над серой массой «ремесленников от IT». Чтобы причаститься сакрального знания и почувствовать себя избранным.

Ты можешь возражать, что LISP — это «just for fun» и для расширения кругозора. Но это будет ложь. Не лги самому себе; для расширения кругозора люди читают книги, ходят в музеи, на лекции, интересуются науками, изучают иностранные языки и путешествуют по миру; «just for fun» — занимаются музыкой, спортом, активными хобби, общаются с друзьями и близкими, встречаются с девушками.

Изучение LISP же преследует единственную цель — выделиться, продемонстрировать, что ты не такой, как все. Это порочный путь. Чем это лучше покупки айфона или зеркалки? Модных очков, обтягивающих ярких штанов и кед? Большого блестящего автомобиля?

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

Дерзай.

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

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

В частности, я пытался учить питон, и после 4-х месяцев изучения, даже стал писать программы, но так и не врубился при этом, что же такое программирование. С лиспом, все-таки, начало что-то доходить.

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

Лисп как минимум интересен сам по себе, отсюда и fun.

Если тебе «интересен сам по себе» архаичный, неприменимый на практике язык без инфраструктуры и сообщества — то это не к ЛОРу, это к другому доктору.

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

вон из профессии!

Да я не профи. Просто интересуюсь.:). Это был мой первый язык.

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

Если тебе «интересен сам по себе» архаичный, неприменимый на практике язык без инфраструктуры и сообщества

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

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

лисп не провоцирует на поиск готовых решений, как многие другие языки

Перевожу: лисп провоцирует изобретать велосипеды с квадратными колесами.

Не увлекайся этим. Профессиональный программист свободно владеет языком, алгоритмами и структурами данных. Профессиональный разработчик (а в дальнейшем архитектор) — владеет технологиями. Так ты рискуешь остаться в стороне от современных IT-технологий и выработать привычку переизобретать колесо каждый раз. С таким подходом в профессии делать нечего.

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

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

Да, целых пол-лекции.

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

С таким подходом в профессии делать нечего.

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

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

современные языки вроде крестов, хаскеля и пр.
на них программируют секретарши
JS еще ничего так, но это тоже лисп.

Я_уже_не_помещался_в_монитор_я_просто_вытекал_из_него.JPG

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

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

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

мейнстрим - это всегда г-но.

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

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

Я думаю всегда только своей головой, чего и тебе желаю.

anonimous
() автор топика

Всем мамкин борщ в этом чате! :)

Zubok ★★★★★
()

Disclaimer: сужу из того, что нагуглил сам, так что где-то могу ошибаться.

Чем отличается поверхностное связывание (shallow) от глубокого (deep).

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

При поверхностном связывании значение переменной хранится в самом символе (точнее, в его value-ячейке). То есть получение текущего значения переменной константно. При повторном связывании (rebinding) новое значение записывается в value-ячейку символа, старое значение сохраняется в стеке и восстанавливается, когда связывание покидает область видимости.

При глубоком же связывании значение переменной хранится в некотором стеке пар (association list), при этом поиск значения может занять некоторое время.

Вот демонстрация «на пальцах»: https://gist.github.com/wasabiz/3774210.

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

ИМХО, это должно быть интересно для разработчика своей реализации Lisp, но не для новичка.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.