Re[3]: Metaprogramming et al
От: Gaperton http://gaperton.livejournal.com
Дата: 11.07.05 15:49
Оценка: 2 (2) +2 :)
Здравствуйте, eao197, Вы писали:

E> И объем требует, чтобы строителей было много. А раз много, значит их средний проффессиональный уровень будет невысоким. Значит нужно их снабдить такими инструментами и технологиями, которые позволят при невысоком среднем уровне получать гарантированный результат.


Здесь есть два момента:
1) Вы почему-то пытаетесь выставить Лисп ужасно сложным в обращении и изучении. Неправда. Изучать С++ и программировать на нем существенно сложнее чем на Lisp. И ничего — пишут на С++ дофига.
2) При низком среднем уровне хорошего результата получить невозможно в любом случае. И на С++ — в большей степени, чем на Лисп.

E>И такими инструментами и технологиями как раз является мейнстрим. Причем не только в программировании, но это сейчас не важно. Важно то, что Lisp, как Prolog, как Smalltalk и иже с ними не стали мейнстримом. И не станут.


Вот вы тут упрекали анонима в "религиозности"... А почему вы решили, что это всем так важно? Полу Грэхэму, например, не важно. И мне тоже совершенно все равно, является-ли мой язык "мэйнстримом" и насколько он популярен, и знаете что, мнение участников форума на эту тему для меня еще менее важно. Касательно языков мне интересны другие вещи. Хороша ли поддержка. Есть ли сообщество разработчиков. Как часто выходят maintenance releases. Как с библиотеками и инструментальными средствами. Вы знаете, что у Лиспа с этим более чем все в порядке?

E>Просто потому, что они не пригодны для массового потребления. Это штучный инструмент для штучных задач, который нужен штучным исполнителям.

Это вообще к инженерии не относится. Это, как вы сказали, вопросы "веры и религии".
1) Исполнителям все равно, какие инструменты вы используете, им нужен результат.
2) Вы не можете знать, насколько Prolog, Lisp, и Smalltalk "непригодны для массового потребления". Чтобы это стало ясно, я попрошу вас говорить аргументировано — назвать основания. В таком духе: я хорошо владею [Prolog,Lisp, Smalltalk], и могу заявить, что для массового потребления он не подходит поэтому, поэтому и поэтому. Валяйте. Ответ "я Пастернака не читал, но осуждаю" не канает.

E>Меняем инструмент?


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


Вопрос ставите некорректно.
1) Старый код никто не будет выбрасывать даже в случае перевода перспективных разработок на новый инструмент.
2) Старый код не получает никаких преимуществ он развития языка, на котором он написан — этот код уже отлажен, готов, и работает.
3) Штучный товар или не штучный — вообще здесь не причем. Можете сверлить бетонные стены ручной дрелью, а можете делать в ней дырки перфоратором — клиент ничего кроме дырки в стене не увидит, а перфоратор из дрели вы не сделаете, даже если вы к ручной дрели прикрутите моторчик. А вот сколько дырок вы будете делать вашим инструментом (насчет штучности) — это сугубо ваше решение, инструмент тут не причем.

E>А кто-то пойдет по пути усовершенствования существующего инструмента (грабельки начнет изобретать, костыли мастерить). Кто-то сериализацию сделает, кто-то рефлекшен, кто-то удобные стредства для распределенных вычислений, кто-то организует все так, чтобы один и тот же велосипед дважды не изобретали, кто-то это будет популяризировать. И тогда, через несколько лет, мы оглянемся и скажем: "Ба, а ведь это уже совсем другой язык, совсем другая технология! А мы и не заметили".


Да ради бога. Вот тут, например, недавно в форуме были попытки расширить язык С++ новыми модными фичами, которые были штатными еще в старом добром Algol 68 (что характерно — участники форума "декларативного программирования" рыдали, глядя на эту сцену, а кое кто даже принимал деятельное участие ). Вам Аноним про что написал? Он как раз пытался вытворить над С++ что-то подобное, а тут вдруг выяснил, что уже 40 лет как есть оказывается такой язык — Lisp. В принципе может оно и нафиг не нужно, с С++ ковыряться, а? Зачем? Аноним проникся бессмысленностью и суетностью процесса изготовления костылей, с чем поспешил с вами поделиться.

А вы его в религиозные проповедники записываете — не выделывайся мол, наши деды на костылях ходили, все на них ходят, и ты ходи, и не смущай тут народ. Через пару лет, мол, изобретут костыли такие специальные, на которых можно будет бегом бегать. Смешно.
Re[9]: Metaprogramming et al
От: Gaperton http://gaperton.livejournal.com
Дата: 11.07.05 16:03
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>В итоге Yahoo был вынужден переписать их движок на С++ — видимо код

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

Все гораздо проще. Это называется — в Yahoo съэкономили на программистах ...

(a) The reason they rewrote it was entirely that the
current engineers didn't understand Lisp and were too
afraid to learn it.

Менеджмент Yahoo благодаря своим талантливым действиям попал в ситуацию, что не осталось ни одного инженера, знакомого со старой системой. И систему начали переписывать. Знакомо, знакомо.

Язык здесь, собственно, ни при чем. Что касается сложности Лиспа — это первый язык в целом ряде американских универов, например MIT. И ничего, никто его учить не боится. В целом, нанять Лисп-программистом в Штатах не проблема. Если конечно задаться целью.
Re[9]: Metaprogramming et al
От: Gaperton http://gaperton.livejournal.com
Дата: 11.07.05 16:12
Оценка: +1 :)
Здравствуйте, eao197, Вы писали:

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

E>

E>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.)

E>А тут и продолжение этой темы: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg02367.html

А мне вот это понравилось:

> (a) The reason they rewrote it was entirely that the
> current engineers didn't understand Lisp and were too
> afraid to learn it.
>
> (b) The resulting program is a new world's record case
> of Greenspun's Tenth Rule. The Yahoo Store Editor called
> compile at runtime on s-expressions made on the fly.
> To translate this into C++ they literally had to write a
> Lisp interpreter.
>

This is an interesting state of affairs. We have engineers that are afraid
to learn lisp, but are not afraid to use a mock-lisp interpreter written in
C++. I'm not sure whether to laugh or to cry.

И я совершенно согласен с автором этого сообщения. Более идиотского решения, чем описано здесь, придумать сложно.
Re[10]: Metaprogramming et al
От: Cyberax Марс  
Дата: 11.07.05 16:25
Оценка: +1 -2
Gaperton wrote:

> Все гораздо проще. Это называется — в Yahoo съэкономили на

> программистах ...

Вы уверены, что все так просто?

> (a) The reason they rewrote it was entirely that the

> current engineers didn't understand Lisp and were too
> afraid to learn it.
> Менеджмент Yahoo благодаря своим талантливым действиям попал в
> ситуацию, что не осталось ни одного инженера, знакомого со старой
> системой. И систему начали переписывать. Знакомо, знакомо.

А куда сам Грэхем сбежал? Побоялся поддерживать систему? Знакомо, знакомо.

> Язык здесь, собственно, ни при чем. Что касается сложности Лиспа — это

> первый язык в целом ряде американских универов, например MIT. И
> ничего, никто его учить не боится. В целом, нанять Лисп-программистом
> в Штатах не проблема. Если конечно задаться целью.

Так не сложность _языка_ составляет проблему, а сложность
программирования на нем. Самый простой язык — это вообще ассемблер. Все
команды вида: xxx arg1,arg2[,arg3] и еще немного ключевых слов.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[10]: Metaprogramming et al
От: Cyberax Марс  
Дата: 11.07.05 16:33
Оценка:
Gaperton wrote:

> This is an interesting state of affairs. We have engineers that are afraid

> to learn lisp, but are not afraid to use a mock-lisp interpreter
> written in
> C++. I'm not sure whether to laugh or to cry.
> И я совершенно согласен с автором этого сообщения. Более идиотского
> решения, чем описано здесь, придумать сложно.

Возможно сыграла роль инерция мышления (у нас уже были шаблоны на Лиспе
— пусть и остаются) или какие-то другие факторы (например, желание
сохранить уже готовый функционал в шаблонах). Тут сложно сказать не зная
структуры проекта.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[4]: Metaprogramming et al
От: Cyberax Марс  
Дата: 11.07.05 16:35
Оценка:
Gaperton wrote:

> А вы его в религиозные проповедники записываете — не выделывайся мол,

> наши деды на костылях ходили, все на них ходят, и ты ходи, и не смущай
> тут народ. Через пару лет, мол, изобретут костыли такие специальные,
> на которых можно будет бегом бегать. Смешно.

А вы уверены, что Лисповцы не ходят на своих особенных "скобковых"
костылях? Мне вот почему-то именно так кажется.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[10]: Metaprogramming et al
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 11.07.05 17:00
Оценка: +1
Здравствуйте, Gaperton, Вы писали:

G>This is an interesting state of affairs. We have engineers that are afraid

G>to learn lisp, but are not afraid to use a mock-lisp interpreter written in
G>C++. I'm not sure whether to laugh or to cry.

G>И я совершенно согласен с автором этого сообщения. Более идиотского решения, чем описано здесь, придумать сложно.


И я согласен. Но проблема в том, что такое будет случаться сплошь и рядом. Если уж Yahoo не смогло нанять нужного количества Lisp разработчиков для сопровождения системы, то что уж говорить про СНГ?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Metaprogramming et al
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 11.07.05 17:00
Оценка: 4 (1)
Здравствуйте, Gaperton

Прежде чем ответить на твой пост, хочу напомнить хронологию событий. Сообщение Metaprogramming et al
Автор:
Дата: 09.07.05
появилось в форуме C/C++ как ответ на Проект Visual Generator
Автор: adontz
Дата: 07.07.05
. И поэтому я воспринял как своего рода рецепт: "Ребята, не страдайте фигней на C++, не изобретайте велосипедов и костылей, начните программировать на Lisp-е". Поэтому я и ответил так, как думаю -- в настоящий момент, для большинства команд, ведущих разработку на C++, смена языка реализации на Lisp просто не реальна. И постарался объяснить, почему я так думаю.

Так же, хочу сказать, что после перемещения данной темы в "Философию программирования", мой пост потерял значительную часть своего смысла. Здесь я начинаю казаться ярым противником Lisp-а. Это не так. Я не знаю lisp-а, когда-то имел начальные знания о нем, и никогда ничего на Lisp-е не писал. Поэтому не могу сказать про него ничего плохого, за исключением, имхо, write-only синтаксиса. Вот против чего я возражаю -- так это против того, что Lisp является серьезной альтернативой для большинства современных C++ проектов.

E>>И такими инструментами и технологиями как раз является мейнстрим. Причем не только в программировании, но это сейчас не важно. Важно то, что Lisp, как Prolog, как Smalltalk и иже с ними не стали мейнстримом. И не станут.


G>Вот вы тут упрекали анонима в "религиозности"... А почему вы решили, что это всем так важно? Полу Грэхэму, например, не важно.


Пол Грэхэм продолжает писать Yahoo Shop? Или после его ухода проект был переписан потому, что никому Lisp не был интересен и нужен?

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

G> И мне тоже совершенно все равно, является-ли мой язык "мэйнстримом" и насколько он популярен, и знаете что, мнение участников форума на эту тему для меня еще менее важно.


Тем не менее на мое сообщение ты отреагировал.

G> Касательно языков мне интересны другие вещи. Хороша ли поддержка. Есть ли сообщество разработчиков. Как часто выходят maintenance releases. Как с библиотеками и инструментальными средствами. Вы знаете, что у Лиспа с этим более чем все в порядке?


Правда? А вот инициатор этой темы, Re[2]: Metaprogramming et al
Автор: fionbio
Дата: 11.07.05
, видимо придерживается другого мнения: Re[5]: Metaprogramming et al
Автор:
Дата: 10.07.05
.

G>1) Исполнителям все равно, какие инструменты вы используете, им нужен результат.


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

G>2) Вы не можете знать, насколько Prolog, Lisp, и Smalltalk "непригодны для массового потребления". Чтобы это стало ясно, я попрошу вас говорить аргументировано — назвать основания. В таком духе: я хорошо владею [Prolog,Lisp, Smalltalk], и могу заявить, что для массового потребления он не подходит поэтому, поэтому и поэтому. Валяйте. Ответ "я Пастернака не читал, но осуждаю" не канает.


Я могу заявить, что изучал в университете Prolog и уже тогда понял, что крайне тяжело разобраться в чужой прологовской программе. Еще свои мысли можно сформулировать и записать, а вот понять, что именно хотел сделать другой автор и почему от так сделал -- вот это для меня была проблема. Собственно, в этом я убедился, когда на моих глазах умерло два прологовских проекта из-за того, что их разработчики были вынуждены занятся другими вещами.

А ответ "я Пастернака не читал, но осуждаю" здесь может-таки быть уместным, поскольку у меня нет ни одного знакомого программиста, который бы что-то писал на Lisp-е. Так что даже впечатление о языке из первых уст я не могу получить иначе, как в Интернете. И что, в таких условиях можно браться за выполнение коммерческих проектов на Lisp-е?

G>2) Старый код не получает никаких преимуществ он развития языка, на котором он написан — этот код уже отлажен, готов, и работает.


Нет, он получает главное преимущество -- продолжает работать. И может использоваться повторно.

G>3) Штучный товар или не штучный — вообще здесь не причем. Можете сверлить бетонные стены ручной дрелью, а можете делать в ней дырки перфоратором — клиент ничего кроме дырки в стене не увидит, а перфоратор из дрели вы не сделаете, даже если вы к ручной дрели прикрутите моторчик. А вот сколько дырок вы будете делать вашим инструментом (насчет штучности) — это сугубо ваше решение, инструмент тут не причем.


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

G>А вы его в религиозные проповедники записываете — не выделывайся мол, наши деды на костылях ходили, все на них ходят, и ты ходи, и не смущай тут народ. Через пару лет, мол, изобретут костыли такие специальные, на которых можно будет бегом бегать. Смешно.


Может быть. Только, имхо, серебрянной пули не существует. Достоинства Lisp-а наверняка нивелируются какими-то его недостаками. Если бы это было не так, то все бы давно на Lisp-е программировали. А поскольку это не произошло, значит Lisp -- такие же костыли. Может быть чуть удобнее, и бегать в них можно прямо сейчас. А в C++ этого чуть подождать придется (если повезет ).
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[11]: Metaprogramming et al
От: Gaperton http://gaperton.livejournal.com
Дата: 11.07.05 17:10
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> Все гораздо проще. Это называется — в Yahoo съэкономили на

>> программистах ...
C>Вы уверены, что все так просто?
В общем — да. Это единственная причина для столь идиотского поступка. Когда решают нечто переписать, делают это совсем не транслируя код автоматом из одного языка в другой. Переписывают потихоньку, подсистему за подсистемой, не сворачивая поддержки старой системы.

>> (a) The reason they rewrote it was entirely that the

>> current engineers didn't understand Lisp and were too
>> afraid to learn it.
>> Менеджмент Yahoo благодаря своим талантливым действиям попал в
>> ситуацию, что не осталось ни одного инженера, знакомого со старой
>> системой. И систему начали переписывать. Знакомо, знакомо.

C>А куда сам Грэхем сбежал? Побоялся поддерживать систему? Знакомо, знакомо.

Знакомо? "Побоялся" — нет такого слова, когда речь идет о наемной работе. Никого вам на "слабо" взять не получится. Это называется по другому — "мало заплатили". Ну, заплатят еще больше за переписывание.

>> Язык здесь, собственно, ни при чем. Что касается сложности Лиспа — это

>> первый язык в целом ряде американских универов, например MIT. И
>> ничего, никто его учить не боится. В целом, нанять Лисп-программистом
>> в Штатах не проблема. Если конечно задаться целью.

C>Так не сложность _языка_ составляет проблему, а сложность

C>программирования на нем.
Там ясно было сказано что составляет проблему — "очень боятся его изучать".

C>Самый простой язык — это вообще ассемблер. Все

C>команды вида: xxx arg1,arg2[,arg3] и еще немного ключевых слов.

Лисп проще в использовании, чем "modern С++".
Re[12]: Metaprogramming et al
От: Cyberax Марс  
Дата: 11.07.05 17:26
Оценка:
Gaperton wrote:

>>> Все гораздо проще. Это называется — в Yahoo съэкономили на

>>> программистах ...
> C>Вы уверены, что все так просто?
> В общем — да. Это единственная причина для столь идиотского поступка.
> Когда решают нечто переписать, делают это совсем не транслируя код
> автоматом из одного языка в другой.

Так вроде бы никто и не транслировал — просто ее переписали.

> Переписывают потихоньку, подсистему за подсистемой, не сворачивая

> поддержки старой системы.

Я что-то не помню, чтобы Яху когда-то останавливался. Значит поддержка
старой системы на время переписывания все-таки была.

А то что переписывали по подсистемами — так про это сам Грэхем сказал.
Сначала переписали ядро, но отсавили для совместимости старые шаблоны.

> C>А куда сам Грэхем сбежал? Побоялся поддерживать систему? Знакомо,

> знакомо.
> Знакомо? "Побоялся" — нет такого слова, когда речь идет о наемной
> работе. Никого вам на "слабо" взять не получится. Это называется по
> другому — "мало заплатили".

Это называется: "Меня не уволят, пока эта система будет использоваться —
ведь никто кроме меня ее не понимает". И это говорит далеко не в пользу
автора системы.

> Ну, заплатят еще больше за переписывание.


Иногда это имеет смысл.

> C>Так не сложность _языка_ составляет проблему, а сложность

> C>программирования на нем.
> Там ясно было сказано что составляет проблему — "очень боятся его
> изучать".

Незнаю бояться ли, скорее просто не хотят. И я их понимаю, ведь любимый
стиль всех Лиспоидов — это придумать свой DSL, в котором фиг потом
разберешься.

> C>Самый простой язык — это вообще ассемблер. Все

> C>команды вида: xxx arg1,arg2[,arg3] и еще немного ключевых слов.
> Лисп проще в использовании, чем "modern С++".

ИМХО, ничуть не проще. Я уже рассказал о своем опыте поддержки Лисп-системы.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[5]: Metaprogramming et al
От: Gaperton http://gaperton.livejournal.com
Дата: 11.07.05 17:50
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Gaperton


E> Поэтому я и ответил так, как думаю -- в настоящий момент, для большинства команд, ведущих разработку на C++, смена языка реализации на Lisp просто не реальна. И постарался объяснить, почему я так думаю.

Для текущего проекта смена языка реализации нереальна, это и так всем понятно. Для новых проектов это вполне может иметь смысл, почему нет? Это первое, и второе — кто-то заставляет сразу писать на незнакомой платформе критичный проект? Боже упаси. Стратегия перехода на новую платформу предполагает существенно более сложный сценарий, и это, как я думал, не является предметом дискуссии.

Но если говорить о смене платформы — то и это вполне возможно. Только начинать надо с микропрототипов для proof of the concept. А потом (если все в порядке) с маленьких некритичных проектов. Потом (если итоги их внедрения и экстплуатации положительны), внедрять новую платформу шире, с учетом накопленного опыта. Только осторожно, никакой спешки, риски надо контроллировать.

Замечу, это все совершенно не является темой письма Анонима на мой взгляд. То есть, ИМХО вы возражаете ему не по существу.

E>Так же, хочу сказать, что после перемещения данной темы в "Философию программирования", мой пост потерял значительную часть своего смысла.


Ок, поправка принята. Учту.

E>Вот против чего я возражаю -- так это против того, что Lisp является серьезной альтернативой для большинства современных C++ проектов.


Ну что же, я именно так вас и понял

E>>>И такими инструментами и технологиями как раз является мейнстрим. Причем не только в программировании, но это сейчас не важно. Важно то, что Lisp, как Prolog, как Smalltalk и иже с ними не стали мейнстримом. И не станут.


G>>Вот вы тут упрекали анонима в "религиозности"... А почему вы решили, что это всем так важно? Полу Грэхэму, например, не важно.


E>Пол Грэхэм продолжает писать Yahoo Shop? Или после его ухода проект был переписан потому, что никому Lisp не был интересен и нужен?


Нет, после его ухода Yahoo был переписан потому, что не осталось инженеров знакомых с системой, и менеджеры Yahoo приняли (глупое) решение сменить платформу. Это вторая их ошибка — первая была в том, что они позволили уйти ключевым специалистам. Yahoo не первый, и не последний — такая история происходит много где, и язык здесь не причем. Вот, например, как было у нас? Стоило нашему CTO не подумавши объявить, что мы сворачиваем UNIX разработки и переводим весь софт на Windows, как компания в течении месяца потеряла лучших специалистов по соответствующим системам, они сменили работу, поставив компанию в интересную позу. Следует ли из этого, что UNIX — плохая серверная платформа?

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


Эта гарантия мнимая. Современный софт по своему устройству существенно сложнее языков и платформ, на которых он написан. При потере ключевых специалистов высока вероятность, что его придется переписать, независимо от языка.

G>> И мне тоже совершенно все равно, является-ли мой язык "мэйнстримом" и насколько он популярен, и знаете что, мнение участников форума на эту тему для меня еще менее важно.

E>Тем не менее на мое сообщение ты отреагировал.
Но спорить с тобой насчет популярности не буду. :-P

G>> Касательно языков мне интересны другие вещи. Хороша ли поддержка. Есть ли сообщество разработчиков. Как часто выходят maintenance releases. Как с библиотеками и инструментальными средствами. Вы знаете, что у Лиспа с этим более чем все в порядке?


E>Правда? А вот инициатор этой темы, Re[2]: Metaprogramming et al
Автор: fionbio
Дата: 11.07.05
, видимо придерживается другого мнения: Re[5]: Metaprogramming et al
Автор:
Дата: 10.07.05
.


Пардон? Ему не вполне хватает open-sourceных гуевыхбиблиотек хорошего качества, при этом он заметил, что с платными либами все в порядке. Много у нас таких либов под C#? Впрочем, Гуй я на Lisp писать бы наверное не стал, для этого и "обычные" языки неплохо подходят. Если, конечно, не говорить о С++ .

G>>1) Исполнителям все равно, какие инструменты вы используете, им нужен результат.


E>Именно так, до тех пор, пока покупатель не заинтересован в покупке всей технологии целиком, включая исходные тексты.

С этим соглашусь. Но тогда о выборе языка вообще речи не идет, и говорить вообще не о чем, не так ли?
E>Так же проблемы с малораспространнеными технологиями появляются и у исполнителя, когда оказывается неким заменить выбывающих разработчиков.
Да, это может стать проблемой. Но опять же — научится платформе проще, чем разобраться в написанном на нем приложении. Эта проблема не является showstopper-ом, и в любом случае рещается управлением кадрами.

G>>2) Вы не можете знать, насколько Prolog, Lisp, и Smalltalk "непригодны для массового потребления". Чтобы это стало ясно, я попрошу вас говорить аргументировано — назвать основания. В таком духе: я хорошо владею [Prolog,Lisp, Smalltalk], и могу заявить, что для массового потребления он не подходит поэтому, поэтому и поэтому. Валяйте. Ответ "я Пастернака не читал, но осуждаю" не канает.


E>Я могу заявить, что изучал в университете Prolog и уже тогда понял, что крайне тяжело разобраться в чужой прологовской программе. Еще свои мысли можно сформулировать и записать, а вот понять, что именно хотел сделать другой автор и почему от так сделал -- вот это для меня была проблема.

E>Собственно, в этом я убедился, когда на моих глазах умерло два прологовских проекта из-за того, что их разработчики были вынуждены занятся другими вещами

Ну и что? Сколько надо изучать С++, чтобы уметь разбираться в коде, написаном с применением boost и вывертов в духе modern C++? Не зная при этом ни одного похожего языка, и будучи незнакомым с ОО (вы ведь на момент изучения Prolog не были знакомы с декларативными языками, так)? Годика два? А если этот код еще и написан плохо?

В случае с Lisp этот срок поменьше — через несколько месяцев плотной работы (полный рабочий день) в команде со знающими людьми все будет в порядке.

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


Нет конечно, но никто вам не предлагает так делать. Даже упомянутый Аноним, кстати. Процедуру опроборования новой технологии я описал в начале письма. И так надо поступать с любой технологией, не только с Лисп.

G>>2) Старый код не получает никаких преимуществ он развития языка, на котором он написан — этот код уже отлажен, готов, и работает.

E>Нет, он получает главное преимущество -- продолжает работать. И может использоваться повторно.
Он и без этого продолжит работать гораздо вернее и ничего ему не мешает быть использованным повторно.

G>>3) Штучный товар или не штучный — вообще здесь не причем. Можете сверлить бетонные стены ручной дрелью, а можете делать в ней дырки перфоратором — клиент ничего кроме дырки в стене не увидит, а перфоратор из дрели вы не сделаете, даже если вы к ручной дрели прикрутите моторчик. А вот сколько дырок вы будете делать вашим инструментом (насчет штучности) — это сугубо ваше решение, инструмент тут не причем.


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


В общем, да, Lisp в руках индусов страшнее промышленного перфоратора, если вы об этом . Но они и с С++ управляются так, что живые мертвым завидуют. Видите-ли, Лисп на самом деле прост в использовании . Люди в американских универах вполне успешно и без проблем ему обучаются. Что нельзя сказать о С++ — вот уж его кому попало в руки давать нельзя точно. Но ведь дают, и ничего.

G>>А вы его в религиозные проповедники записываете — не выделывайся мол, наши деды на костылях ходили, все на них ходят, и ты ходи, и не смущай тут народ. Через пару лет, мол, изобретут костыли такие специальные, на которых можно будет бегом бегать. Смешно.


E>Может быть. Только, имхо, серебрянной пули не существует. Достоинства Lisp-а наверняка нивелируются какими-то его недостаками. Если бы это было не так, то все бы давно на Lisp-е программировали. А поскольку это не произошло, значит Lisp -- такие же костыли. Может быть чуть удобнее, и бегать в них можно прямо сейчас.

Угу . Грабли везде есть, кто ж спорит-то. Лисп — это, знаете-ли, уникальный костыль-трансформер — звоните сейчас и получите 5% скидку.

E> А в C++ этого чуть подождать придется (если повезет ).

Лучше не надо. С++ — и без возможности бега на костылях переусложнен донельзя .
Re[11]: Metaprogramming et al
От: Gaperton http://gaperton.livejournal.com
Дата: 11.07.05 17:52
Оценка: +1
Здравствуйте, eao197, Вы писали:

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


G>>This is an interesting state of affairs. We have engineers that are afraid

G>>to learn lisp, but are not afraid to use a mock-lisp interpreter written in
G>>C++. I'm not sure whether to laugh or to cry.

G>>И я совершенно согласен с автором этого сообщения. Более идиотского решения, чем описано здесь, придумать сложно.


E>И я согласен. Но проблема в том, что такое будет случаться сплошь и рядом. Если уж Yahoo не смогло нанять нужного количества Lisp разработчиков для сопровождения системы, то что уж говорить про СНГ?

В общем, да, стоит признать это проблемой. Как с ней бороться, это другой вопрос, но риски выше, по-любому.
Re[12]: Metaprogramming et al
От: CrazyPit  
Дата: 11.07.05 22:30
Оценка:
Здравствуйте, Gaperton, Вы писали:

E>>И я согласен. Но проблема в том, что такое будет случаться сплошь и рядом. Если уж Yahoo не смогло нанять нужного количества Lisp разработчиков для сопровождения системы, то что уж говорить про СНГ?

G>В общем, да, стоит признать это проблемой. Как с ней бороться, это другой вопрос, но риски выше, по-любому.

Этот вопрос можно решить, если

1. популязировать лисп на ресурсах рунета.
2. Выложить где-нибудь в свободном доступе какую-нибудь популистскую книжку типа Practical Common Lisp на русском, тогда ИМХО количество программеров в СНГ, разбирающихся в Лиспе возрастёт на несколько сотен или даже тысяч.
Re[5]: Metaprogramming et al
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.07.05 23:28
Оценка: +1
Здравствуйте, pvgoran, Вы писали:

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


Если интересует статическая типизация и одновременно ФЯ и метопрограммирование, то наверно стоит обратить внимание на Ocaml. Там и мощьный препроцессор есть который плюсовое метапрограммирование сделает как котенка. И отличные средства обобщенного программирования (что забавно шаблонов там нема, но плюсы отдыхают по полной прграмме). И статическая типобезопасность такая, что даже Шарп с Явой отдыхают. В прочем свои проблемы там тоже есть. Язык далек от идеальной красоты.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Metaprogramming et al
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.07.05 23:57
Оценка: 1 (1) +1
Здравствуйте, Cyberax, Вы писали:

C>Но потом пришла Java и обогнала их по фичам (Cocoon — публикация в XML,

C>JSP/Servlets+Struts — в создании шаблонов, Tapestry — в "компонентном"
C>программировании), а всякие Zope'ы/RubyOnRails/PHP обошли их по удобству
C>использования.

C>В итоге Yahoo был вынужден переписать их движок на С++


Звучит как полный бред. Java, Zope'ы/RubyOnRails/PHP обошли Лисп и именно по этому движок переписали на С++. Что же не на асме, то? Было бы еще логичнее.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Metaprogramming et al
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 12.07.05 03:39
Оценка: 1 (1)
Здравствуйте, Gaperton, Вы писали:

E>> Поэтому я и ответил так, как думаю -- в настоящий момент, для большинства команд, ведущих разработку на C++, смена языка реализации на Lisp просто не реальна. И постарался объяснить, почему я так думаю.

G>Для текущего проекта смена языка реализации нереальна, это и так всем понятно. Для новых проектов это вполне может иметь смысл, почему нет? Это первое, и второе — кто-то заставляет сразу писать на незнакомой платформе критичный проект? Боже упаси. Стратегия перехода на новую платформу предполагает существенно более сложный сценарий, и это, как я думал, не является предметом дискуссии.

Вот здесь и кроется основное несовпадение наших мнений. Вот ты говоришь: "Для новых проектов это вполне может иметь смысл, почему нет?" Но у меня есть вопрос: "А почему да?"

Мало того, что у меня вообще есть бОльшие сомнения на счет целесообразности смены C++ на что-то другое. Так еще и есть бОльшие сомнения, что переход на Lisp приведет к упрощению, удешевлению и повышению качества разработки. При этом я исхожу из двух статистических фактов:
— язык Lisp менее распространен, чем C++/Java/C#/Python/Ruby. В качестве доказательства используем количество проектов на этих языках на SourceForge.net: Re[4]: Объем синтаксиса C#, Delphi 7, Java 2, ... (48 Kb)
Автор: Oleg A. Bachin
Дата: 07.07.05
;
— для языка Lisp гораздо меньше готовых специалистов. А так же гораздо меньше доступных в продаже книг, по которым этих специалистов можно готовить.

Ну и добавить сюда можно еще и небольшую реплику по поводу следующего абзаца:

G>Но если говорить о смене платформы — то и это вполне возможно. Только начинать надо с микропрототипов для proof of the concept. А потом (если все в порядке) с маленьких некритичных проектов. Потом (если итоги их внедрения и экстплуатации положительны), внедрять новую платформу шире, с учетом накопленного опыта. Только осторожно, никакой спешки, риски надо контроллировать.


Имхо, когда компания выпускает несколько упешных продуктов и в живет за счет их тиражирования (в той или иной мере), то такой плавный переход на новую технологию может сильно затянуться. Я представляю для своих условий этот процесс и думаю, что только переход на создание новых продуктов сразу на Lisp стал бы возможен не раньше, чем через два-три года. А ведь остался бы багаж существующих проектов на C++/Java -- переписывать их на Lisp точно бы никто не стал. Даже при выходе следующей major версии какого-то продукта не факт, что оказалось бы дешевле делать ее с нуля на Lisp. А включение унаследованного C++/Java кода через какие-то переходники в Lisp код так же не кажется мне хорошим решением.

Так что для меня бОльшой и открытый вопрос: стоит ли сейчас вкладываться в постепенное освоение Lisp-а с тем, чтобы через несколько лет сделать его основной технологией разработки. Пока мне кажется более предпочтительным вкладываться в около-C++-ные технологии. В тот же boost, например.

По ходу остальных комментариев, я в большей степени с тобой согласен. Есть пара мелких дополнений.

E>>Пол Грэхэм продолжает писать Yahoo Shop? Или после его ухода проект был переписан потому, что никому Lisp не был интересен и нужен?


G>Нет, после его ухода Yahoo был переписан потому, что не осталось инженеров знакомых с системой, и менеджеры Yahoo приняли (глупое) решение сменить платформу. Это вторая их ошибка — первая была в том, что они позволили уйти ключевым специалистам. Yahoo не первый, и не последний — такая история происходит много где, и язык здесь не причем.


Здесь сложно сказать, что повлияло на решение Грэхэм-а. Так же не понятно, выиграла или проиграла Yahoo от своего решения -- время покажет. Только вот то, что Yahoo не захотело продолжать развитие проекта (который не закрыт, нужно заметить) средтствами Lisp, выглядит как тревожный симптом.

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


G>Эта гарантия мнимая. Современный софт по своему устройству существенно сложнее языков и платформ, на которых он написан. При потере ключевых специалистов высока вероятность, что его придется переписать, независимо от языка.


Тем не менее, она срабатывает. Бывают же случаи, когда основной разработчик не уходит совсем, а переходит на другой проект или на руководящую должность. Поэтому он остается доступен для того, чтобы объяснить тонкости системы. Важно то, что с мейнстримом гораздо меньше технических препятствий для смены поколений разработчиков -- просто готовых специалистов по мейнстримовым технологиям больше.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Metaprogramming et al
От: Дарней Россия  
Дата: 12.07.05 03:59
Оценка: 3 (1)
Здравствуйте, Cyberax, Вы писали:

C>А вы уверены, что Лисповцы не ходят на своих особенных "скобковых"

C>костылях? Мне вот почему-то именно так кажется.

Ну зачем к скобкам то цепляться? Это уже губановщина какая-то получается. Главное — фичи языка, а не синтаксис. Тем более что скобка — это не begin, всего лишь один символ. Ее написать нетрудно.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[11]: Metaprogramming et al
От: Дарней Россия  
Дата: 12.07.05 04:01
Оценка:
Здравствуйте, eao197, Вы писали:

E>И я согласен. Но проблема в том, что такое будет случаться сплошь и рядом. Если уж Yahoo не смогло нанять нужного количества Lisp разработчиков для сопровождения системы, то что уж говорить про СНГ?


Не смогло или не захотело — это еще вопрос. Слишком часто у менеджмента возникает желание вместо одного хорошего программиста взять двух, но подешевле
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[7]: Metaprogramming et al
От: Кодёнок  
Дата: 12.07.05 05:28
Оценка: +1
Здравствуйте, eao197, Вы писали:

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


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


Ты всё время рассуждаешь в стиле "обстоятельства не в нашу пользу, мы вынуждены выбирать другое". Речь ведь не идёт о том, чтобы вдруг все сразу взяли и перешли на Лисп, когда для него нет ни разработчиков, ни программ в ВУЗах, почти ничего существенного. Я абсолютно согласен, что начинать новый проект на Лиспе для большинства команд сейчас вообще не вариант.

На С++/STL тоже не сразу стали писать. Огромное количество опенсорс-проектов до сих пор пишется на Си, в стиле "эмуляции С++" и начинаются новые, но С++ занимает всё больше места.

Главная идея такая, что дальнейшее развитие самых популярных языков (С++, C#, Java) в конце концов сделает из них Лисп
Re[4]: Metaprogramming et al
От: Кодёнок  
Дата: 12.07.05 05:29
Оценка: 1 (1)
Здравствуйте, _Obelisk_, Вы писали:

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


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


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


Он НЕ требует cygwin. Там есть чисто Win32-версия.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.