March 2026

S M T W T F S
12 34567
891011121314
151617 18192021
22232425262728
293031    

Style Credit

Expand Cut Tags

No cut tags
Thursday, May 5th, 2005 12:10 am
Левенчук пишет, что все серьёзные программисты мечтают программировать на фукнциональных языках. Не знаю, как серьёзные, а у меня лично никогда желания программировать на Лиспе не возникало. Нечеловеческий он какой-то. Пусть ворлоны на нём программируют.
Tags:
Friday, May 6th, 2005 11:03 pm (UTC)
> через его синтаксис надо продираться.

Не надо. У Лиспа - минимальный синтаксис. S-выражения. Это, с одной стороны, плохо - человекам, или некоторым из них, сложно воспринимать S-выражения или
тот же XML, но с другой стороны это замечательно, потому как синтаксис совпадает с AST языка. Мы видим ровно то, что у него внутри, уже распарсенное.

> Ну, так почему не поменяли, а?

Да поменяли - к примеру, RLisp, весьма известная фишка... Просто это никому не надо - синтаксис S-выражений, на самом деле, близок к идеальному. Это я утверждаю, как полиглот, программировавший практически на всех языках, какие только когда либо существовали, и собственноручно реализовавший множество языков под разные цели. Да, синтаксис того же Хаскелля может завораживать, казаться немерянно удобочитаемым и красивым, синтаксис Java может быть привычным, но по сумме критериев S-выражения лидируют.

> Почему вы не написали тот же appright в более человекопонятной форме?

Потому как тогда там или пришлось бы splice-образную семантику неявно использовать, или явно прописать генерацию S-выражений, что затруднило бы понимаение. Когда и макра, и исходный код, и результат - в одном синтаксисе, понять, что происходит, несколько проще.

> Но в целом, мне кажется, я уловил вашу мысль - что в Лиспе правила, по которым ведётся разбор выражений на языке, поддаются модификации. Вернее, думаю, всё же расширению?

Не только разбор. Ещё и все этапы компиляции и оптимизации. Изменять (не только расширять, но и ограничивать) можно абсолютно всё.

> И что среда исполнения Лисп включает в себя компилятор и исполнитель кода (что, понятно, не есть уникальное свойство Лиспа).

Не совсем так. Компилятор Лиспа включает в себя среду исполнения. Обратное не обязательно (ну да, есть любители попользовать eval, но я не из их числа).
Friday, May 6th, 2005 11:34 pm (UTC)
> Если язык Лисп-VM не скрывает сложности этой самой VM, так ли это хорошо?

Поскольку существенная часть Лисп-программы - это код, который читает Лисп-программы и пишет Лисп-программы, то однозначность отображения синтаксиса на AST тут весьма полезна.

> Или вы скажете, что существует синтаксис, идеальный для описания - чего угодно?

Существует синтаксис, *достаточный* для описания чего угодно. Это - S-выражения. Аналог, ужасно громоздкий и нелепый, но столь же универсальный - XML. Не знаю, на фига XML придумали, когда были S-выражения, ну да ладно...

При этом, такой синтаксис относительно легко воспринимается человеком - он вполне естественный, и, что немаловажно, примитивный, его легко изучить и легко читать.

> А какие, опять же, критерии-то?

- Универсальность - не должно быть конструкций, принципиально невыразимых в этом синтаксисе, и не должно быть конструкций, которые было бы сложно отобразить на такой синтаксис.

- Ортогональность. Не должно быть взаимозаменяемых элементов.

- Минимальность. Лишние элементы только отвлекают.

- Возможности для редактора или IDE проявить немерянный интеллект. Для S-выражений их - полно, для сложных синтаксисов - приходится bovinator-ы всякие рисовать - кошмар...

- Однозначность отображения на внутреннее представление. S-выражения тривиально переводятся в двоичные деревья, и наоборот.


Sunday, May 8th, 2005 08:33 am (UTC)
> Человеком XML воспринимается проще, мне кажется.

человеком с привычкой к HTML'ю, натурально.

были уже, кстати, полушуточные предложения заменить в Лиспе круглые скобочки на угольные, типа вот так:

<+ 1 <* 3 4/>/>

<смайлик direction="left" nosy="false"/>
Sunday, May 8th, 2005 09:20 am (UTC)
а.
я думал, ты с HTML/XML сравниваешь, а они тоже префиксные.

на алгебраическую нотацию таки ни то ни другое не похоже, это да.
Sunday, May 8th, 2005 10:31 am (UTC)
> XML немного больше похож на текст

каким образом, интересно?
там же пунктуационного шума больше в несколько раз.
Sunday, May 8th, 2005 11:11 am (UTC)
то есть ты хочешь сказать, что читать вот подобное:

45

легче нежели:

(+ 4 5)

?

дабы, тыкскыть, apples to apples сравнивать.
Sunday, May 8th, 2005 11:22 am (UTC)
блин, иксемель заискейпить забыл.
<plus><int>4</int><int>5</int></plus>
Sunday, May 8th, 2005 11:42 am (UTC)
я, простите, теряюсь.
мы об что говорим?  об удобстве представления тяжело структурированных данных (к каковым относится program source code), или об удобстве маркапа легко структурированного текста?
это ведь принципиально разные задачи: маркап можно убрать, и смысл приведённого отрывка не потеряется.
критерии оценки маркапа, соответственно, совершенно иные нежели критерии оценки структурирующего синтаксиса.

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-08 12:23 pm (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-10 05:48 pm (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-10 06:29 pm (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-09 06:46 pm (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-10 10:09 am (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-10 11:33 am (UTC) - Expand
Monday, May 9th, 2005 06:44 pm (UTC)
Эти две записи не тождественны.

Вариант с 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)
)
Sunday, May 8th, 2005 11:19 am (UTC)
да, и кстати: нафига source code'у нужна верификация?
если стоит задача посылать код по шумным каналам (нафига, собственно?  но предположим, что стоит), то надо для этой цели пользоваться подходящим для этой цели представлением.  на одном конце кодировать, на другом раскодировать.
в качестве шумоустойчивого представления иерархических данных XML тоже, кстати, как бы так мягко выразиться, неоптимален.
Sunday, May 8th, 2005 11:32 am (UTC)
выдуманная по сути проблема с охренительной сложности "решением".
XML at its finest.
Monday, May 9th, 2005 06:41 pm (UTC)
> Человеком XML воспринимается проще, мне кажется.

Это не так. В XML синтаксические элементы скрывают смысл, читать глазами
даже с подсветкой просто невозможно.

> Очевидно, дело привычки, хотя выражения вида (+ 1 (* 3 4)) мне не кажутся естественными.

А мне - кажутся. Не надо напрягаться и думать над приоритетами операций.
Кроме того, никто не запрещает писать и инфиксно, всё равно это останутся S-выражения:

http://www.cliki.net/infix
Tuesday, May 10th, 2005 11:26 am (UTC)
> Нет, не скрывают, а проясняют, и читать гораздо проще, чем лисповский labirynth of parentheses, all alike.


Чушь и полный бред. Учитесь дальше, пока что просветления не наблюдается - сплошной деццкий сад, штаны на лямках.

Я уже привёл пример с XML vs. SXML. Чего ещё надо?

> Однако если вы собираетесь с кем-нибудь общаться - например, писать статью for general audience - то я бы рекомендовал вам всё-таки пользоваться общепринятым языком.

А нет никакого общепринятого языка. Это - миф. С дурацкими наивными детсадовскими мифами - к разработчикам OpenMath, они быстро зачмырят. Не место в науке наивным детям.

> Очевидно, всё-таки запрещает кто-то, потому что все примеры на лиспе, которые я видел, написаны префиксно.

Ссылка на макру infix была проигнорирована. Симптоматично.

Какую же пустую голову надо иметь, чтоб умудриться не догонять - префиксная запись абсолютно никакого отношения к S-выражениям не имеет. Их можно использовать совместно, можно и не использовать - никому от этого кисло не станет.
Tuesday, May 10th, 2005 05:11 pm (UTC)
> Интересно, как вы узнали, что она была - проигнорирована?

опа!
арбатовский синтаксис!