LINUX.ORG.RU

CL быстрее прочих :)


0

3

Новый, и как всегда красивый, пример кодогенерации от swizard

http://swizard.livejournal.com/158763.html

на этот раз решение задачи http://shootout.alioth.debian.org/u32q/benchmark.php?test=fannkuchredux&lang=...

★★★★★

Последнее исправление: psv1967 (всего исправлений: 1)
Ответ на: комментарий от archimag

>> А то как раз вопрос эффективности реализации многие упускают из цели

Может просто не ставят такой цели?


Что и требовалось доказать.

anonymous
()
Ответ на: комментарий от anonymous

> Что и требовалось доказать.

Кому это требовалась доказать? Зачем это требовалась доказать? Вы можете вообще что-нибудь вменяемо сказать?

archimag ★★★
()
Ответ на: комментарий от archimag

Что ваше (не)понимание метапрограммирования и его целей и задач и начинающаяся через это паника, симптомы которой мы тут периодически наблюдаем, происходит из непонимания целей и задач построения DSL, которые вы рассматриваете как-то исторически, археологически раскапывая «от синтаксиса» и прочих отложений, вместо замысла и назначения, и side effect-ом этого обозначая oldschool и newschool то, что в реальности имеет одну единую природу.
Это же очевидно: слепое пятно в понимании DSL <=> в механизмах реализации DSL <=> утверждение «DSL+meta» не нужны <=> утверждение о old school/new school, декадансе и авангарде там, где такого разделения течения от мейнстрима на субкультуры объективно и не было :)

ОК, напустим на это fuzzy logic. DSL/meta не нужно — один край с весом 0, нужно всенепременно — другой с весом 1.0. А между ними пораскиданы всякие парадигмы программирования (или, по-вашему, old school/new skool), которые выбираются по степени осиливания аффтором.

Хотелось бы таки всё — не вкусовщины в выборе этих весов, а целенаправленного поиска в пространстве состояний. А то, «от него кровопролитиев ждали, а он new skool съел».

anonymous
()
Ответ на: комментарий от anonymous

>это половые трудности конкретной реализации платформы конкретной реализации языка.

Да я не про это... Я про то, что язык вообще непримитивных типов может не иметь. Про стататическую типизацию я вообще молчу. А еще про то, что тип не является аттрибутом языка.

К слову сказать, половые трудности как раз у gpl2c. В том плане, что накрылся он.

нетривиальных — мешает


Не мешает, если применяется экстенсивный подход, когда рота солдат перекрывает по своим ТТХ экскаватор. Хотя, да, внутрь лучше не лазить, ради душевного спокойствия.

взят в руки нормальный язык с метапрограммированием...


Зачем? Что в экономической ИС можно метпрограммировать? Тупую логику расчета, тривиальный интерфейс? Экономическая ИС должна обеспечивать работу с метаданными.

Но самое смешное не в этом! Самое смешное что при таком раскладе, даже супер-пупер язык, всего лишь будет использоваться в качестве управлялки для прокси-объекта настоящего объекта предметной области. И все его нетривиальная система типов пропадет в холостую! Ха-ха-ха. Взаимотношения между объектом предметной области никак не будут регулироваться из-за динамической сущности обоих. А если нет разницы...?

Macil ★★★★★
()
Ответ на: комментарий от Macil

> Зачем? Что в экономической ИС можно метпрограммировать? Тупую логику расчета, тривиальный интерфейс? Экономическая ИС должна обеспечивать работу с метаданными.

Ну-ну, в теме вы товаришь совершенно.

antares0 ★★★★
()
Ответ на: комментарий от mv

Объяснять? Зачем? Зачем пытаться объяснять что-то тому, кто даже не пытается меня понять(ну или, что страшнее, не может)?

/me уже два раза пытался до тебя донести одну тривиальнейшую мысль. Но, если она так сложна для тебя, может тебе лучше пойти в дворники?

balodja ★★★
()
Ответ на: комментарий от archimag

> то просто часть платформы, к обсуждаемому вопросу отношения не имеет.

Я иногда плохо понимаю тебя. Какой платформы? Это дается внешней библиотекой F# PowerPack.

dave ★★★★★
()
Ответ на: комментарий от anonymous

> если бы там были иерархические группировки и итоги по ним, [..] я бы отнёс к DSL [..]; если бы простые какие-то трансформации, то скорее ближе к API.

Там есть группировки. Если не изменяет склероз, то функция Seq.groupBy в обычном коде и она же в F# Linq.

В общем, непонятно. Да и честно говоря, мне уже стало все равно, как это называется :)

dave ★★★★★
()
Ответ на: комментарий от balodja

Объяснять? Зачем? Зачем пытаться объяснять что-то тому, кто даже не пытается меня понять(ну или, что страшнее, не может)?

/me уже два раза пытался до тебя донести одну тривиальнейшую мысль. Но, если она так сложна для тебя, может тебе лучше пойти в дворники?

У мальчика большие надежды на собственную ценность. Ты пустые комментарии в лиспосраче ради престижа оставляешь, чтобы было? Мол, я тут рядом постою, авось умным считать будут?

mv ★★★★★
()
Ответ на: комментарий от archimag

> Вы можете вообще что-нибудь вменяемо сказать?

ну если вы сами ничего кроме голой схоластитики (ман схоластика) не можете сказать, то вопрос на грани самого толстого троллинга в этом топике :)

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от mix_mix

А почему бы не взять лисп, прикрутить к нему алгебраические типы данных, pattern matching, ленивость из коробки и прочие вкусности? Самое интересное, что всё это уже реализовано, Qi II называется, вот только судьба у него довольно печальна - умер так толком и не родившись. Вопрос: почему так? P.S. Нет, мне действительно интересно.

Живыми дети получаются, если рождаются головой вперёд, а не жопой в сложенном виде.

Наверное, лисперам перечисленные пункты нафиг не нужны. Особенно, первое. А штангистам лисповый синтаксис нафиг не нужен.

mv ★★★★★
()
Ответ на: комментарий от psv1967

> ну если вы сами ничего кроме голой схоластитики (ман схоластика)

не можете сказать


Хм, вы вообще понимаете этот термин? Если вы помните, то ключевым принципом схоластики являлось суждение о превосходстве веры над разумом. Я же не протяжении всего топика пытаюсь построить полностью разумное, логически обоснованное и законченное суждение о обсуждаемом вопросе. С другой стороны же находится почти что религиозная вера (и Let Over Lambda библия её) о Великой значимости метапрограммирования в CL и повсеместном использовании DSL в коде на CL.

archimag ★★★
()
Ответ на: комментарий от archimag

я полностью понимаю термин схоластика, в отличии от вас. схоластика как раз и занималась чисто логическим путем доказывая существование БГ.

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

такими схоластами забито до отказа каждое отделение психокоррекции в любом городе.

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

вся глупость такого подхода например проявилась, когда попытались заставить в переходе paw->root заставить пользоваться C/C++ синтаксисом... проект по моему практически откинул коньки...

С другой стороны R взяли и написали схемоподобный интерпретатор + основные возможности APL систем и синтаксис максимально подогнали под пользователя... все кишки ООП спрятали... результат не замедлил сказаться.

... так что практика практике рознь, хватит уже «слона гладить» по тому что попало под руку :)

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от archimag

>С другой стороны же находится почти что религиозная вера ... о Великой значимости метапрограммирования в CL...

«Панимаишь...», да - метапрограммирование не единственный «плюс» CL-я, и скорее «приятное следствие» его организации. Он как «необходимое, но не достаточное» условие, побуждающее использовать CL. (Хотя, возможно, для кого-то - и достаточное, а для кого-то - и не необходимое ;) Но вот только _без_ него CL уж точно нах не сдался большинству ныне его использующих.

Т.е. при том, что это не единственный и не самый главный плюс (таковой вообще трудно выделить, если только это не чьё-то субъективное мнение), _переоценить_ его сложно :)

yyk ★★★★★
()
Ответ на: комментарий от psv1967

> я полностью понимаю термин схоластика, в отличии от вас. схоластика

как раз и занималась чисто логическим путем доказывая существование

БГ.



Пойдите перечитайте свои источники ещё раз. Или лучше обратитесь к специалистам (таки, например, можно найти на кафедре философии).

критерий истинности практика.


О чём я весь топик и говорю.

тыкать при этом библиотеками бесполезно, это не прикладной софт,

а системный. его пишут не считаясь со скоростью и удобством


разработки.



Да ладно? Вы сами то разработкой занимаетесь? Как вы вообще отделяете прикладной софт от библиотек в эпоху когда повторное использование ставится во главу угла и каждое приложение реально разбивается на множество библиотек? Ну ладно, и что, подход, который демонстрирует swizard, он проще и удобней для практической разработки именно приложений и не подходит для разработки библиотек, где используются более сложные методы? И вы тут будет рассказывать про «кривые логические цепочки»?

вся глупость такого подхода например проявилась


Какого подхода? Вы можете хотя бы пару абзацев текста логически связать?

С другой стороны R взяли и написали схемоподобный интерпретатор +

основные возможности APL систем и синтаксис максимально подогнали


под пользователя... все кишки ООП спрятали... результат не замедлил


сказаться.



Вы вообще о чём? К чему вы это вообще говорите? Демонстрируете пример «кривых логических цепочек и замыкания оных»?

archimag ★★★
()
Ответ на: комментарий от archimag

> Как вы вообще отделяете прикладной софт от библиотек в эпоху когда повторное использование ставится во главу угла и каждое приложение реально разбивается на множество библиотек? Ну ладно, и что, подход, который демонстрирует swizard, он проще и удобней для практической разработки именно приложений и не подходит для разработки библиотек, где используются более сложные методы? И вы тут будет рассказывать про «кривые логические цепочки»?

я смотрю «флюс» у специалиста скоро лопнет? :) насчёт реусе кода отличный вброс!

вы уж решите кто вы: доблестный ооп библиотеко писатель или прикладник пользующийся написанным кем то софтом?

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

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

вменяемый человек при этом, все что пишет погружает в среду литературного программирования (ее выхлоп в плане документации: например то как swizard описывает борьбу на шотауте).

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

и подход swizard как раз демонстрирует как надо постепенно, планомерно и системно пилить задачу на составное части. оставляя себе максимум свободы маневра до последнего момента.

не будет ни один прикладник заниматься вашим ооп-ешным рефакторингом (слово то какое само за себя говорящее :).

удел галерных гребцов, гребля на галерах. им не понять всей прелести академической гребли (эх слово то какое! :)

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от yyk

> Но вот только _без_ него CL уж точно нах не сдался большинству
> ныне его использующих.

Вот одна цитата отсюда

Earlier this year, I was having lunch with my former co-worker, Jeremy Brown. He had been one of the senior engineers on the Polaris project at ITA Software, and we had worked together closely. (He left to start his own company, Rep Invariant.) We were talking about the use of Lisp in Polaris, and specifically about Lisp macros. To my surprise, Jeremy opined that having macros in the language was a net drawback! Many people have objected to macros, but Jeremy really knows all about macros; he’s a very proficient Lisp programmer, and has seen how we use macros in Polaris.

В итоге это привело к событию, которое получило известность как Great Macro Debate. К сожалению, видеозапись не велась, так что сейчас можно полагаться только на слова на тех, кто присутствовал при этом знаком событии. По словам Vladimir Sedach это как раз и было столкновение двух направлений: с одной стороны старые лисперы, а с другой люди пришедшие в CL относительно недавно из других языков.

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

archimag ★★★
()
Ответ на: комментарий от psv1967

> не будет ни один прикладник заниматься вашим ооп-ешным рефакторингом

(слово то какое само за себя говорящее :).


Что за бред вы тут понаписали? Какую вы вообще находите связь между ООП и повторным использованием кода? Что я говорил про рефакторинг ООП? Зачем вы вообще свои фобии и некомпетентность на меня выплёскиваете?

вы уж решите кто вы: доблестный ооп библиотеко писатель или

прикладник пользующийся написанным кем то софтом?



Я пишу как прикладной софт, так и библиотеки. Но вам этого не понять? Пойдите посмотрите мой код и на его основе сможете рассказывать что со мной не так. Здесь не надо фантазировать, большая часть моего кода открыта, а вашего?

подход swizard как раз демонстрирует как надо постепенно,

планомерно и системно пилить задачу на составное части.



Издеваетесь, никто вменяемый не будет использовать подход swizard на практике, ибо дико раздувать и усложнять решение, вместо того что бы писать чисто и ясно, это полный идиотизм. Кстати, swizard на практике его и не использует, ибо просто не пишет на CL практический софт.

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

прелести академической гребли (эх слово то какое! :)



Перестаньте уже бредить.

archimag ★★★
()
Ответ на: комментарий от archimag

> He left to start his own company, Rep Invariant

по моему логично: наличие макросов мешает имплантации анальных зондов и стройной системе получения доходов с галерного флота (размер флота становится не важен для результата, а доход увы прямо пропорционален обороту и следственно размеру галер (вследствии причин которые в данном обсуждении не важны (каков вброс! а? :)))

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от archimag

>Так что мнение о том, что без метапрограммирования CL никому не нужен является принципиально не верным.

Ох, бл%, как же ты любишь слышать не то, что говорят...

Я не сказал - никому. Я сказал - большинству ныне использующих. CL и так тянет на звание «маргинального», а без макросистемы уделал бы всех. Ну и да - Jeremy Brown маргинал из маргиналов из маргиналов! =)

...люди пришедшие в CL относительно недавно из других языков


ну да, и на cll регулярно повторяются темы «как убрать ил лиспа скобки» и прочее...


P.S. И мне трудно представить, сколько бы потребовалось трудозатрат чтобы переписать тот-же sbcl без использования макр и что бы это за угрёбище получилось...

yyk ★★★★★
()
Ответ на: комментарий от archimag

Количество слов «бред» напоминает о вышедшем из под контроля бредогенераторе :(

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

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

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

всё это чисто программерское задродство --- прикладника интересует документированно решенная задача. особую ценность представляет такое решение, которое легко поддается дальнейшей модификации... именно это я вижу у swizard.

а все ваши изыски со сверх оптимальным кодом библиотечного качества абсолютно бесполезны в процессе реальной практической деятельности.

если программист раб ТЗ и прикован к скамье на галере (его эксплуатирует манагер в трудовом коллективе) то возможно всё это очень облегчает хозяину «галеры» получение бабла... а галернику облегчает его алальные страдания.

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

[бред] вся дискуссия напоминает мне дискуссию профессионального переписчика на пергаменте из средневекового монастыря с купцами которые свои берестяные грамотки царапают на коленке :) [\бред]

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от yyk

> Я сказал - большинству ныне использующих.

Откуда такая инфа? Вы знаете много людей, реально использующих CL? Из тех, с кем я общался и кто использует CL для коммерческой разработки никто не относится к макросам с таким религиозным трепетом, который имеет место на ЛОРе. Да часто удобно, да используют, но без фанатизма и диких DSL.

ну да, и на cll регулярно повторяются темы «как убрать ил

лиспа скобки» и прочее...



Поверьте, в Great Macro Debate участвовали не такие.

И мне трудно представить, сколько бы потребовалось трудозатрат чтобы

переписать тот-же sbcl без использования макр и что бы это за


угрёбище получилось...



Хм, трудно понять вашу мысль. Но возьмите ту же JVM, она младше, чем SBCL (которому уже вроде 18 лет), там не использовались макросы и т.п., но, как показывают мучения swizard, сейчас она является значительно более совершенной технологической платформой (если не принимать во внимание сам язык). Например, в JVM реализована критически важная фича - сборка мусора без остановки всех потоков, чего в SBCL, увы, нет и вероятно, в ближайшее время и не будет (а жаль).

archimag ★★★
()
Ответ на: комментарий от psv1967

> повторное использование кода возможно после долгой процедуры

рефакторинга цель которой оформить все в библиотеку-модуль-...


Думаю это зависит от уровня интеллекта автора.

если вы тут будете убеждать что сразу выделяете ограненные алмазы

по ходу работы, то я не поверю :)



Как известно, сразу идеальный код пишет только Линус Торвальдс. Вы это к чему?

а все ваши изыски со сверх оптимальным кодом библиотечного качества

абсолютно бесполезны в процессе реальной практической деятельности.



Ну где что-либо такое говорил? Ну о чём вы вообще говорите то?

но я повторяю зонд не нужен когда вы используете язык для

решения своих задач.



Какой ещё зонд? Я занимаюсь разработкой прикладных приложений, которые не пишутся за недели, а требует месяцы разработки. Чем занимаетесь вы?

Количество слов «бред» напоминает о вышедшем из под

контроля бредогенераторе



В этом виноваты только вы. Читали «Улисс»? Думаю, что Джойс был бы в полном восторге от того потока сознания, который вы здесь демонстрируете.

archimag ★★★
()
Ответ на: комментарий от archimag

да, начсчёт интеллекта --- «я бы Бриану палец в рот не положил» (С).

а так «тоже джойса люблю и вообще не поймите превратно» (С)

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

Какой ещё зонд? Я занимаюсь разработкой прикладных приложений, которые не пишутся за недели, а требует месяцы разработки. Чем занимаетесь вы?

яй я яй! выньте руку из чужих штанов проказник и спрячьте свой штангенциркуль :) я уже советовал поприставать к немногочисленным девушкам ЛОРа :)

чем можно заниматься используя R ? блин! ума не приложу?! :( наверное автоматизировать бухгалтерию? 8-О

... впрочем я вас понимаю (С) сейчас все прогрессивное человечество ПРАКТИЧЕСКИ используют ексель ... и да та херня которой я страдаю это сплошное олдскульство... и даже не «проблема олдскульства ДО двухтысячного года», бо «в экселе» настоячие специалисты считали и до 2000го, и даже до возникновения самого екселя :)

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от archimag

>Откуда такая инфа?

Предположение. Но ты можешь опровергнуть, если приведёшь статистику по cl-user.net разделу Libraries/Tools/Software по наличию/отсутствию defmacro. Можно в разрезе авторов ;)

никто не относится к макросам с таким религиозным трепетом, который имеет место на ЛОРе


у меня уже и матных слов скоро не будет хватать... Религиозный трепет != осознание того, что без макр (как и без множества других своих свойств) лисп «унылое говно» а-ля питон, и нужен только кучке упоротых маргиналов

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

Да часто удобно, да используют


ну ты сам всё сказал - так нахрена отрицать очевидное?

Хм, трудно понять вашу мысль.


Она банальна: макры - неотъемлемая часть CL. И насрать как на тех, кто говорит, что это единственно-важная составляющая CL, так и на тех, кто как раз по религиозным соображениям открещивается от их использования и пытается обосновать свою т.з.

Но возьмите ту же JVM...


(«спокойно, Сигизмунд...» (С)) Ты хочешь, чтобы я напялил шинель Капитана и вспомнил о влитых и вливаемых бабках? И уж тем более я не вижу связи между «отставанием CL» и наличием в нём макр.

yyk ★★★★★
()
Ответ на: комментарий от archimag

> Поверьте, в Great Macro Debate участвовали не такие.

из тех ссылок что вы указали следует:

1) пришедшему тролю наваляли от души всем сообществом (причем очередь стояла в три ряда :)

2) троль своему говностартапу (впрочем пусть живёт :) получил бесплатную рекламу (чего впрочем и добивался лишенец :)

3) младо-лисповцы с отформатированным императивно-оопешным подходом мозгом головы получили знамя в дрожащие ручонки (все лучше чем ... :)

дикси

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от yyk

> осознание того, что без макр (как и без множества других своих

свойств) лисп «унылое говно» а-ля питон, и нужен только кучке

упоротых маргиналов



Вот это принципиально не верно, ибо без и макр CL обладает гораздо большими возможностями, чем Python (на котором я так же имею достаточно большой опыт разработки).

ну ты сам всё сказал - так нахрена отрицать очевидное?


Да что я отрицаю то? Ведь именно с этого ведь и началась данная дисскусия, когда я сказал, что макросы и метапрограммирование всего лишь один из инструментов декомпозиции, доступных CL, а никакая не самая главная его фича.

archimag ★★★
()
Ответ на: комментарий от psv1967

> пришедшему тролю

Т.е. ведущий инженер ITA Software это троль? А вы тогда кто?

Знаете, я весь топик не мог понять, как человек не обладающий способностями ясно излагать свои мысли, не способный к столько-нибудь последовательному повествованию, не способный даже как либо логически связать два предложения, как такой человек способен заниматься разработкой ПО? Ведь в коде должная быть полная каша (отражение каши в голове) и ваши абсолютно дилетантские рассуждения о повтором использовании, рефакторинге и непонятной связи этого с ООП были полным тому потверждением. Я видел только один вариант работы в отрасли - тупой php-кодинга несложный сайтов-визиток. Но ваши слова:

сейчас все прогрессивное человечество ПРАКТИЧЕСКИ используют ексель

... и да та херня которой я страдаю это сплошное олдскульство...



Открыли мне ещё один способ использования подобных сомнительных способностей. Да, скриптинг на R каких-то расчётов, которые в организацих со слабо развитым IT часто делают в Excell, вполне может быть вам по силам.

Спасибо. Я закончил с вам общаться.

archimag ★★★
()
Ответ на: комментарий от archimag

>Вот это принципиально не верно, ибо без и макр CL обладает гораздо большими возможностями, чем Python

У него столько-же «батареек» в комплекте? Такое-же «комьюнити»? Такое-же количество макулатуры «_ для даунов за 24 минуты» на разных языках мира? Такой-же низкий порог вхождения, чтобы писать нечто по-сложнее чем хеловорд? Такое-же количество сторонних библиотек?

Не спорю, у CL и без макр будут преимущества перед питоном, но с учётом вышесказанного он будет востребован в очень, _очень_ узкой нише (текущую поделить на 10). Заметь, я не сказал - может применяться, я сказал - будет востребован.

метапрограммирование всего лишь один из инструментов декомпозиции


вот только он на столько отличается от остальных методов, что его наличие/отсутствие становится знаковой характеристикой

А так да - очень многие языки «Тьюринг-полные»

yyk ★★★★★
()
Ответ на: комментарий от archimag

>Т.е. ведущий инженер ITA Software это троль?

Он «потребитель». В чистом виде. Я не нашёл его следов в открытых CL-проектах. Может плохо искал? И то, что он «ведущий инженер» может говорить о чём угодно, но не даёт мне оснований «брать его слова на веру». И да, и более поздние его реплики - http://wingolog.org/archives/2009/03/24/international-lisp-conference-day-two - и меня заставляют думать, что он упорот чуть более, чем полностью.

yyk ★★★★★
()
Ответ на: комментарий от yyk

а если менее политкорректно - с авторитетами иди...

yyk ★★★★★
()
Ответ на: комментарий от archimag

блин такой напряженный процесс титана мысли оказался за кадром :) «он думал» --- хочется посоветовать: «попробуйте подумать о простом» (С), «не хочете, покушайте лапши» (С)

нашел он место на своём малогабаритном чердачке для всего анализа данных место --- «скриптинг»?!

быдлокодер! вегатерьянец!

о! нашёл --- шаблонно мыслящий человек!

... конечный автомат какой то (ключевое слово «конечный» :)

Спасибо. Я закончил с вам общаться.

укрепляйте сами знаете что :)

... а закончил как раз я, и не один раз.

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от yyk

> More seriously, the arguments against macros centered on control: control by bosses on workers, with the idea that macros make custom languages, thus making individual programmers less replaceable. While I don't believe the premise, the conclusion to me comes from another world. I hack Free Software precisely because I like my trade, and want to practice it in an environment free from coercion and domination.

клянусь что этого не видел до данной ссылки!

и этот вегетарианец еще смеет что то пищать про величину своего убогого мозга головы?

вот дословно то, что писал я!

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от Macil

>Но самое смешное не в этом! Самое смешное что при таком раскладе, даже супер-пупер язык, всего лишь будет использоваться в качестве управлялки для прокси-объекта настоящего объекта предметной области. И все его нетривиальная система типов пропадет в холостую! Ха-ха-ха. Взаимотношения между объектом предметной области никак не будут регулироваться из-за динамической сущности обоих. А если нет разницы...?

если добавить к этому, что этот «настоящий объект предметной области» зашит где-то внутри платформы, непрозрачен и неизменяем, то рано или поздно мы уткнёмся в ограниченность и нерасширяемость его API. А вот кабы был DSL...

Что в экономической ИС можно метпрограммировать? Тупую логику расчета, тривиальный интерфейс? Экономическая ИС должна обеспечивать работу с метаданными.


да те эе формы с интерфейсом сгенерировать. Тупую логику разделить на совсем тупую и хитрые бизнес-правила с событиями. Ан нет, не выйдет — если у нас только метаданные, не исполняемые

если применяется экстенсивный подход,


тогда да

anonymous
()
Ответ на: комментарий от archimag

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

осталось только уточнить, какую ситуацию вы считаете подходящей для метапрограммирования, и чем определяется то, какое значение вы ему придаёте. Сложилось впечатление, что его роль вы пытаетесь принизить — дескать да, есть оно, но пользоваться им не следует. Почему не следует? Когда оно используется уместно, например, в сабже — результат от его применения — налицо. Как сабжевых результатов можно было бы достить без метапрограммирования?
Чем-по вашему, определяется «значение метапрограммирования» и «подходящесть ситуации», если тупо не применяют потому что не умеют? Когда, по-вашему, оно уместно, а когда — выходит misuse?

anonymous
()
Ответ на: комментарий от yyk

> с учётом вышесказанного он будет востребован в очень, _очень_ узкой

нише (текущую поделить на 10).


Он и так очень низко востребован, я не знаю как это можно поделить и почему на 10, но пример того же Python, или даже PHP показывает, что востребованность мало связана с языковыми возможностями, так что не вижу оснований для подобного вывода.

метапрограммирование всего лишь один из инструментов декомпозиции

вот только он на столько отличается от остальных методов, что его

наличие/отсутствие становится знаковой характеристикой



Разве метапрограммирование является уникальным для CL? Почему мы не говорим о лямбда и замыканиях? Например, в том же Python нормальной lambda нет. А очень мощные системы метапрограммирование сейчас есть в тех же Haskell, OCaml, Racket. Даже в C++ есть очень мощная система шаблонов, возможности которой, правда, ограниченны другими языковыми свойствами (например, отсутствием функций как first-class object и т.п.), но только ими, а не самой системой метапрограммирования.

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

Т.е. метапрограммирование не только не является отличительной частью CL, но и по своей выразительности и мощности уступает многим современным языкам.

А вот REPL в CL, вкупе с доступными инструментальными средствами, действительно является уникальным и по сути не имеющим аналогов по своей эффективности. Почему не говорят о нём? Почему предметов лисп-срачей не является REPL? а всегда только макросы? Потому что за ним не стоит «красивой сказки», в которую можно поверить без реальной практики. Но только на практике можно понять всю его значимость для разработки на CL.

archimag ★★★
()
Ответ на: комментарий от archimag

> А вот REPL в CL, вкупе с доступными инструментальными средствами, действительно является уникальным и по сути не имеющим аналогов по своей эффективности. Почему не говорят о нём? Почему предметов лисп-срачей не является REPL? а всегда только макросы? Потому что за ним не стоит «красивой сказки», в которую можно поверить без реальной практики. Но только на практике можно понять всю его значимость для разработки на CL.

давно все «срачи» про репл и работу с образом системы vs работу с листингом программы все срачи отгремели...

ваша позиция с реплом признана олдскульной и порочной, она мешает анальному зондированию поциэнта :)

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

> какую ситуацию вы считаете подходящей для метапрограммирования

А какая ситуация является наиболее подходящей для использования функций? Или скажем CLOS? Вы можете их описать? Наибольшую значимость я придаю простоте, ясности и краткости кода. Достигается это за счёт удачной декомпозиции системы, а макросы являются одним из инструментов декомпозиции. Как говорил Страуструп «ничто не может заменить ума, опыта и вкуса».

например, в сабже — результат от его применения — налицо


Вообще говорят - нет, не налицо, ибо просто не с чем сравнивать. Если бы было решение той же задачи, хорошо написанное более традиционным способом, и было бы видно, что оно сильно уступает в плане производительности, тогда да, можно было бы говорить что подход swizard может применяться в тех случаях, когда нужна серьёзная оптимизация по скорости. Т.е. здесь можно говорить о факте, что Java была побита по скорости, но нет оснований считать, что она была побита именно за счёт использования метапрограммирования.

archimag ★★★
()
Ответ на: комментарий от archimag

> Т.е. метапрограммирование не только не является отличительной частью CL, но и по своей выразительности и мощности уступает многим современным языкам.

здесь хорошо бы привести пример пары-тройки языков, которым уступает по мощности. den73, например, не впечатлится от макросов в стиле Dylan, хотя они и под яву были доступны (ссылка где-то в районе goo) — ему не хватало backquote, и он признал, что лисповые макросы мощнее Dylan-овских. Приведите пример системы макросов, которая гибче CL-ных. Один пример — это схема, надмножеством макросистемы которой является CL. Другие примеры будут?

вот REPL в CL, вкупе с доступными инструментальными средствами, действительно является уникальным и по сути не имеющим аналогов по своей эффективности Почему не говорят о нём?


какие «другие инструментальные средства», SLIME? Не говорят, наверное, потому, что с виду это приглашение обычного интерпретатора. Оно и под компилируемый Google Go есть: go-repl на гитхабе. Язык менее гибкий, а «типа REPL» уже есть.
И в любом интерпретаторе такой «типа REPL» тоже есть.

anonymous
()
Ответ на: комментарий от psv1967

> давно все «срачи» про репл и работу с образом системы

vs работу с листингом программы все срачи отгремели...


Мне не понятно ваше противопоставление. При чём тут образ? Я обычно правлю код в листинге, но инструменты позволяют немедленно отправлять его в REPL, что я и делаю постоянно. Никакого противопоставления REPL листингу быть не может. Под REPL я понимаю не только командную строку, но и весь комплекс связанных с ним инструментов, а также тот уровень интеграции между ними, который предоставляет, например, SLIME.

archimag ★★★
()
Ответ на: комментарий от archimag

> А какая ситуация является наиболее подходящей для использования функций? Или скажем CLOS? Вы можете их описать

могу. Если все параметры «нечто» могут быть вычислены только в рантайме, на роль «нечто» наиболее подходит функция, и сопутствующие семантики вызова (вычисления) функций. Если вычисление какого-то параметра надо отложить, иначе получится ошибка (if (= a 0) b (/ b a)) => «нечто» — макрос, где семантика backquote определяет что и когда вычислять.
Если ООП с жёстко известной и неизменяемой иерархией — тогда C++ ООП и vtable (как вариант, defstruct с первым параметром this). Если иерархия сама должна быть гибкой — ООП с CLOS или метатаблицы как в lua или словари методов как в smalltalk.
Если «семантика вызова» сама более гибкая, что-то вроде набора правил — нужно писать какой-то движок её вычисления (и представления) в виде правил, используя любой другой вариант семантики выозва, наиболее удобный (по ощущениям) и эффективный (по измерениям) для реализации.

нет, не налицо, ибо просто не с чем сравнивать. Если бы было решение той же задачи, хорошо написанное более традиционным способом, и было бы видно, что оно сильно уступает в плане производительности, тогда да, можно было бы говорить что подход swizard может применяться в тех случаях, когда нужна серьёзная оптимизация по скорости.


разве решение на питоне не годится на роль такого «простого, хорошо написанного решения»? Хм, не совсем — рантаймы языков разные. Нужен какой-то питонолисп, да. Или вот Vala/Genie взять, там тоже почти питон.

Т.е. здесь можно говорить о факте, что Java была побита по скорости, но нет оснований считать, что она была побита именно за счёт использования метапрограммирования.


ну без позиксных нитей и привязки аффинити к процессору там непонятно что было бы, на одном процессоре. Но решение по сравнению с аналогами получилось быстрым, за счёт метапрограммирования. А за счёт чего получилась скорость ява-решения, просто платформы?
Что надо сделать с ява-решением, чтобы ускорить его в N раз (как случилось с исходным вариантом на лиспе)?
Поинт в том, что все варианты ускорений без метапрограммирования будут менее прямыми, и в следствие того — менее эффективными. То есть, что декомпозиция именно на метапрограммирование наиболее естественна, а макросы — наиболее удобны для такой декомпозиции.

anonymous
()
Ответ на: комментарий от archimag

Есть два подхода или лепишь образ «отправляя написанное в РЕПЛ» или пишешь листинг.

Все промежуточное смешно как костыли у здорового человека, ess как пример такого подхода в R у меня вызывает судорожные подергивания [разрешаю порадоваться пять минут :)]. Кроме редакции блоков r-кода в .Rnw файлах оно не пригодно увы...

Да время компиляции начинает раздражать по мере роста задачи, но ... Прогрессивное человечество изобрело кеширование и смягчило эту проблему.

Что касается слиме просто смешно: что за такой РЕПЛ тогда когда в него нельзя без протеза подключится?

Если мне нужен олдскульный подход я гружу репл R и работаю в нем не испытывая никакой надобности ни в какаких ess-slime ... всё что надо и _полноценный_ автокомпликт и редакцию объектов и кода функций я вызываю прямо в репле. В конце сессии сохраняется образ, всё что нужно --- пробежаться «c-r libr» по истории кода, и загрузить пакеты использованные ранее.

поэтому я собственно так и удивился тогда, что репл CL оказался не с таким человеческим лицом :)

psv1967 ★★★★★
() автор топика
Ответ на: комментарий от archimag

что делает оный текст бессмысленным? оно синтаксически верно, даже new skool как жаргонизм или граффити: da neu skul, bro. Семантически тут да, у вас парсер сломался. Потому что это не текст — это отрефлексированная модель на тему «почему вдруг арчмагу подумалось именно так», и откуда вдруг все эти старые/новые стили начали появляться в его сознании. Поток сознания, набор букв.

Уже на примере этого набора букв должно быть понятно, что семантика важнее синтаксиса, и она может быть настолько «густой»/усложнённой/чуждой, что её восприятие покажется бессмысленным. Главное, непонятно зачем вообще это парсить, если от этого голова болит.

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


а какова цель этого текста? не быть максимально доступным интеллектуальному большинству, но доставить сообщение по назначению. Так и цель метапрограммы может быть не в том, чтобы быть максимально чистой и ясной, а в чём-то другом.
С другой стороны, если можно достигнуть этой цели (основной) и вторичной (чистоты и ясности), и третьей (эффективности коммуникации), можно и так делать. Иначе можно было бы и в /dev/null писать.

Короче, вывод: для эффективного метапрограммирования нужна согласованная система целей, достижение которых наиболее естественно выходит именно таким способом.

anonymous
()
Ответ на: комментарий от mv

> У мальчика большие надежды на собственную ценность.

Кто мальчик, ты мальчик. Среди всех психических отклонений мании величия еще никто у меня не обнаруживал.

Ты пустые комментарии в лиспосраче ради престижа оставляешь, чтобы было?

А ты ради чего? Нашлась «илита», блин.

Мол, я тут рядом постою, авось умным считать будут?

Какие фантазии у тебя милые. Спасибо, можешь уткнуться, мне твое признание не нужно :)

balodja ★★★
()
Ответ на: комментарий от archimag

Кстати, я могу сравнить к примеру, REPL в SBCL и REPL в OpenDylan. Во втором можно было «поставить программу на паузу», запустить REPL, запустить профилировщик. Вызвать функции, обновить код, при этом перекомпилировалась бы/перелинковалась какая-то библиотека с этой функцией. Вся та же функциональность лиспового REPL с единым образом, только раскидана она по разным разделяемым библиотекам (поэтому и с перезапусками и временем жизни нужно быть аккуратным).
REPL в ECL чем-то на него похож.
Вот возьмём такой REPL из SBCL (1) , REPL из ECL (2), REPL из Python (3), и какой-нибудь вариант «сам себе репл» типа C приложение + dlopen + вызов конпелятора (4).

Интересно, чем (1) принципиально лучше (3)? (1) и (2)/(4)?

а также тот уровень интеграции между ними, который предоставляет, например, SLIME.


а что именно требуется от «интеграции со SLIME»? C-c C-c, C-c C-m, C-c C-l, C-c RET? или что-то посерьёзнее?

anonymous
()
Ответ на: комментарий от anonymous

> могу. Если все параметры «нечто» могут быть вычислены только

в рантайме


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

разве решение на питоне не годится на роль такого «простого,

хорошо написанного решения»?



Годится, только надо его переписать на CL (ибо Python сам по себе медленный) и посмотреть что получится.

Но решение по сравнению с аналогами получилось быстрым,

за счёт метапрограммирования.



На основании чего вы так утверждаете? CL сам по себе является быстрым и обгонит тот же Python без какого-либо метапрограммирования. Т.е. вопрос в том, какую скорость можно получить на CL без метапрограммирования?

То есть, что декомпозиция именно на метапрограммирование наиболее

естественна, а макросы — наиболее удобны для такой декомпозиции.



Нет, в данном случае мы имеет не пример декомпозиции, а пример очень жёсткой оптимизации.

archimag ★★★
()
Ответ на: комментарий от balodja

> Среди всех психических отклонений мании величия еще никто у меня не обнаруживал.

Вообще-то, тебе тут диагностировали комплекс неполноценности. Зависть к лисперам, таким сильным и мудрым, заставляет тебя спорить дабы хоть как-то уровняться с ними.

ugoday ★★★★★
()
Ответ на: комментарий от archimag

> хорошо написанное более традиционным способом

хорошо написанное


О! что значит «хорошо написанное»? простое, чистое, ясное?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.