Re[2]: Являются ли макросы свидетельством недостаточной выра
От: EvilChild Ниоткуда  
Дата: 04.07.07 16:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>В общем, являются ли ненужными прмые решения предназначенные для решения каких-то проблем, если тоже самое можно сделать "через жопу, автогеном" (с)?


Можешь обосновать почему подход Haskell это через жопу автогеном? Желательно на техническом языке, без всяких там печек, ложек и прочей профанации?
now playing: State Of Mind — Human Torch
Re[3]: Являются ли макросы свидетельством недостаточной выра
От: mkizub Литва http://symade.tigris.org
Дата: 04.07.07 17:03
Оценка: +1
Здравствуйте, EvilChild, Вы писали:

EC>Можешь обосновать почему подход Haskell это через жопу автогеном? Желательно на техническом языке, без всяких там печек, ложек и прочей профанации?


Зачем тебе на техническом языке объяснять философские проблемы? Это и есть — через жопу автогеном.
Мета-программирование и система типов — предназначены для решения разных задач.
Заниматься мета-программированием через типизацию — это использовать неверный инструмент.
Вот ножик. Удобная вещь. Им можно много чего. В поход лучше взять ножик, ну ещё топор — и это покроет 90% твоих потребностей в инструментах.
А вот говорить по этому поводу, что раз шурупы можно вертеть ножиком — то давайте отменим отвёртки — это неадекватно.
Это разные инструменты.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[4]: Являются ли макросы свидетельством недостаточной выра
От: EvilChild Ниоткуда  
Дата: 04.07.07 17:29
Оценка: +3
Здравствуйте, mkizub, Вы писали:

M>Заниматься мета-программированием через типизацию — это использовать неверный инструмент.

Я не предлагал заниматься метапрограммированием используя систему типов.
Я сделал предположение, что мощная система типов делает макросы менее востребованными.
И хотел услышать аргументы в пользу или против этого предположения.
А вы опять про ножики и ложки
Детский сад в картинках.
now playing: Noisia — Silicon
Re[5]: Являются ли макросы свидетельством недостаточной выра
От: mkizub Литва http://symade.tigris.org
Дата: 04.07.07 19:06
Оценка: +3
Здравствуйте, EvilChild, Вы писали:

M>>Заниматься мета-программированием через типизацию — это использовать неверный инструмент.

EC>Я не предлагал заниматься метапрограммированием используя систему типов.
EC>Я сделал предположение, что мощная система типов делает макросы менее востребованными.
EC>И хотел услышать аргументы в пользу или против этого предположения.
EC>А вы опять про ножики и ложки
EC>Детский сад в картинках.

Да, просто детский сад.
Ну вы хоть себя почитайте.
Макросы — это мета-программирование. Зачем нужно мета-программирование? Чтоб добавить
в язык понятия, которые в нём не существовали. Чем более в язык уже напихано — тем менее
в него нужно добавлять, потому как оно уже там есть. Ерго, мощная система типов делает
макросы менее востребованными. Буквально исходя из определений и одного логического
телодвижения. Очень простой, очень правильный и совершенно бесполезный вывод. Бо
детский сад.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[6]: Являются ли макросы свидетельством недостаточной выра
От: EvilChild Ниоткуда  
Дата: 04.07.07 19:19
Оценка:
Здравствуйте, mkizub, Вы писали:

M>Макросы — это мета-программирование. Зачем нужно мета-программирование? Чтоб добавить

M>в язык понятия, которые в нём не существовали. Чем более в язык уже напихано — тем менее
M>в него нужно добавлять, потому как оно уже там есть. Ерго, мощная система типов делает
M>макросы менее востребованными.
Очевидная мысль изложена хорошо, но вопрос воспринят слишком буквально.
Интересуют преимущества каждого подхода: для решения каких задач удобнее первый, для каких второй.
now playing: Jeff Bennett — Metals
Re[7]: Являются ли макросы свидетельством недостаточной выра
От: mkizub Литва http://symade.tigris.org
Дата: 04.07.07 20:23
Оценка: 34 (1) +1
Здравствуйте, EvilChild, Вы писали:

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

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

Видимо, ты всё-же хотел спросить не это, а то — насколько множество задач решаемых
макросами и множество задач решаемых мощной системой типов пересекаются.
Если они не пересекаются — то сравнивать макросы с типами вообще не имеет смысла, верно?

Ну а пересечение множеств этих задач зависит исключительно от конкретной реализации
макросов и конкретной реализации системы типов. Так что имеет смысл сравнивать конкретно
Lisp и ML или Nemerle и Haskell. А макросы вообще и типизацию вообще — ответ
я уже привёл. Тоже этакий "вообще" ответ.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[8]: Являются ли макросы свидетельством недостаточной выра
От: EvilChild Ниоткуда  
Дата: 05.07.07 04:23
Оценка:
Здравствуйте, mkizub, Вы писали:

M>Видимо, ты всё-же хотел спросить не это, а то — насколько множество задач решаемых

M>макросами и множество задач решаемых мощной системой типов пересекаются.
Ну, если подходить к формулировке совсем формально, то да.
У тебя есть идеи на этот счёт (я про сформулированный тобой вопрос)?
now playing: Jeff Bennett — Allocations
Re: Являются ли макросы свидетельством недостаточной выразит
От: Gaperton http://gaperton.livejournal.com
Дата: 05.07.07 10:33
Оценка: 2 (1) -1
Здравствуйте, EvilChild, Вы писали:

EC>Имеются в виду взрослые макросы a-la Lisp или Nemerle, а не те, что в C.

EC>Или так: нужны ли макросы в таких языках как Haskell?
Я думаю, и так понятно, кто за, а кто против . Влад уже выступил, могу добавить от себя — я сторонник тезиса, что необходимость в макроподдержке при гражданской разработке является симптомом недостаточной выразительности языковых средств, в т.ч. и системы типов.

За исключением случая разработки языковых расширений — здесь хорошая макросистема способна сократить трудозатраты на его создание и поддержку.
Re[9]: Являются ли макросы свидетельством недостаточной выра
От: mkizub Литва http://symade.tigris.org
Дата: 05.07.07 11:26
Оценка: 2 (1)
Здравствуйте, EvilChild, Вы писали:

M>>Видимо, ты всё-же хотел спросить не это, а то — насколько множество задач решаемых

M>>макросами и множество задач решаемых мощной системой типов пересекаются.
EC>Ну, если подходить к формулировке совсем формально, то да.
EC>У тебя есть идеи на этот счёт (я про сформулированный тобой вопрос)?

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

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

Всё таки, сколько я на них не смотрю — всё больше видится, что макросы и типы — они
имеют разные области применения, и пересечение этих областей достаточно небольшое.
Но как количественно сравнить лампочки с апельсинами — не вижу пока.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[2]: Являются ли макросы свидетельством недостаточной выра
От: WolfHound  
Дата: 05.07.07 13:18
Оценка:
Здравствуйте, Gaperton, Вы писали:

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

А можно определить где "гражданская" разработка, а где нет?
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Являются ли макросы свидетельством недостаточной выра
От: Gaperton http://gaperton.livejournal.com
Дата: 05.07.07 15:35
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


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

WH>А можно определить где "гражданская" разработка, а где нет?

Это каждый сам для себя решает, в силу своих знаний и умений. Чем больше твои знания и умения, тем более "гражданская" для тебя разработка, и тем реже тебе требуются макросы. Не наоборот.
Re[4]: Являются ли макросы свидетельством недостаточной выра
От: EvilChild Ниоткуда  
Дата: 05.07.07 18:42
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Это каждый сам для себя решает, в силу своих знаний и умений. Чем больше твои знания и умения, тем более "гражданская" для тебя разработка, и тем реже тебе требуются макросы. Не наоборот.

Т.е. получается что хочется макросов от недостаточного владения инструментом? Как-то противоречиво звучит.
now playing: Jeff Bennett — Intro
Re[5]: Являются ли макросы свидетельством недостаточной выра
От: mkizub Литва http://symade.tigris.org
Дата: 05.07.07 20:37
Оценка: +1 -3
Здравствуйте, EvilChild, Вы писали:

G>>Это каждый сам для себя решает, в силу своих знаний и умений. Чем больше твои знания и умения, тем более "гражданская" для тебя разработка, и тем реже тебе требуются макросы. Не наоборот.

EC>Т.е. получается что хочется макросов от недостаточного владения инструментом? Как-то противоречиво звучит.

Это ещё и практике противоречит. Например, моей личной практике — чем больше я работаю, тем больше мне нужно мета-программирование.
Впрочем, на полноту не претендую. Некоторые животные для выживания эволюционируют в более сложные существа, а некоторые с той же целью деградируют. Видимо Gaperton из вторых.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[6]: Являются ли макросы свидетельством недостаточной выра
От: Gaperton http://gaperton.livejournal.com
Дата: 05.07.07 22:14
Оценка: +3
G>>>Это каждый сам для себя решает, в силу своих знаний и умений. Чем больше твои знания и умения, тем более "гражданская" для тебя разработка, и тем реже тебе требуются макросы. Не наоборот.
EC>>Т.е. получается что хочется макросов от недостаточного владения инструментом? Как-то противоречиво звучит.

M>Это ещё и практике противоречит. Например, моей личной практике — чем больше я работаю, тем больше мне нужно мета-программирование.


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

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


однажды сеймура крея спросили — почему вы используете в своих суперкомьютерах такую простую систему команд? Он улыбнулся и ответил: сложную я просто не понимаю.

мне близка позиция сеймура крея, по сути и по духу. Сложно сделать, уважаемый — любой дурак может. Нет ничего труднее чем выдумывать простые вещи. Которые потом любому идиоту будут понятны.
Re[3]: Являются ли макросы свидетельством недостаточной выра
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.07.07 22:18
Оценка:
Здравствуйте, EvilChild, Вы писали:

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


VD>>В общем, являются ли ненужными прмые решения предназначенные для решения каких-то проблем, если тоже самое можно сделать "через жопу, автогеном" (с)?


EC>Можешь обосновать почему подход Haskell это через жопу автогеном? Желательно на техническом языке, без всяких там печек, ложек и прочей профанации?


А у тебя мыслительный процесс туго идет?
Я врде так отчетливо намекнул...

ОК. Посню для тех кто в танке. Хаскель как и С++ не содержит прямых средств решения пробелемы. Вместо этого в нем используется побочный эффект от избыточной мощности системы типов реализованной в языке. Системы типов Хаскеля и С++ полны по Тюрингу и допускают ограниченные вычисления в ее рамках. В результате с огромными усилиями, нехилыми проблемами и ограничениями получается решать часть задач которые, скажем, в Лиспе решались за десятки лет до появления Хасклей и С++-ов просто и элегантно.

Какие проблемы спросите вы? Да элементарные. Язык метапрограммирования в этих языках не тоже самое, что основной язык. Это приводит к тому, что нельзя просто написать библиотеку и использовать ее как в метапрограмме, так и в обычной программе. Отладка не то чтобы затруднена, а ее попросту нет. Даже нормального способа вывести сообщение об ошибке и то нет. Все через зад автогеном.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Являются ли макросы свидетельством недостаточной выра
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.07.07 22:18
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Я не предлагал заниматься метапрограммированием используя систему типов.


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

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

EC>Я сделал предположение, что мощная система типов делает макросы менее востребованными.


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

EC>И хотел услышать аргументы в пользу или против этого предположения.


Тебе их высказали, но ты похоже просто не понимашь, что делает Хаскель и С++ стль гибкими на фоне языков в которых нет не МП, ни полной по Тьюрингу системы типов (допускющей вычисления во время компиляции).

EC>А вы опять про ножики и ложки

EC>Детский сад в картинках.

Не детский сад, а профаны лезующие в философию. Уж извини за грубось.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Являются ли макросы свидетельством недостаточной выр
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.07.07 22:59
Оценка: -1
Здравствуйте, mkizub, Вы писали:

M>Всё таки, сколько я на них не смотрю — всё больше видится, что макросы и типы — они

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

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

В области типо макросы вообще мало что могут. Конечно ими можно пол языка переписать (если они мощьные), но это все же не то. Посему за рамками метапрограммирования сравнивать их если не бессмысленно, то по крайней мере сравнение будет настолько философским, что теряет всякий прикладной смысл (это я про VTBL на макросах ).

Ну, а как может выигрывать продукт в котором для достижения цели используется побочный эффект по сравнению с продуктом в котором используется специально спроектированная для этого фича лично я понять не могу. Ну, не могу я сравнивать бульдозер с велосипедом к которому приделана совковая лопата.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Являются ли макросы свидетельством недостаточной выра
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.07.07 22:59
Оценка:
Здравствуйте, Gaperton, Вы писали:

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


Система типов не может заменить наличия метапрограммирования (МП). Она, при использовании в своем исходном предназначении, не может решать задач метапрограммирования. А когда система типов превращается в средство для нелегальной реализации МП, то мы получам те же макросы, только, как я уже упомянул, "через жопу... автогеном".

И твой тезис о том, что макросы что-то там нехорошее высвечивают сразу же бьет по Хаскелям и С++ с вдвойной силой. Бо это уже не только макросистемы, но еще и кривые и неудобные макросистемы.

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


Дык, макросы и нужны для языковых расширений. 90% применения в прикладном коде для макросов, на мой взгляд, — это DSL-и. Остальные 10% — это допиливание языка напильником для применения в конкретной сфере. Это допиливание легко ложится в библиотеки и может просто пополнять язык (делая его удобнее для конкретных областей применения).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Являются ли макросы свидетельством недостаточной выра
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.07.07 22:59
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>однажды сеймура крея спросили — почему вы используете в своих суперкомьютерах такую простую систему команд? Он улыбнулся и ответил: сложную я просто не понимаю.


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


Осталось выяснить, что имеется в виду под сложным, а что под простым. Вот Вирт считает простым все что минималистично. Например, оператор foreach и параметрический полиморфизм он считает излишествами. Ведь без них можно жить (переберем все while-ами, а полиморфизм на указателях врантайме обеспечим). Другие вот придумывают лист-компрехеншоны и тоже считют это простым.

Я вот все больше склоняюсь к тому, что простое решение — это решение описанное максимально близко к терминам предметной области (максимально высокоуронево). Ну, то есть с Виртом в корне не согласен. А макросы как раз позволяют мне встроить в язык такие прикладные решения. Системы типов этого не позволяют. Даже хаскелевская... если конечно не заниматься на ней МП.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Являются ли макросы свидетельством недостаточной выра
От: deniok Россия  
Дата: 05.07.07 23:40
Оценка: +4
Здравствуйте, VladD2, Вы писали:

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


VD>Дык, макросы и нужны для языковых расширений. 90% применения в прикладном коде для макросов, на мой взгляд, — это DSL-и. Остальные 10% — это допиливание языка напильником для применения в конкретной сфере. Это допиливание легко ложится в библиотеки и может просто пополнять язык (делая его удобнее для конкретных областей применения).


Безотносительно к системам типов: а почему для DSL-ей обязательно нужны макросы?

Вот в Хаскелле библиотека комбинаторов для парсинга Parsec вполне себе создаёт удобный DSL для соответствующих задач, позволяя легко собирать парсеры из более простых, и вообще использовать их как первоклассные объекты — помещать в списки, передавать и возвращать из функций, etc. И никакой особой магии с типами не требуется, монад (которые, кстати, пользователю библиотеки не видны) вполне достаточно.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.