Re[6]: Lisp
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.07.05 10:08
Оценка:
Здравствуйте, mishaa, Вы писали:

P>>>Если уж зашел об этом разговор... Какие есть более-менее качественные (минимум — с поддержкой отладки) некоммерческие IDE для Common Lisp? Желательно, чтобы работали под Windows.


P>>>P.S. Из IDE для Scheme — я нашел DrScheme, и он мне понравился. По крайней мере, для обучения он хорош (вроде для этого и предназначен). Под Windows работает (как и под Linux). Какие-то возможности отладки есть. А Project Management я там не нашел .


К>>Если от emacs сильно не тошнит, то глянь сюда

К>>Лично мне показалось юзабельным.

M>Ну а если тошнит то вот сюда http://jabberwocky.sourceforge.net/


Спасибо, заценим!
Re[5]: Lisp
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.07.05 10:11
Оценка: 2 (1)
Здравствуйте, pvgoran, Вы писали:

P>Здравствуйте, pvgoran, Вы писали:


P>>Если уж зашел об этом разговор... Какие есть более-менее качественные (минимум — с поддержкой отладки) некоммерческие IDE для Common Lisp? Желательно, чтобы работали под Windows.


P>Будем считать, что про Emacs+SLIME я ответ уже получил
Автор: CrazyPit
Дата: 12.07.05
. Хотя для меня так и осталось непонятным, насколько легко это все установить/настроить — в частности, на Windows.


Lisp in a Box устанавливается как два байта переслать — просто 2 инсталлятора и всё (просто лиспы могут разные использоваться, поэтому 2)
Re[6]: Lisp
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 13.07.05 10:22
Оценка: +1
Здравствуйте, Cyberax, Вы писали:


C>Вот с этим можно поспорить.

Ну куда ж без этого


C>Во-первых, писать программу в виде чистого AST — неудобно.

Посмотри на возможности макроса loop — ну где здесь чистый AST? Как ни странно благодоря макросам лисп оказывается самым сладким языком.

C>Во-вторых, писать нетривиальные преобразования AST — весьма непросто,

C>причем тестировать их тоже не легко.
Нетривиальные веши — не просты — это факт
Тестировать, а точнее писать,компилировать,править, шаблоны на С++ IMHO на порядок сложнее.

C>В-третьих, для обычных языков типа Java/C# уже существуют системы для

C>редактирования AST. Только называется это Aspect Oriented Programming. А
C>для C# у нас еще и R# есть
Не есть — а недавно появилось... Что еше раз потверждает выше сказанную мысль о том что все языки медленно двигаются в сторону Лиспа.
Меня собственно и подвигло на серьезноге изучение Лиспа, так это то что в CLOS кажись заложенно и AOP .

Кстати все навороты на лиспе выглядят как лисп — ни чуть не хуже .

IMHO спорить безполезно. Надо пробовать.
-- Главное про деструктор копирования не забыть --
Re[7]: Lisp
От: Cyberax Марс  
Дата: 13.07.05 10:40
Оценка:
mishaa wrote:

> C>Во-первых, писать программу в виде чистого AST — неудобно.

> Посмотри на возможности макроса loop — ну где здесь чистый AST? Как ни
> странно благодоря макросам лисп оказывается самым сладким языком.

Согласен — чуть украшеный AST.

> C>Во-вторых, писать нетривиальные преобразования AST — весьма непросто,

> C>причем тестировать их тоже не легко.
> Нетривиальные веши — не просты — это факт
> Тестировать, а точнее писать,компилировать,править, шаблоны на С++
> IMHO на порядок сложнее.

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

> C>В-третьих, для обычных языков типа Java/C# уже существуют системы для

> C>редактирования AST. Только называется это Aspect Oriented
> Programming. А
> C>для C# у нас еще и R# есть
> Не есть — а недавно появилось...

AspectJ появился в 99 (если не ошибаюсь), до этого были исследования на
эту тему в PARC'е.

> Что еше раз потверждает выше сказанную мысль о том что все языки

> медленно двигаются в сторону Лиспа.
> Меня собственно и подвигло на серьезноге изучение Лиспа, так это то
> что в CLOS кажись заложенно и AOP .

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

Поэтому AOP стал использоваться для предоставления сравнительно
высокоуровневых сервисов, "перпендикулярных" самой логике кода:
1. Прозрачное распределенное кэширование объектов
http://www.jboss.org/products/jbosscache
2. Транзакции на графах объектов: http://www.jboss.org/products/jbossas
3. Прозрачные политики безопасности и т.п.

> IMHO спорить безполезно. Надо пробовать.


Пробовал, к сожалению... В далеком 2000 году.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[6]: Lisp
От: pvgoran Россия  
Дата: 13.07.05 10:48
Оценка:
Здравствуйте, mishaa, Вы писали:

К>>Если от emacs сильно не тошнит, то глянь сюда

К>>Лично мне показалось юзабельным.

M>Ну а если тошнит то вот сюда http://jabberwocky.sourceforge.net/


Thanks.

P.S. Emacs — скажем так, напрягает, но, похоже, рано или поздно придется приспосабливаться...
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[2]: Lisp
От: fionbio  
Дата: 13.07.05 10:59
Оценка: 1 (1) +1 :)
Здравствуйте, Mishka, Вы писали:

M>Я со всем согласен, но есть два вопроса:


M>1. Как найти работу программистом на Lisp?


а) Скорее всего, никак — во всяком случае, в нашей стране, если только
очень повезёт. Говорят, серьёзные товарищи на #lisp в основном бабки
зашибают удалённо — но это уж совсем повезти должно.

б) self-employment

M>2. Как получать больше денег программируя на Lisp, чем, например, на C# или VBA?


а) Научившись программировать на Lisp'е, можно стать асом C#/Java/C++/etc.
Программировать на мейнстриме будете с отвращением, но качественно. И смысл разных
design patterns и пр. хрени станет яснее, чем для авторов этих концепций Ещё подход —
использование Лиспа для прототипизирования. Написать программу или некий её
фрагмент на Лиспе (или иногда хотя бы представить ), а затем переписать
на том же шарпе (раз того хочет народ/заказчик/менеджер/хозяин ) зачастую
позволяет получить результат быстрее & качественнее.

б) self-employment
Re: Lisp
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.07.05 11:36
Оценка: 1 (1) +2
Здравствуйте, fionbio, Вы писали:

А можно увидеть на лиспе решение следующей задачи:
Имеем некое текстовое описание модели каких либо объектов. Пусть это будет xml. Например:
<objects>
    <object name="Obj1">
        <property name="prop1" type="int"/>
        <property name="prop2" type="string"/>
    </object>
</objects>

Требуется сгенерировать код на C# примерно такого вида:
public class Obj1
{

    public Obj1(int prop1, string prop2)
    {
        _prop1 = prop1;
        _prop2 = prop2;
    }

    private int _prop1;
    
    public int Prop1
    {
        get { return _prop1; }
    }
    
    private string _prop2;
    
    public string Prop2
    {
        get { return _prop2; }
    }
}

?
Интересует решение именно в духе лиспа.
... << RSDN@Home 1.2.0 alpha rev. 558>>
AVK Blog
Re[3]: Lisp
От: FR  
Дата: 13.07.05 11:37
Оценка: 1 (1) +4 -1 :)))
Здравствуйте, fionbio, Вы писали:


F>а) Научившись программировать на Lisp'е, можно стать асом C#/Java/C++/etc.


Конечно можно стать асом, а можно и не стать, лисп тут ни причем, да и вместо Lisp'а сюда можно много что подставить.

F>Программировать на мейнстриме будете с отвращением, но качественно. И смысл разных

F>design patterns и пр. хрени станет яснее, чем для авторов этих концепций

Угу солнце наверно тоже всходит и заходит только благодоря лиспу.
Re[2]: Lisp
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.07.05 11:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, fionbio, Вы писали:


AVK>А можно увидеть на лиспе решение следующей задачи:

AVK>Имеем некое текстовое описание модели каких либо объектов. Пусть это будет xml. Например:
AVK>
AVK><objects>
AVK>    <object name="Obj1">
AVK>        <property name="prop1" type="int"/>
AVK>        <property name="prop2" type="string"/>
AVK>    </object>
AVK></objects>
AVK>


Как мне кажется, первое, что в духе Лиспа нужно будет сделать, так это написать описание на самом Лиспе:
(objects
    (object
        (property (name prop1) (type int))
        (property (name prop2) (type string))))


А потом окажется, что с помощью defmacro сам objects является кодом по генерации C# кода.

... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Lisp
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.07.05 11:59
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, AndrewVK, Вы писали:


E>Как мне кажется, первое, что в духе Лиспа нужно будет сделать, так это написать описание на самом Лиспе:

E>
E>(objects
E>    (object
E>        (property (name prop1) (type int))
E>        (property (name prop2) (type string))))
E>


Если оставлять условие, то XML распарсить должно не ставить проблем
E>А потом окажется, что с помощью defmacro сам objects является кодом по генерации C# кода.

когда кажется — надо креститься

для defmacro нужен код макроса, который будет "развёртку" выполнять, лисп — не система ИИ, которая сама должна догадаться что надо сделать, как в любом ЯП ей надо это указать, просто это "указание" имхо должно быть проще. На работе лисп отсутствует как класс , так что, к сожалению задачку сейчас решать не возьмусь, надеюсь более продвинутые лисперы подмогут
Re[4]: Lisp
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.07.05 12:24
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, eao197, Вы писали:


E>>Здравствуйте, AndrewVK, Вы писали:


E>>Как мне кажется, первое, что в духе Лиспа нужно будет сделать, так это написать описание на самом Лиспе:

E>>
E>>(objects
E>>    (object
E>>        (property (name prop1) (type int))
E>>        (property (name prop2) (type string))))
E>>


К>Если оставлять условие, то XML распарсить должно не ставить проблем

E>>А потом окажется, что с помощью defmacro сам objects является кодом по генерации C# кода.

К>когда кажется — надо креститься


Кстати, напрасно прикалываешься. Почитай вот это http://martinfowler.com/articles/languageWorkbench.html
Там как раз говорится про external и internal DSL. Так вот по отношению к Lisp создание external DSL (пример AndrewVK на XML) может быть не нужным и избыточным шагом (если конечно этот XML не используется для интероперопа с другими приложениями).
Так же нормальный internal DSL вполне можно строить и на более популярных языках, скажем на Ruby:
objects do
    object do
        property do
            name "prop1"
            type "int"
        end
        property do
            name "prop1"
            type "string"
        end
    end
end

причем do-end можно заменить на фигурные скобки.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Lisp
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.07.05 12:33
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Курилка, Вы писали:


К>>Здравствуйте, eao197, Вы писали:


E>>>Здравствуйте, AndrewVK, Вы писали:


E>>>Как мне кажется, первое, что в духе Лиспа нужно будет сделать, так это написать описание на самом Лиспе:

E>>>
E>>>(objects
E>>>    (object
E>>>        (property (name prop1) (type int))
E>>>        (property (name prop2) (type string))))
E>>>


К>>Если оставлять условие, то XML распарсить должно не ставить проблем

E>>>А потом окажется, что с помощью defmacro сам objects является кодом по генерации C# кода.

К>>когда кажется — надо креститься


E>Кстати, напрасно прикалываешься.

См. о чём я ниже

E>Почитай вот это http://martinfowler.com/articles/languageWorkbench.html

E>Там как раз говорится про external и internal DSL. Так вот по отношению к Lisp создание external DSL (пример AndrewVK на XML) может быть не нужным и избыточным шагом (если конечно этот XML не используется для интероперопа с другими приложениями).
E>Так же нормальный internal DSL вполне можно строить и на более популярных языках, скажем на Ruby:
<skipped>

Вопрос — а DSL ты откуда взял? Т.е. описание его не включается в решение?
Re[2]: Lisp
От: Трурль  
Дата: 13.07.05 12:35
Оценка: +2 :))
Здравствуйте, AndrewVK, Вы писали:

AVK>Интересует решение именно в духе лиспа.

В духе лиспа будет генерировать код лиспе, а не на C#
Re[6]: Lisp
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.07.05 12:45
Оценка: 1 (1) +3
Здравствуйте, Курилка, Вы писали:

E>>>>Как мне кажется, первое, что в духе Лиспа нужно будет сделать, так это написать описание на самом Лиспе:

E>>>>
E>>>>(objects
E>>>>    (object
E>>>>        (property (name prop1) (type int))
E>>>>        (property (name prop2) (type string))))
E>>>>


К>>>Если оставлять условие, то XML распарсить должно не ставить проблем

E>>>>А потом окажется, что с помощью defmacro сам objects является кодом по генерации C# кода.

К>Вопрос — а DSL ты откуда взял? Т.е. описание его не включается в решение?


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

Собственно в том, что построение конкретного DSL выполняется средствами самого языка, и в результате получается тот же Lisp -- и есть, имхо, главное преимущество над C++. Т.е. в C++ так же можно подобные фокусы делать, но навороты на шаблонах могут быть сильно сложными и, все-таки, ограниченными, а применение внешних инструментов типа Yacc/Lex для создания DSL -- то еще удовольствие. И главное, получается несколько разных языков, тогда как в Lisp-е язык один.

Но только в этой области у Lisp-е есть конкуретны. Тот же Ruby позволяет строить вполне нормальные DSL оставаясь в рамках Ruby-синтаксиса.

Да и такая гибкость Lisp-а, как указывал, кажется, Cyberax, оборачивается его главным недостатком. Лишком легко создать свой DSL, который кроме тебя никому не нравится и в котором другим разработчикам сложно ориентироваться.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Lisp
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.07.05 12:47
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, AndrewVK, Вы писали:


AVK>>Интересует решение именно в духе лиспа.

Т>В духе лиспа будет генерировать код лиспе, а не на C#

А если еще и исходное описание на Lisp-е сделать, то вообще ничего генерировать не нужно будет.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Lisp
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.07.05 12:57
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Курилка, Вы писали:


К>>Вопрос — а DSL ты откуда взял? Т.е. описание его не включается в решение?


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


E>Собственно в том, что построение конкретного DSL выполняется средствами самого языка, и в результате получается тот же Lisp -- и есть, имхо, главное преимущество над C++. Т.е. в C++ так же можно подобные фокусы делать, но навороты на шаблонах могут быть сильно сложными и, все-таки, ограниченными, а применение внешних инструментов типа Yacc/Lex для создания DSL -- то еще удовольствие. И главное, получается несколько разных языков, тогда как в Lisp-е язык один.


Не могу не согласиться.

E>Но только в этой области у Lisp-е есть конкуретны. Тот же Ruby позволяет строить вполне нормальные DSL оставаясь в рамках Ruby-синтаксиса.


С руби даже не игрался, так что сравнить не могу, к сожалению
Недостаточно компетентен

E>Да и такая гибкость Lisp-а, как указывал, кажется, Cyberax, оборачивается его главным недостатком. Лишком легко создать свой DSL, который кроме тебя никому не нравится и в котором другим разработчикам сложно ориентироваться.


На любом достаточно мощном языке можно сделать нечто (архитектуру, DSl и проч.), что никому не будет нравиться — и что? Язык не есть лекарство от неправильных решений, язык должне разрешать выражать мысли, а не запрещать
Или из-за некоторой корявости MFC мы и C++ будем признавать убогим языком? Отделяй, плиз, мухи от котлет.
Re[4]: Lisp
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.07.05 12:57
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Трурль, Вы писали:


Т>>Здравствуйте, AndrewVK, Вы писали:


AVK>>>Интересует решение именно в духе лиспа.

Т>>В духе лиспа будет генерировать код лиспе, а не на C#

E>А если еще и исходное описание на Lisp-е сделать, то вообще ничего генерировать не нужно будет.


Дак о том и речь
Re[3]: Lisp
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.07.05 14:22
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Как мне кажется, первое, что в духе Лиспа нужно будет сделать, так это написать описание на самом Лиспе:


Я так и знал. Мне не нужно генерить код на Лиспе, мне нужно генерить код на шарпе. Ну, предположим, у меня есть большой проект на дотнете, который никто под лисп переписывать не будет никогда. И для него нужно написать вот такую штуку.

E>А потом окажется, что с помощью defmacro сам objects является кодом по генерации C# кода.


Вот еще бы не на словах, а в реальном коде.
... << RSDN@Home 1.2.0 alpha rev. 558>>
AVK Blog
Re[4]: Lisp
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.07.05 14:26
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, eao197, Вы писали:


E>>Как мне кажется, первое, что в духе Лиспа нужно будет сделать, так это написать описание на самом Лиспе:


AVK>Я так и знал. Мне не нужно генерить код на Лиспе, мне нужно генерить код на шарпе. Ну, предположим, у меня есть большой проект на дотнете, который никто под лисп переписывать не будет никогда. И для него нужно написать вот такую штуку.


А нельзя разве XSLT преобразовать XML в Lisp-подобный формат, а затем скормить Lisp-овской программе?

E>>А потом окажется, что с помощью defmacro сам objects является кодом по генерации C# кода.


AVK>Вот еще бы не на словах, а в реальном коде.


Андрей, я полностью с тобой согласен. Более того, я здесь выступаю противником Lisp-а и мне самому хотелось бы реальный код увидеть.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Lisp
От: Cyberax Марс  
Дата: 13.07.05 14:32
Оценка: +3
eao197 wrote:

> AVK>Я так и знал. Мне не нужно генерить код на Лиспе, мне нужно

> генерить код на шарпе. Ну, предположим, у меня есть большой проект на
> дотнете, который никто под лисп переписывать не будет никогда. И для
> него нужно написать вот такую штуку.
> А нельзя разве XSLT преобразовать XML в Lisp-подобный формат, а затем
> скормить Lisp-овской программе?

А может тогда проще — сразу в C# преобразовать XSLем?

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.