Левенчук пишет, что все серьёзные программисты мечтают программировать на фукнциональных языках. Не знаю, как серьёзные, а у меня лично никогда желания программировать на Лиспе не возникало. Нечеловеческий он какой-то. Пусть ворлоны на нём программируют.
Tags:
no subject
Ну, я примерно так себе и представлял дело, хотя меня тут разубеждают, что это совсем не так. ;)
то мы просто говорим:
Вот слово "просто" меня тут немного смущает. Т.е. я понимаю, что для вас, судя по всему - человека, который на этом деле собаку сьел - это просто. Но для меня, например, это не очень просто. Это, в частности, то, что мне в Лиспе изрядно мешает - через его синтаксис надо продираться. Вы, конечно, можете сказать, что это от недостатка опыта. Возможно, и так. И скажете, что это всё можно поменять как угодно - статью я прочитал, да. Ну, так почему не поменяли, а? Почему вы не написали тот же appright в более человекопонятной форме?
Но в целом, мне кажется, я уловил вашу мысль - что в Лиспе правила, по которым ведётся разбор выражений на языке, поддаются модификации. Вернее, думаю, всё же расширению? Или полной модификации? И что среда исполнения Лисп включает в себя компилятор и исполнитель кода (что, понятно, не есть уникальное свойство Лиспа).
no subject
Не надо. У Лиспа - минимальный синтаксис. S-выражения. Это, с одной стороны, плохо - человекам, или некоторым из них, сложно воспринимать S-выражения или
тот же XML, но с другой стороны это замечательно, потому как синтаксис совпадает с AST языка. Мы видим ровно то, что у него внутри, уже распарсенное.
> Ну, так почему не поменяли, а?
Да поменяли - к примеру, RLisp, весьма известная фишка... Просто это никому не надо - синтаксис S-выражений, на самом деле, близок к идеальному. Это я утверждаю, как полиглот, программировавший практически на всех языках, какие только когда либо существовали, и собственноручно реализовавший множество языков под разные цели. Да, синтаксис того же Хаскелля может завораживать, казаться немерянно удобочитаемым и красивым, синтаксис Java может быть привычным, но по сумме критериев S-выражения лидируют.
> Почему вы не написали тот же appright в более человекопонятной форме?
Потому как тогда там или пришлось бы splice-образную семантику неявно использовать, или явно прописать генерацию S-выражений, что затруднило бы понимаение. Когда и макра, и исходный код, и результат - в одном синтаксисе, понять, что происходит, несколько проще.
> Но в целом, мне кажется, я уловил вашу мысль - что в Лиспе правила, по которым ведётся разбор выражений на языке, поддаются модификации. Вернее, думаю, всё же расширению?
Не только разбор. Ещё и все этапы компиляции и оптимизации. Изменять (не только расширять, но и ограничивать) можно абсолютно всё.
> И что среда исполнения Лисп включает в себя компилятор и исполнитель кода (что, понятно, не есть уникальное свойство Лиспа).
Не совсем так. Компилятор Лиспа включает в себя среду исполнения. Обратное не обязательно (ну да, есть любители попользовать eval, но я не из их числа).
no subject
По-моему, это получается таки плохо. Что есть язык программирования? Способ сокрытия сложности задачи/решения (кривой перевод complexity encapsulation, ага). Если язык Лисп-VM не скрывает сложности этой самой VM, так ли это хорошо? Т.е. у ассемблера есть свои многочисленные прелести, но есть также и вышеописаный существенный недостаток.
синтаксис S-выражений, на самом деле, близок к идеальному
Идеальному - для чего? Или вы скажете, что существует синтаксис, идеальный для описания - чего угодно?
но по сумме критериев S-выражения лидируют.
А какие, опять же, критерии-то?
no subject
Поскольку существенная часть Лисп-программы - это код, который читает Лисп-программы и пишет Лисп-программы, то однозначность отображения синтаксиса на AST тут весьма полезна.
> Или вы скажете, что существует синтаксис, идеальный для описания - чего угодно?
Существует синтаксис, *достаточный* для описания чего угодно. Это - S-выражения. Аналог, ужасно громоздкий и нелепый, но столь же универсальный - XML. Не знаю, на фига XML придумали, когда были S-выражения, ну да ладно...
При этом, такой синтаксис относительно легко воспринимается человеком - он вполне естественный, и, что немаловажно, примитивный, его легко изучить и легко читать.
> А какие, опять же, критерии-то?
- Универсальность - не должно быть конструкций, принципиально невыразимых в этом синтаксисе, и не должно быть конструкций, которые было бы сложно отобразить на такой синтаксис.
- Ортогональность. Не должно быть взаимозаменяемых элементов.
- Минимальность. Лишние элементы только отвлекают.
- Возможности для редактора или IDE проявить немерянный интеллект. Для S-выражений их - полно, для сложных синтаксисов - приходится bovinator-ы всякие рисовать - кошмар...
- Однозначность отображения на внутреннее представление. S-выражения тривиально переводятся в двоичные деревья, и наоборот.
no subject
Ну, с этим я могу согласиться.
Не знаю, на фига XML придумали, когда были S-выражения, ну да ладно...
Человеком XML воспринимается проще, мне кажется.
он вполне естественный, и, что немаловажно, примитивный, его легко изучить и легко читать.
Очевидно, дело привычки, хотя выражения вида (+ 1 (* 3 4)) мне не кажутся естественными.
no subject
человеком с привычкой к HTML'ю, натурально.
были уже, кстати, полушуточные предложения заменить в Лиспе круглые скобочки на угольные, типа вот так:
<+ 1 <* 3 4/>/>
<смайлик direction="left" nosy="false"/>
no subject
Нет, скорее человеком с привычкой к чтению текста и работе с формулами в обычной, а не обратной записи. Согласитесь, что что-то типа function f(x): x + 1 человеку привычнее, чем (defun f (x) (+ x 1)) - т.е. человеку, не имеющему опыта в Лиспе, но имеющему опыт, скажем, в изучении математики хотя бы в школе.
no subject
я думал, ты с HTML/XML сравниваешь, а они тоже префиксные.
на алгебраическую нотацию таки ни то ни другое не похоже, это да.
no subject
no subject
каким образом, интересно?
там же пунктуационного шума больше в несколько раз.
no subject
(это(если(воспринимать(всё(это(как(шум(вот(сравните)))))))))
Правда, первую фразу - с привычной пунктуацией - читать легче? Вот и XML по примерно тем же причинам легче, как мне кажется. Ну и притом, разумеется, легче верифицировать (т.е. в S-expression тоже можно добавить верификацию, конечно, но в XML она более-менее природная).
no subject
45
легче нежели:
(+ 4 5)
?
дабы, тыкскыть, apples to apples сравнивать.
no subject
<plus><int>4</int><int>5</int></plus>
no subject
<chapter id="faq.html">
<title>First Part of the FAQ</title>
<titleabbrev>First</titleabbrev> <para>
This is the text
</para>
<para>
This is second text
</para>
</chapter>
проще понимать, чем:
(define-chapter "faq.html" "First Part of the FAQ" "First" ("This is the text" "This is second text"))
no subject
мы об что говорим? об удобстве представления тяжело структурированных данных (к каковым относится program source code), или об удобстве маркапа легко структурированного текста?
это ведь принципиально разные задачи: маркап можно убрать, и смысл приведённого отрывка не потеряется.
критерии оценки маркапа, соответственно, совершенно иные нежели критерии оценки структурирующего синтаксиса.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Вариант с S-выражениями (http://ssax.sf.net) будет такой:
(chapter (@ (id "faq.html))
(title First Part of the FAQ)
(titleabbrev First)
(para This is the text)
(para This is second text)
)
no subject
если стоит задача посылать код по шумным каналам (нафига, собственно? но предположим, что стоит), то надо для этой цели пользоваться подходящим для этой цели представлением. на одном конце кодировать, на другом раскодировать.
в качестве шумоустойчивого представления иерархических данных XML тоже, кстати, как бы так мягко выразиться, неоптимален.
no subject
no subject
XML at its finest.
no subject
Это не так. В XML синтаксические элементы скрывают смысл, читать глазами
даже с подсветкой просто невозможно.
> Очевидно, дело привычки, хотя выражения вида (+ 1 (* 3 4)) мне не кажутся естественными.
А мне - кажутся. Не надо напрягаться и думать над приоритетами операций.
Кроме того, никто не запрещает писать и инфиксно, всё равно это останутся S-выражения:
http://www.cliki.net/infix
no subject
даже с подсветкой просто невозможно.
Нет, не скрывают, а проясняют, и читать гораздо проще, чем лисповский labirynth of parentheses, all alike.
А мне - кажутся. Не надо напрягаться и думать над приоритетами операций.
Если вам кажутся - ваше святое право использовать префиксную запись. Однако если вы собираетесь с кем-нибудь общаться - например, писать статью for general audience - то я бы рекомендовал вам всё-таки пользоваться общепринятым языком.
Кроме того, никто не запрещает писать и инфиксно
Очевидно, всё-таки запрещает кто-то, потому что все примеры на лиспе, которые я видел, написаны префиксно.
no subject
Чушь и полный бред. Учитесь дальше, пока что просветления не наблюдается - сплошной деццкий сад, штаны на лямках.
Я уже привёл пример с XML vs. SXML. Чего ещё надо?
> Однако если вы собираетесь с кем-нибудь общаться - например, писать статью for general audience - то я бы рекомендовал вам всё-таки пользоваться общепринятым языком.
А нет никакого общепринятого языка. Это - миф. С дурацкими наивными детсадовскими мифами - к разработчикам OpenMath, они быстро зачмырят. Не место в науке наивным детям.
> Очевидно, всё-таки запрещает кто-то, потому что все примеры на лиспе, которые я видел, написаны префиксно.
Ссылка на макру infix была проигнорирована. Симптоматично.
Какую же пустую голову надо иметь, чтоб умудриться не догонять - префиксная запись абсолютно никакого отношения к S-выражениям не имеет. Их можно использовать совместно, можно и не использовать - никому от этого кисло не станет.
no subject
Деццким садом выглядит ваше стремление преподать мне Единственно Верное Учение, не приводя при этом никаких аргументов и обьяснений, кроме трескучих лозунгов "мы самые-самые!" и ругательств. Поскольку шанс самоутвердиться за мой счёт я вам предоставил сразу же, а толку для меня беседа в таком стиле не приносит никакого - я бы предложил либо перейти к существу вопроса, воздерживаясь от подьёбок - либо не тратить своё время. Тема для меня чрезвычайно интересная, но способ, который вы избрали для её обсуждения, не приносит мне пользы. Я вполне и легко готов признать, что чего-то не знаю или знаю недостаточно - я, собственно, об этом уже давно сказал - однако я не готов согласиться с человеком, который начав с "да вы ничего не знаете!" этим же и заканчивает, не упомянув о том, что, собственно, по его мнению следует знать и откуда это следует.
А нет никакого общепринятого языка. Это - миф.
Разумеется. Вся математика есть миф. Да и вообще всё, кроме Лиспа - один большой миф.
Не место в науке наивным детям.
Ну ладно, мне не место в науке, а вам место. Вас это удовлетворяет или мне надо ещё как-нибудь вам польстить?
Ссылка на макру infix была проигнорирована. Симптоматично.
Интересно, как вы узнали, что она была - проигнорирована? Разумеется, я понял, что макросы в лиспе существуют. Я, собственно, в этом и раньше не сомневался. Однако - и это, собственно, очевидно даже из ваших слов, но дополнительно подтверждается и моим опытом - использование этого стиля не является стандартным или общепринятым.
Какую же пустую голову надо иметь, чтоб умудриться не догонять - префиксная запись абсолютно никакого отношения к S-выражениям не имеет.
Не знаю. Это явно вопрос не ко мне. Разумеется, именно к вопросу о S-выражениях не имеет, а к вопросу о принятом в среде Лиспа - имеет.
no subject
опа!
арбатовский синтаксис!
no subject