Lisp
От: fionbio  
Дата: 12.07.05 08:17
Оценка: 149 (19) +1
[я — автор темы/бывшей ветки Metaprogramming et al]
http://www.rsdn.ru/forum/?mid=1264362
Автор:
Дата: 09.07.05


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

Отмечу, что я не хочу агитировать за повальный переход на Лисп,
т.к. достаточно хорошо отдаю себе отчёт в том, насколько это может быть
затруднительно. Это относится как к существующим проектам, так и ещё не начатым.
Я лишь хотел сказать, что

1) Изучение немейнстримовых языков, и в особенности лучшего метаязыка — Лиспа,
способствует повышению квалификации программиста и существенно более глубокому
пониманию мейнстримовых технологий;

2) Лисп более чем пригоден для практического применения, и в ряде случаев
является наилучшим вариантом — в частности (но не ограничиваясь), для реализации
каких-либо единоличных/немноголюдных/open source проектов
(это не подразумевает необходимость мгновенного и поголовного перехода);

3) Практическая ценность "костылей" типа boost ограничена, т.к. по большому
счёту они представляют собой использование языка не по назначению.

Что касается п. 2, зачастую 1-2 человека могут сделать на Лиспе больше, чем
приличная контора мейнстримовцев. Это касается Yahoo Store (откуда Грэхэм свалил,
т.к. заработал на пару с небезызвестным Робертом Моррисом что-то вроде $40M+, а что ещё надо,
чтобы достойно встретить старость? ), а также например вот этого:
http://groups-beta.google.com/group/comp.lang.lisp/browse_thread/thread/1cf0a2866faef1d0/7983e2224c4974ef

Кстати, когда смотрите LOTR, не забывайте, что харю и мимику тов. Gollum'а
тоже сделал Лисп (IZware).

Напоследок приведу ссылку на одну интересную вещь — пример работы с Common Lisp,
в режиме самого что ни на есть interactive development'а. Я уже давал ссылку на
статью известного деятеля в области OO, XP и пр. Martin'а Fowler'а:
http://martinfowler.com/articles/languageWorkbench.html

Если в кратце, то в статье рассказывается о пользе DSL, и в качестве
примера рассматривается написание на C# расширяемого парсера некоего
лога вызовов/чего-то ещё с конфигурацией через XML. Идея заключается
о создании нужного класса в зависимости от типа записи и последующем
раскидовании по пропертям определённых подстрок. Исходные данные выглядят
так:
#123456789012345678901234567890123456789012345678901234567890
SVCLFOWLER         10101MS0120050313.........................
SVCLHOHPE          10201DX0320050315........................
SVCLTWO           x10301MRP220050329..............................
USGE10301TWO          x50214..7050329...............................


C#'ная реализация — см. статью. Лисп в ней, кстати, упоминается,
но пример реализации не приведён.

Rainer Joswig приводит реализацию на Лисп'е:
http://lispm.dyndns.org/news?ID=NEWS-2005-07-08-1

Что более интересно, позже он выложил Quicktime movie, показывающий
процесс разработки Лисп-решения. Торрент доступен тут:
http://www.xach.com/bt/dsl-in-lisp.mov.torrent
Для тех, у кто с торрента скачать не может, здесь отмиррорен сам мувик
http://depni.sinp.msu.ru/~ivan_iv/lisp/dsl-in-lisp.mov
(125 Mb; я, честно говоря, затрудняюсь сказать, почему Rainer Joswig предпочитает
делать квиктаймы, вместо того, чтобы сделать гораздо более компактный swf).

Разработка происходит в среде LispWorks на Power Mac G5. Виден процесс
отладки DSL'я Прошу заметить, в плюсах так просто не посмотришь, во что
разворачивается темплейт. (По поводу самой среды — Personal Edition, более чем
достаточный, чтобы побаловаться, доступен забесплатно для Винды, Мака и Линуха
на сайте www.lispworks.com)

Надеюсь, эти материалы заинтересуют.
Re: Lisp
От: ON  
Дата: 12.07.05 09:11
Оценка:
Лично меня практически убедили заняться Лиспом.

Остается еще пара вопросов:
1. Мэйнстрим-языки хороши еще тем, что они уже интегрированы в привычную инфраструктуру. А большинство задач это сопровождение/адаптация уже существующих приложений/решений, выбирать язык вообще не приходится. Единственный вариант — встраивать Лисп примерно как сейчас это происходит с SQL. Вопрос — где взять эти lisp.cpp, lisp.java, lisp.pas, lisp.cs?

2. Что нельзя написать на Лисп? То есть куда отодвигается горизонт "слишком сложно" при переходе на Лисп.
Posted via RSDN NNTP Server 1.9
Re[2]: Lisp
От: Курилка Россия http://kirya.narod.ru/
Дата: 12.07.05 09:24
Оценка: +1
Здравствуйте, ON, Вы писали:
ON>2. Что нельзя написать на Лисп? То есть куда отодвигается горизонт "слишком сложно" при переходе на Лисп.

На мой взгляд будет сложно, или точнее малоцелесообразно писать низкоуровневый "железный" код на лиспе, т.к. всёже там есть сборщик мусора и проч. довольно высокоуровневые инструкции языка. Т.е. аналогия с забиванием гвоздей микроскопом. Для таких задч лучше использовать более подходящие инструменты — ассемблер, си (и молоток )
Re: Lisp
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.07.05 12:46
Оценка: 1 (1) +4
Здравствуйте, fionbio, Вы писали:

А может ты статейку нам сбацаешь?
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Lisp
От: fionbio  
Дата: 12.07.05 12:53
Оценка:
Здравствуйте, VladD2, Вы писали:

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


VD>А может ты статейку нам сбацаешь?


Попробую, хотя сегодня-завтра не обещаю.
Re[3]: Lisp
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.07.05 12:57
Оценка:
Здравствуйте, fionbio, Вы писали:

F>Попробую, хотя сегодня-завтра не обещаю.


Ну, на завтра никто и не надеялся.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Lisp
От: mihoshi Россия  
Дата: 13.07.05 05:34
Оценка:
Здравствуйте, fionbio, Вы писали:

И все-таки. Какие Lisp имеет преимущества, кроме сверхлегкой для машины (и неудобной для человека) грамматики?
Re[2]: Lisp
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 13.07.05 06:16
Оценка: +1
Здравствуйте, mihoshi, Вы писали:

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


M>И все-таки. Какие Lisp имеет преимущества, кроме сверхлегкой для машины (и неудобной для человека) грамматики?


Хм... меня скобки перестали угнетать где-то к 4-ой главе Practical Common Lisp. Вы попробуйте и зацените.

К 6-ой главе я уже считал что как раз у Лиспа и есть сверхлегкая для человека грамматика, после всяких mainstream XML велосипедов типа BPEL просто наслаждаешся жизнью.

Единственное условие — пользуйтесь IDE! Без элементарной расскраски и возможности перехода на определение метода, даже прекрасно написанные исходники Eclipse IDE на прекрасно синтаксически вылизанной Java — дремучий лес.
-- Главное про деструктор копирования не забыть --
Re[3]: Lisp
От: mihoshi Россия  
Дата: 13.07.05 08:53
Оценка:
Здравствуйте, mishaa, Вы писали:

M>>И все-таки. Какие Lisp имеет преимущества, кроме сверхлегкой для машины (и неудобной для человека) грамматики?


M>Хм... меня скобки перестали угнетать где-то к 4-ой главе Practical Common Lisp. Вы попробуйте и зацените.


Ты не ответил на мой вопрос.
Re: Lisp
От: Mishka Норвегия  
Дата: 13.07.05 08:58
Оценка:
Я со всем согласен, но есть два вопроса:

1. Как найти работу программистом на Lisp?
2. Как получать больше денег программируя на Lisp, чем, например, на C# или VBA?
Re[4]: Lisp
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.07.05 09:00
Оценка: 8 (1)
Здравствуйте, mihoshi, Вы писали:

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


M>>>И все-таки. Какие Lisp имеет преимущества, кроме сверхлегкой для машины (и неудобной для человека) грамматики?


M>>Хм... меня скобки перестали угнетать где-то к 4-ой главе Practical Common Lisp. Вы попробуйте и зацените.


M>Ты не ответил на мой вопрос.


Просто в самом вопросе предпосылка неверна, поэтому отвечать на него смысла не имеет если её не отрицать. Просто смысл в скобках, т.е. в том факте что программа на лиспе есть по сути AST, т.е. программа==данные, и трансформации она подвергается с такой же лёгкостью как данные в традиционных императивных языках. Т.е. экспрессивность решений повышается в разы, паттерны реализуются запросто и т.д.
Re[2]: Lisp
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.07.05 09:02
Оценка: :)
Здравствуйте, Mishka, Вы писали:

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


Сделай Yahoo Shops
Re[3]: Lisp
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.07.05 09:04
Оценка:
Здравствуйте, Курилка, Вы писали:

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


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


К>Сделай Yahoo Shops


Боюсь, что для этого нужно быть Полом Грэхэмом.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Lisp
От: Cyberax Марс  
Дата: 13.07.05 09:11
Оценка: +2
Курилка wrote:

> M>>Хм... меня скобки перестали угнетать где-то к 4-ой главе Practical

> Common Lisp. Вы попробуйте и зацените.
> M>Ты не ответил на мой вопрос.
> Просто в самом вопросе предпосылка неверна, поэтому отвечать на него
> смысла не имеет если её не отрицать. Просто смысл в скобках, т.е. в
> том факте что программа на лиспе есть по сути AST, т.е.
> программа==данные, и трансформации она подвергается с такой же
> лёгкостью как данные в традиционных императивных языках. Т.е.
> экспрессивность решений повышается в разы, паттерны реализуются
> запросто и т.д.

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

Во-первых, писать программу в виде чистого AST — неудобно.
Во-вторых, писать нетривиальные преобразования AST — весьма непросто,
причем тестировать их тоже не легко.
В-третьих, для обычных языков типа Java/C# уже существуют системы для
редактирования AST. Только называется это Aspect Oriented Programming. А
для C# у нас еще и R# есть

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[2]: Lisp
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.07.05 09:14
Оценка: 1 (1)
Здравствуйте, Mishka, Вы писали:

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


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


Вот об этом есть интересная автобиография: Lisping at JPL
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Lisp
От: pvgoran Россия  
Дата: 13.07.05 09:45
Оценка:
Здравствуйте, mishaa, Вы писали:

M>Единственное условие — пользуйтесь IDE! Без элементарной расскраски и возможности перехода на определение метода, даже прекрасно написанные исходники Eclipse IDE на прекрасно синтаксически вылизанной Java — дремучий лес.


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

P.S. Из IDE для Scheme — я нашел DrScheme, и он мне понравился. По крайней мере, для обучения он хорош (вроде для этого и предназначен). Под Windows работает (как и под Linux). Какие-то возможности отладки есть. А Project Management я там не нашел .
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[3]: Lisp
От: Mishka Норвегия  
Дата: 13.07.05 09:48
Оценка: 26 (1) +3
Здравствуйте, eao197, Вы писали:

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

E>Вот об этом есть интересная автобиография: Lisping at JPL

То есть: "хочешь есть, не трогай lisp?"

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

P.S. Немножко не по теме, но всё же. Microsoft собирается избавится от VBA и пересадить всех на .NET. Для меня это хорошая новость, но вот наши desk developer-ы этому не слишком рады — придётся больше думать, и C# — это не VBA. Попробуй кто меня пересадить на Lisp, я б тоже наверно не был бы слишком счастлив.
Re[4]: Lisp
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.07.05 09:49
Оценка: 2 (1)
Здравствуйте, pvgoran, Вы писали:

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


M>>Единственное условие — пользуйтесь IDE! Без элементарной расскраски и возможности перехода на определение метода, даже прекрасно написанные исходники Eclipse IDE на прекрасно синтаксически вылизанной Java — дремучий лес.


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


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


Если от emacs сильно не тошнит, то глянь сюда
Лично мне показалось юзабельным.
Re[5]: Lisp
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 13.07.05 10:04
Оценка: 8 (2)
P>>Если уж зашел об этом разговор... Какие есть более-менее качественные (минимум — с поддержкой отладки) некоммерческие IDE для Common Lisp? Желательно, чтобы работали под Windows.

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


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

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

Ну а если тошнит то вот сюда http://jabberwocky.sourceforge.net/
-- Главное про деструктор копирования не забыть --
Re[4]: Lisp
От: pvgoran Россия  
Дата: 13.07.05 10:04
Оценка:
Здравствуйте, pvgoran, Вы писали:

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


Будем считать, что про Emacs+SLIME я ответ уже получил
Автор: CrazyPit
Дата: 12.07.05
. Хотя для меня так и осталось непонятным, насколько легко это все установить/настроить — в частности, на Windows.
... << RSDN@Home 1.1.4 stable rev. 510>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.