1 | |
О Лиспе и гомоиконности17.02.2017, 17:04. Показов 2536. Ответов 58
Метки нет (Все метки)
0
|
17.02.2017, 17:04 | |
Ответы с готовыми решениями:
58
Реализация циклов на Лиспе, Вложенные циклы на Лиспе Рекурсия в лиспе Списки на Лиспе Структуры на Лиспе |
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|
17.02.2017, 22:31 | 2 |
Не стоит вводить в заблуждение общественность. Всё с точностью до наоборот. Не важно, run time или compile time, язык один и тот же, нет никаких ограничений и отходов от правил. Единственное отличие в окружениях: естественно, что при macroexpand-е не доступно runtime окружение.
То что ты написал скорее относится к C++. Там действительно templates - язык в языке.
0
|
Заблокирован
|
|
17.02.2017, 22:41 | 3 |
nullxdth, ну да, лисп особенный, ведь это лисп, не плюсы какие нибудь там сраненькие. Даже если все работает также, все равно все по другому
Добавлено через 3 минуты ах ну да, в плюсах конечно нет евала, и jit-компиляции. Именно это в этом смысле и отличает. В лиспе можно подать на вход результат выполнения, и скомпилировать код в рантайме. Если бы этого не было, лисп по убогости бы мало чем от плюсов отличался Добавлено через 3 минуты nullxdth, кстати, плюсы -- это макро-си, он так и был впервые реализован, как препроцессор. А си -- макро-ассемблер Шаблоны можно назвать макроплюсами. Как все запущено Ахренеть, это все называется "языками программирования"
0
|
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|
17.02.2017, 22:59 | 4 |
Это ты говоришь, не я. Я понимаю почему в C++ так, а не иначе.
JIT-комиляции нет в известных мне реализациях CL. По крайней мере в классическом понимании этого термина. Эта функциональность действительно в CL имеется, но, в действительность, очень редко используется. Common Lisp и без этого хорош. Более того, не будь в CL макросов, тоже было бы ничего - как Python, только лучше. Добавлено через 6 минут Что работает также? Твоё утверждение: Не соответствует действительности. И легко проверяется.
0
|
Заблокирован
|
|
17.02.2017, 23:03 | 5 |
Классическое понимание этого термина -- компиляция в рантайме, "на ходу" (just in time). Любой компилируемый язык с эвалом не может обойтись без этого
дык ведь пистон -- говно С понтом динамический язык в шкуре жабы Добавлено через 2 минуты Соответствует. Язык препроцессора(ака макросы) можно встроить в любой язык. Разница тут именно в eval, он как бы объединяет в данном случае.
0
|
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|
17.02.2017, 23:54 | 6 |
Нет.
Что это значит? Как встроить? Причём тут eval? Факт - ты не понимаешь как устроен Common Lisp. Добавлено через 2 минуты Обычно когда говорят про jit, имеют ввиду компиляцию байткода в машкод которая скрыта от пользователя языка и он на это никак влиять не может. Но в терминологический спор я встревать не намерен. Это безблагодатное занятие.
0
|
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|
18.02.2017, 00:04 | 8 |
Муторное и достаточно сложное занятие, особенно если синтаксис не простой. За это и любят Lisp, что s-expressions, гомоиконность - легко парсить, легко генерировать.
Добавлено через 4 минуты Язык в теле макросе и язык результирующего кода один и тот же.
0
|
Заблокирован
|
|
18.02.2017, 02:03 | 9 |
Вот сказать по честному, я не понимаю, что такое гомоиконность. Читаю в википедии, какие то мантры, хз. Где та грань, вообще, которая отделяет гомоиконность от не-гомоиконности, и что это дает?
Вот цитата из википедии: Добавлено через 2 минуты и вот это, опять же, хрень какая то. Разве код любого языка не представим в виде строки? Строку нельзя рассматривать как структуру данных по-мнению лисперов, или что? Чем список принципиально отличается от строки? В чем тут эксклюзив лиспа? Добавлено через 14 минут nullxdth, или вот: Добавлено через 1 час 25 минут да, а если под "легко парсить" понимается cdcdcdcdcdcdcdcr, то не, спасибо, я лучше по старинке, как-нибудь, регулярками, или перебором символов.
0
|
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
|
|
18.02.2017, 08:55 | 10 |
What Made Lisp Different
" 8. A notation for code using trees of symbols. 9. The whole language always available. There is no real distinction between read-time, compile-time, and runtime. You can compile or run code while reading, read or run code while compiling, and read or compile code at runtime. Running code at read-time lets users reprogram Lisp's syntax; running code at compile-time is the basis of macros; compiling at runtime is the basis of Lisp's use as an extension language in programs like Emacs; and reading at runtime enables programs to communicate using s-expressions, an idea recently reinvented as XML. ... 8, which (with 9) is what makes Lisp macros possible, is so far still unique to Lisp, perhaps because (a) it requires those parens, or something just as bad, and (b) if you add that final increment of power, you can no longer claim to have invented a new language, but only to have designed a new dialect of Lisp ; -) " Добавлено через 2 минуты Andrew Sorensen: Just For Fun https://vimeo.com/2433971
0
|
Заблокирован
|
|
18.02.2017, 09:49 | 11 |
_sg, я спрашиваю конкретно про гомоиконность.
Добавлено через 4 минуты _sg, кстати, по вашей ссылке про общелисп ни слова. Там что то про lisp 1.5 и arc Добавлено через 34 минуты _sg, и вот это туфта:
0
|
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
|
|
18.02.2017, 10:22 | 12 |
asmquest, после 1994 г., если не уточняется, то Lisp - это, или в том числе - Common Lisp (стандарт ANSI X3.226-1994).
Добавлено через 4 минуты про гомоиконность (там же): "Лисп-программы записываются в виде списков; в результате получается, что программа может получить доступ к своим собственным функциям во время работы, а также перепрограммировать себя «на лету»." https://ru.wikipedia.org/wiki/Гомоиконичность https://en.wikipedia.org/wiki/Viaweb https://en.wikipedia.org/wiki/... r_startups Добавлено через 15 минут Among the eight start-ups that graduated Y.C.’s first class, in the summer of 2005, were the social-news site Reddit, recently valued at $400 million; and Infogami, the Web-site builder created by the tech martyr Aaron Swartz, which merged with Reddit. Other Y.C. success stories include Dropbox (file-sharing service, $4 billion), Airbnb (online market for vacation rentals, $1.3 billion) and Stripe (Web-based credit-card-payment software, $500 million). http://www.nytimes.com/2013/05... d=all&_r=0
1
|
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|
18.02.2017, 10:53 | 13 |
Создавай отдельную тему касательно этого вопроса - обсудим. Тут уже полный оффтоп.
Добавлено через 6 минут Тем, что любой s-expression - синтаксически корректный Lisp код. А, скажем, текст "Войны и мира" Льва Николаевича - это не код на Си. Добавлено через 9 минут Что значит получить доступ? Ты можешь вычислить функцию, можешь перекомпилировать её. Что ещё надо?
2
|
Заблокирован
|
|
18.02.2017, 19:31 | 14 |
работать как со структурой разумеется, как оно следует из определения
Добавлено через 1 минуту А, скажем, любое выражение си -- корректный код на си. Добавлено через 2 минуты это вранье, CL не имеет доступа к функциям во время работы. Io, кстати, имеет Добавлено через 3 минуты как только куплен, сразу же переписан на си. Кстати, этот счастливый случай грехема связан с конъюктурой рынка, а вовсе не с тем, о чем он подумал. Это был период пузыря доткомов. Добавлено через 11 минут но там, кстати, не CL был, в любом случае
0
|
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
|
|
18.02.2017, 19:35 | 15 |
asmquest, если заменить программу на Andrew Sorensen:
https://vimeo.com/2433971
0
|
Заблокирован
|
|
18.02.2017, 19:44 | 16 |
_sg, по вашей ссылке, во-первых, не common lisp, а во-вторых, я не понял, к чему Вы клоните. Перекомпиляция функций в рантайме возможна во многих языках, включая JS, это не относится к вопросу.
Добавлено через 4 минуты тему отделили, так что все ок
0
|
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
|
||||||
18.02.2017, 20:27 | 17 | |||||
asmquest, гомоиконность, или нет:
Understanding Homoiconicity Through Clojure Macros
0
|
188 / 155 / 17
Регистрация: 18.12.2015
Сообщений: 179
|
|
18.02.2017, 20:34 | 18 |
Сохраните код в переменную и будет Вам счастье. Не такие уж большие это будут накладные расходы.
Не нравится? Возьмите некомпилируему версию лиспа. Легко, любой язык, не являющийся тьюринг-полным. IMHO, сравнивать надо то, что язык позволяет сделать "из коробки" небольшим количеством кода. В этом смысле CL неплох, у него довольно богатая стандартная библиотека. Такой длины заклинания плохо читаются, а это признак некачественного кода. Попробуйте функцию "nth". Или структуры. Или классы. Можно загрузить библиотеку и пользоваться регулярными выражениями в программе на лиспе. Думаю, не так много языков, поддерживающих регулярные выражения "из коробки". Perl не предлагать, он нечитаемый. IMHO, лисп выглядит практически идеальным языком для написания простеньких парсеров. Я сравнивал код на лиспе и на delphi - лисповский код проще в написании, короче и понятнее. Про более объёмные задачи не скажу, у меня нет такого опыта.
0
|
Заблокирован
|
|
18.02.2017, 21:04 | 19 |
таких много?
Добавлено через 1 минуту ну, вот некомпилируемая версия возможно действительно будет соответствовать определению гомоиконности. Добавлено через 1 минуту нет. я же Вам сказал, это можно сделать почти в любом динамическом языке. Там говорится о прямом доступе как к структуре. Добавлено через 4 минуты да ладно, lol, больше половины продакшн языков -- это точно. И наверняка почти все имеют стандартные либы. Добавлено через 7 минут это еще неизвестно, кто победит в плане нечитаемости, перл или лисп. К тому же в лиспе из-за кучи вложенностей очень трудно править код, без подсветки это вообще нереально будет. Я дергаю лисп время от времени уже где-то года 2, и до сих пор он мне не кажется "удобным". Как раз, то что приписывается перлу -- write-only, это 100% про лисп, там проще функцию переписать, чем править. Все эти разговоры про читаемость лиспа религиозны. Я никогда не поверю, что он кажется удобным в этом смысле кому бы то ни было, даже ветеранам. Кроме того, это "функциональный" порядок исполнения изнутри наружу и явная передача аргументов все усугубляют. Добавлено через 1 минуту а квазиквотирование -- это вообще ад. про перл Вы прикололись это в сравнении с лиспом эталон читаемости и внятности кода
0
|
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
|
||||||
18.02.2017, 21:09 | 20 | |||||
https://metadeus.wordpress.com... выражения/
0
|
18.02.2017, 21:09 | |
18.02.2017, 21:09 | |
Помогаю со студенческими работами здесь
20
Мультидиспетчеризация в Лиспе Вывод в лиспе Пятнашки на лиспе «Организация вычислений в Лиспе» Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |