Re[5]: Metaprogramming et al
От: Gaperton http://gaperton.livejournal.com
Дата: 11.07.05 13:24
Оценка:
Здравствуйте, pvgoran, Вы писали:

C>>Вообще, в CL мне не понравилось полное отсутствие нормального синтаксиса

C>>(LISP=Lots of Incredibly Silly Paranthesis) и нестатическая типизация.
P>А, т.е. статической типизации там нет? Тогда, похоже, тезис о том, что "CL почти-во-всем лучше C++" неверен (т.к. IMHO статическая типизация — мощный и необходимый инструмент, и если его уже нет в языке, я не представляю, как его можно было бы реализовать средствами языка).

Статической типизации в языке нет, но эффективная разница со статически типизированным языком очень невелика на самом деле. Там есть возможность давать аннотации типов и существует несколько статических тайпчекеров. Хотите примеров — почитайте пост в этой ветке http://www.rsdn.ru/Forum/Message.aspx?mid=1266445&only=1
Автор: CrazyPit
Дата: 11.07.05


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

О динамической и статической типизации вообще
Автор: Gaperton
Дата: 12.01.05

О статической проверке типов в LISP
Автор: Gaperton
Дата: 26.10.04
Re[3]: Metaprogramming et al
От: Gaperton http://gaperton.livejournal.com
Дата: 11.07.05 13:27
Оценка: 1 (1) +2 :)
Здравствуйте, fionbio, Вы писали:

F>З.Ы. Анонимно писал, т.к. было лениво регистрироваться.

Зря. Но ничего, я тебе оценочку еще и сюда поставил, чтобы в профиль попала.
Re[19]: Metaprogramming et al
От: CrazyPit  
Дата: 11.07.05 13:37
Оценка: 2 (1)
P>Пример, иллюстрирующий вопрос:

P>
P>(defmacro (my-transform code) .......)

P>(my-transform 
P>  (if (= x y)
P>      (- x y)
P>      666
P>      )
P>  )
P>


P>(Сразу скажу — синтаксис defmacro не знаю.)


P>my-transform, допустим, добавляет в преобразуемый код вызовы, выводящие на экран названия (процедуры) перед каждым вызовом процедуры.


P>Так вот, получится ли в данном примере пройтись отладчиком по исходному коду, который внутри вызова my-transform?



Вот макрос делующий это:
(defmacro defun-print-name (name args &body body)
  `(defun ,name ,args
    (princ ',name)
    ,@body))


Вот пример:
(defun-print-name summ-2 (a b)
  (+ a b))


Так раскрывается (с учётом одного уровня):

(defun summ-2 (a b)
  (princ 'summ-2) (+ a b))


Вывод:
CL-USER> (summ-2 1 2)
SUMM-2
3


Нажимаю на М-. по названию функции — курсор переходит в начало:
(defun-print-name summ-2 (a b)
(+ a b))

Правда иногда SlLIME глючит, но не часто и вместо перехода к определению, просто печатает функциию в окне.
ЗЫ: отладчик соотвественно подвсечивает то что надо
Re[2]: Metaprogramming et al
От: Кодёнок  
Дата: 11.07.05 13:41
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>Какую реализацию Lisp-а под Win посоветуете ? Желательно наличие возможности вызова внешних функций написанных на С++.


Из бесплатных только CLISP знаю. http://clisp.cons.org/

P.S. Он юникодный, кстати. В наше время, когда от 90% windows-юзеров имеют NT-систему (2000 или XP), видеть проблемы с кодировками довольно-таки странно
Re[19]: Metaprogramming et al
От: Курилка Россия http://kirya.narod.ru/
Дата: 11.07.05 13:46
Оценка:
Здравствуйте, CrazyPit, Вы писали:


CP>Во время компиляции в CL макросы ПОЛНОСТЬ рекурсивно разворачиваются до примитивов очень низкого уровня.


А я спорил с этим чтоли? Я говорил просто про код, т.е. текстовое представление, т.е. всё развёртывание происходит в компиляторе, но программер-то видит лишь текст только. А вот про ПОЛНОСТЬЮ имхо стандарт не гарантирует этого и тот же Грэхэм утверждает что есть интерпретаторы развёртывающие макросы в рантайме, хотя это и убого по производительности, но ничему по сути не противоречит.
Re[3]: Metaprogramming et al
От: CrazyPit  
Дата: 11.07.05 13:47
Оценка:
Здравствуйте, eao197, Вы писали:

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


CP>>Да интересная дискуссия, даже зарегился на RSDN, чтоб сюда запостить.


E>


E>А скажи, CrazyPit, проекты какого объема тобой на Lisp-е пишутся? Как долго проект живет/развивается/сопровождается? Какова численность команды?


Список опсорсных проектов можно посмотреть например здесь. Ну а здесь например коммерческие проекты. У меня самого пока ещё нет достаточной практики, пишу сейчас одну программулину для себя. Может попозже возьму что-нить на заказ написать попробовать на лиспе, только проблема в том, что я в основном занимаюсь вебом. А там — perl, php, для питона то долго хостинг искать а для лиспа только если свой сервак...
Re[20]: Metaprogramming et al
От: CrazyPit  
Дата: 11.07.05 13:53
Оценка:
Здравствуйте, Курилка, Вы писали:

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



CP>>Во время компиляции в CL макросы ПОЛНОСТЬ рекурсивно разворачиваются до примитивов очень низкого уровня.


К>А я спорил с этим чтоли?


Простите, недопонял.

K> Я говорил просто про код, т.е. текстовое представление, т.е. всё развёртывание происходит в компиляторе, но программер-то видит лишь текст только. А вот про ПОЛНОСТЬЮ имхо стандарт не гарантирует этого и тот же Грэхэм утверждает что есть интерпретаторы развёртывающие макросы в рантайме, хотя это и убого по производительности, но ничему по сути не противоречит.


Интересно. А какие реализации разварачиваю в рантайме?
Re[4]: Metaprogramming et al
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 11.07.05 13:56
Оценка:
Здравствуйте, CrazyPit, Вы писали:

E>>А скажи, CrazyPit, проекты какого объема тобой на Lisp-е пишутся? Как долго проект живет/развивается/сопровождается? Какова численность команды?


CP>Список опсорсных проектов можно посмотреть например здесь. Ну а здесь например коммерческие проекты. У меня самого пока ещё нет достаточной практики, пишу сейчас одну программулину для себя. Может попозже возьму что-нить на заказ написать попробовать на лиспе, только проблема в том, что я в основном занимаюсь вебом. А там — perl, php, для питона то долго хостинг искать а для лиспа только если свой сервак...


Вообще-то я спрашивал именно про собственные проекты.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[21]: Metaprogramming et al
От: Курилка Россия http://kirya.narod.ru/
Дата: 11.07.05 14:01
Оценка:
Здравствуйте, CrazyPit, Вы писали:

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


K>> Я говорил просто про код, т.е. текстовое представление, т.е. всё развёртывание происходит в компиляторе, но программер-то видит лишь текст только. А вот про ПОЛНОСТЬЮ имхо стандарт не гарантирует этого и тот же Грэхэм утверждает что есть интерпретаторы развёртывающие макросы в рантайме, хотя это и убого по производительности, но ничему по сути не противоречит.


CP>Интересно. А какие реализации разварачиваю в рантайме?


Насколько мне помнится, упоминание таких вариантов было в On Lisp, если честно — не вижу особой целесообразности такого.
Re[5]: Metaprogramming et al
От: CrazyPit  
Дата: 11.07.05 14:10
Оценка:
Здравствуйте, eao197, Вы писали:

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


E>>>А скажи, CrazyPit, проекты какого объема тобой на Lisp-е пишутся? Как долго проект живет/развивается/сопровождается? Какова численность команды?


CP>>Список опсорсных проектов можно посмотреть например здесь. Ну а здесь например коммерческие проекты. У меня самого пока ещё нет достаточной практики, пишу сейчас одну программулину для себя. Может попозже возьму что-нить на заказ написать попробовать на лиспе, только проблема в том, что я в основном занимаюсь вебом. А там — perl, php, для питона то долго хостинг искать а для лиспа только если свой сервак...


E>Вообще-то я спрашивал именно про собственные проекты.


Ну через несколько месяцев могу рассказать и о своих, только они врят-ли будут большими, я студент и работаю пока на себя.
Re[20]: Metaprogramming et al
От: pvgoran Россия  
Дата: 11.07.05 14:22
Оценка:
Здравствуйте, CrazyPit, Вы писали:

CP>Нажимаю на М-. по названию функции — курсор переходит в начало:

CP>(defun-print-name summ-2 (a b)
CP> (+ a b))

А что делает команда M-.?

CP>Правда иногда SlLIME глючит, но не часто и вместо перехода к определению, просто печатает функциию в окне.

CP>ЗЫ: отладчик соотвественно подвсечивает то что надо

Это радует!
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[6]: Metaprogramming et al
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 11.07.05 14:26
Оценка:
Здравствуйте, CrazyPit, Вы писали:

E>>Вообще-то я спрашивал именно про собственные проекты.


CP>Ну через несколько месяцев могу рассказать и о своих, только они врят-ли будут большими, я студент и работаю пока на себя.


Понятно. Только, имхо, после такого интересного изложения собственных впечатлений от Lisp было бы здорово прочитать что-то типа:
Наша команда из такого-то количества человек в течении последних N лет занимается развитием продукта, объем которого превышает столько-то тысяч строк. За это время было выпущено столько-то основных версии и столько-то обновлений. За это время нашу команду покинули столько-то человек и пришло столько-то человек. Никто из вновь прибывших никаких проблем с изучением ранее написанного кода не встретил.

Собственно к чему это я. Да просто довелось видеть несколько систем, написанных на Prolog-е, которые активно развивались командами из одного человека в каждой. Т.е. два проекта -- два разработчика. И все было хорошо, пока эти разработчики не вынуждены были покинуть проекты по разным причинам. После чего один проект просто закрылся. А второй был полностью переписан на C++ (причем за тот же срок). Переписан из-за того, что даже если бы кто-то изучил в достаточной степени Prolog, то разобраться в том объеме Prolog-вского кода было просто не реально.

Просто я боюсь, что проекты на Lisp-е будут хорошо выполняться до тех пор, пока их делает небольшая группа увлеченных Lisp-ом разработчиков. Как только эта ситуация нарушается, проект, каким бы успешным и важным он не был, загибается или переписывается: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg02367.html

Собственно, ситуация с C++ становится практически такой же
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[21]: Metaprogramming et al
От: CrazyPit  
Дата: 11.07.05 14:30
Оценка:
Здравствуйте, pvgoran, Вы писали:

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


CP>>Нажимаю на М-. по названию функции — курсор переходит в начало:

CP>>(defun-print-name summ-2 (a b)
CP>> (+ a b))

P>А что делает команда M-.?

Переходит на определение функции по названию (по умолч. то что под курсором)
Re[7]: Metaprogramming et al
От: CrazyPit  
Дата: 11.07.05 14:43
Оценка:
Здравствуйте, eao197, Вы писали:

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


E>>>Вообще-то я спрашивал именно про собственные проекты.


CP>>Ну через несколько месяцев могу рассказать и о своих, только они врят-ли будут большими, я студент и работаю пока на себя.


E>Понятно. Только, имхо, после такого интересного изложения собственных впечатлений от Lisp было бы здорово прочитать что-то типа:

E>Наша команда из такого-то количества человек в течении последних N лет занимается развитием продукта, объем которого превышает столько-то тысяч строк. За это время было выпущено столько-то основных версии и столько-то обновлений. За это время нашу команду покинули столько-то человек и пришло столько-то человек. Никто из вновь прибывших никаких проблем с изучением ранее написанного кода не встретил.

Мне бы тоже очень хотелось, чтобы было побольше таких отзывов. Ибо я бы не отказался работать в конторе которая ведёт разрабоки на лиспе.


E>Собственно к чему это я. Да просто довелось видеть несколько систем, написанных на Prolog-е, которые активно развивались командами из одного человека в каждой. Т.е. два проекта -- два разработчика. И все было хорошо, пока эти разработчики не вынуждены были покинуть проекты по разным причинам. После чего один проект просто закрылся. А второй был полностью переписан на C++ (причем за тот же срок). Переписан из-за того, что даже если бы кто-то изучил в достаточной степени Prolog, то разобраться в том объеме Prolog-вского кода было просто не реально.


E>Просто я боюсь, что проекты на Lisp-е будут хорошо выполняться до тех пор, пока их делает небольшая группа увлеченных Lisp-ом разработчиков. Как только эта ситуация нарушается, проект, каким бы успешным и важным он не был, загибается или переписывается: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg02367.html


E>Собственно, ситуация с C++ становится практически такой же


А с Lispом ситуация наоборот. За послении несколько лет интерес к нему постоянно возростает. К тому-же появились очень эфективные (близкие к быстродействию С++) опенсорсные(что очень важно ибо лиценция на тот же franzовский CL достаточно дорога) компиляторы. Говорят, что на западе появился спрос на лисп-программистов. Я надеюсь что за Lisp только укрепит свои позиции в будующем (возможно в прошлом лисп сильно обогнал своё время, и его врямя наступает только сейчас). И один из главных козырей это DSL, но об этом здесь уже писали.
Re[7]: Metaprogramming et al
От: Gaperton http://gaperton.livejournal.com
Дата: 11.07.05 14:58
Оценка:
Здравствуйте, eao197, Вы писали:

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


E>>>Вообще-то я спрашивал именно про собственные проекты.


CP>>Ну через несколько месяцев могу рассказать и о своих, только они врят-ли будут большими, я студент и работаю пока на себя.


E>Понятно. Только, имхо, после такого интересного изложения собственных впечатлений от Lisp было бы здорово прочитать что-то типа:


E>Наша команда из такого-то количества человек в течении последних N лет занимается развитием продукта, объем которого превышает столько-то тысяч строк. За это время было выпущено столько-то основных версии и столько-то обновлений. За это время нашу команду покинули столько-то человек и пришло столько-то человек. Никто из вновь прибывших никаких проблем с изучением ранее написанного кода не встретил.


Есть дядька такой — Пол Грэхэм. Вот он очнь интересно на этот вопрос отвечал. Написал он не много ни мало — yahoo shops. У него на сайте много чего написано о применении Лиспа. Например, вот:
http://www.paulgraham.com/avg.html

What were the results of this experiment? Somewhat surprisingly, it worked. We eventually had many competitors, on the order of twenty to thirty of them, but none of their software could compete with ours. We had a wysiwyg online store builder that ran on the server and yet felt like a desktop application. Our competitors had cgi scripts. And we were always far ahead of them in features. Sometimes, in desperation, competitors would try to introduce features that we didn't have. But with Lisp our development cycle was so fast that we could sometimes duplicate a new feature within a day or two of a competitor announcing it in a press release. By the time journalists covering the press release got round to calling us, we would have the new feature too.

Re[8]: Metaprogramming et al
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 11.07.05 15:02
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Есть дядька такой — Пол Грэхэм. Вот он очнь интересно на этот вопрос отвечал. Написал он не много ни мало — yahoo shops. У него на сайте много чего написано о применении Лиспа. Например, вот:

G>http://www.paulgraham.com/avg.html
G>

G>What were the results of this experiment? Somewhat surprisingly, it worked. We eventually had many competitors, on the order of twenty to thirty of them, but none of their software could compete with ours. We had a wysiwyg online store builder that ran on the server and yet felt like a desktop application. Our competitors had cgi scripts. And we were always far ahead of them in features. Sometimes, in desperation, competitors would try to introduce features that we didn't have. But with Lisp our development cycle was so fast that we could sometimes duplicate a new feature within a day or two of a competitor announcing it in a press release. By the time journalists covering the press release got round to calling us, we would have the new feature too.


Только что прочел. И мне вот это понравилось:

In January 2003, Yahoo released a new version of the editor written in C++ and Perl. It's hard to say whether the program is no longer written in Lisp, though, because to translate this program into C++ they literally had to write a Lisp interpreter: the source files of all the page-generating templates are still, as far as I know, Lisp code. (See Greenspun's Tenth Rule.)

А тут и продолжение этой темы: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg02367.html
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Metaprogramming et al
От: _Obelisk_ Россия http://www.ibm.com
Дата: 11.07.05 15:03
Оценка:
Здравствуйте, Кодёнок, Вы писали:

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


_O_>>Какую реализацию Lisp-а под Win посоветуете ? Желательно наличие возможности вызова внешних функций написанных на С++.


Кё>Из бесплатных только CLISP знаю. http://clisp.cons.org/


Кё>P.S. Он юникодный, кстати. В наше время, когда от 90% windows-юзеров имеют NT-систему (2000 или XP), видеть проблемы с кодировками довольно-таки странно


Это я видел, хотелось бы не под cygwin.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[8]: Metaprogramming et al
От: naje  
Дата: 11.07.05 15:07
Оценка: +1
E>>Наша команда из такого-то количества человек в течении последних N лет занимается развитием продукта, объем которого превышает столько-то тысяч строк. За это время было выпущено столько-то основных версии и столько-то обновлений. За это время нашу команду покинули столько-то человек и пришло столько-то человек. Никто из вновь прибывших никаких проблем с изучением ранее написанного кода не встретил.

G>Есть дядька такой — Пол Грэхэм. Вот он очнь интересно на этот вопрос отвечал. Написал он не много ни мало — yahoo shops. У него на сайте много чего написано о применении Лиспа. Например, вот:

G>http://www.paulgraham.com/avg.html
G>

G>What were the results of this experiment? Somewhat surprisingly, it worked. We eventually had many competitors, on the order of twenty to thirty of them, but none of their software could compete with ours. We had a wysiwyg online store builder that ran on the server and yet felt like a desktop application. Our competitors had cgi scripts. And we were always far ahead of them in features. Sometimes, in desperation, competitors would try to introduce features that we didn't have. But with Lisp our development cycle was so fast that we could sometimes duplicate a new feature within a day or two of a competitor announcing it in a press release. By the time journalists covering the press release got round to calling us, we would have the new feature too.


ты вобще ссылку открывал в сообщении на которое отвечаешь?
Re[4]: Metaprogramming et al
От: CrazyPit  
Дата: 11.07.05 15:20
Оценка: 1 (1)
Здравствуйте, _Obelisk_, Вы писали:

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


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


_O_>>>Какую реализацию Lisp-а под Win посоветуете ? Желательно наличие возможности вызова внешних функций написанных на С++.


Кё>>Из бесплатных только CLISP знаю. http://clisp.cons.org/


Кё>>P.S. Он юникодный, кстати. В наше время, когда от 90% windows-юзеров имеют NT-систему (2000 или XP), видеть проблемы с кодировками довольно-таки странно


_O_>Это я видел, хотелось бы не под cygwin.


http://alu.cliki.net/implementation

http://www.cliki.net/Common%20Lisp%20implementation
Re[8]: Metaprogramming et al
От: Cyberax Марс  
Дата: 11.07.05 15:47
Оценка: +1
Gaperton wrote:

> Есть дядька такой — Пол Грэхэм. Вот он очнь интересно на этот вопрос

> отвечал. Написал он не много ни мало — yahoo shops. У него на сайте
> много чего написано о применении Лиспа. Например, вот:
> http://www.paulgraham.com/avg.html
> What were the results of this experiment? Somewhat surprisingly, it
> worked. We eventually had many competitors, on the order of twenty to
> thirty of them, but none of their software could compete with ours. We
> had a wysiwyg online store builder that ran on the server and yet felt
> like a desktop application. Our competitors had cgi scripts. And we
> were always far ahead of them in features. Sometimes, in desperation,
> competitors would try to introduce features that we didn't have. But
> with Lisp our development cycle was so fast that we could sometimes
> duplicate a new feature within a day or two of a competitor announcing
> it in a press release. By the time journalists covering the press
> release got round to calling us, we would have the new feature too.

Да, ребята _для_ _того_ _времени_ придумали классный подход к
веб-дизайну — оно было намного лучше CGI (хуже которых что-то сложно
придумать).

Но потом пришла Java и обогнала их по фичам (Cocoon — публикация в XML,
JSP/Servlets+Struts — в создании шаблонов, Tapestry — в "компонентном"
программировании), а всякие Zope'ы/RubyOnRails/PHP обошли их по удобству
использования.

В итоге Yahoo был вынужден переписать их движок на С++ — видимо код
совсем перестал быть поддерживаемым. Я лично на себе тоже подобное
испытал поддерживая чужой код — это было хуже правки глюков в
Boost.Spirit'е под VC6

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