Re[4]: Являются ли макросы свидетельством недостаточной выра
От: FR  
Дата: 06.07.07 02:08
Оценка:
Здравствуйте, VladD2, Вы писали:


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


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


В Смаллталке нет супер системы типов, нет и макросов, однако гибкость языка (+ метаклассы) позволяет легко решать те же задачи для которых используются макросы.
Re[4]: Являются ли макросы свидетельством недостаточной выра
От: EvilChild Ниоткуда  
Дата: 06.07.07 04:40
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я врде так отчетливо намекнул...

Т как-то очень мутно намекнул, никакой конкретики. Я такое сам тебе рассказать могу.

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

Конкретнее, что именно? Какая фича языка? Ну, типа как в плюсах шаблоны, а в хаскеле?
now playing: Phace — Born Under Saturn
Re[8]: Являются ли макросы свидетельством недостаточной выра
От: the_dip Таджикистан  
Дата: 06.07.07 13:16
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я вот все больше склоняюсь к тому, что простое решение — это решение описанное максимально близко к терминам предметной области (максимально высокоуронево). Ну, то есть с Виртом в корне не согласен. А макросы как раз позволяют мне встроить в язык такие прикладные решения. Системы типов этого не позволяют. Даже хаскелевская... если конечно не заниматься на ней МП.


Раз так, то может приведете пример задачи, которую Вы не умеете решать без использования макросов?
Re[9]: Являются ли макросы свидетельством недостаточной выра
От: WolfHound  
Дата: 06.07.07 13:53
Оценка:
Здравствуйте, the_dip, Вы писали:

_>Раз так, то может приведете пример задачи, которую Вы не умеете решать без использования макросов?

Все полные по Тьюрингу языки позволяют решать один и тотже набор задач.
Вопрос в том сколько ты это бущешь писать, сколько отлаживать и с какой скоростью это будет работать.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: Являются ли макросы свидетельством недостаточной выра
От: mkizub Литва http://symade.tigris.org
Дата: 06.07.07 14:05
Оценка: -1 :)
Здравствуйте, the_dip, Вы писали:

VD>>Я вот все больше склоняюсь к тому, что простое решение — это решение описанное максимально близко к терминам предметной области (максимально высокоуронево). Ну, то есть с Виртом в корне не согласен. А макросы как раз позволяют мне встроить в язык такие прикладные решения. Системы типов этого не позволяют. Даже хаскелевская... если конечно не заниматься на ней МП.


_>Раз так, то может приведете пример задачи, которую Вы не умеете решать без использования макросов?


Написать Windows Vista за 3 года уложившись в бюджет 1 млрд. баксов.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[10]: Являются ли макросы свидетельством недостаточной выр
От: Курилка Россия http://kirya.narod.ru/
Дата: 06.07.07 14:28
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


_>>Раз так, то может приведете пример задачи, которую Вы не умеете решать без использования макросов?

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

А можно поподробней по поводу выделенного? Макросы по дефолту ускоряют результирующий код чтоль?
Re[11]: Являются ли макросы свидетельством недостаточной выр
От: WolfHound  
Дата: 06.07.07 15:18
Оценка: +1
Здравствуйте, Курилка, Вы писали:

К>А можно поподробней по поводу выделенного? Макросы по дефолту ускоряют результирующий код чтоль?

Нет.
Но иногда единственный способ добиться оптимальной производительности это сгенерить кучу кода.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[11]: Являются ли макросы свидетельством недостаточной выр
От: IT Россия linq2db.com
Дата: 07.07.07 00:54
Оценка: 4 (3) +2
Здравствуйте, Курилка, Вы писали:

WH>>Вопрос в том сколько ты это бущешь писать, сколько отлаживать и с какой скоростью это будет работать.


К>А можно поподробней по поводу выделенного? Макросы по дефолту ускоряют результирующий код чтоль?


В принцепе WH уже ответил. Хочу дополнить примером. Маппинг в BLToolkit на больших объёмах данных работает быстрее рукописного кода. Точнее, быстрее правильного рукописного кода. Никакой вменяемых программист не будет осуществлять доступ к полям в рекордсете по номерам, только по именам полей. BLToolkit проводит предварительную инициализацию, за счёт чего на большом количестве записей вырывается вперёд. Сгенертрованный макросом код, обладающий всей информацией о запросе и структуре мапируемого объекта может генерировать наиболее оптимальный код сразу. Т.е. мы получаем не только более надёжный код, но ещё и максимально быстрый, который, в принципе, вручную написать можно, но это будет означать убийство сопровождаемости кода.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Являются ли макросы свидетельством недостаточной выра
От: Gaperton http://gaperton.livejournal.com
Дата: 07.07.07 08:22
Оценка: +1
_>Раз так, то может приведете пример задачи, которую Вы не умеете решать без использования макросов?

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

не каждая задача, которую можно ускорить не жертвуя читабельностью, этого стоит. В действительности, узкие места по производительности обычно хорошо локализованы, и программист плохо их угадывает. Поэтому, применение макросредств для увеличения производительности — это во многих случаях преждевременная оптимизация — это не может быть типовым случаем их применения.
Re[9]: Являются ли макросы свидетельством недостаточной выра
От: VGn Россия http://vassilsanych.livejournal.com
Дата: 08.07.07 06:48
Оценка: +1
_>Раз так, то может приведете пример задачи, которую Вы не умеете решать без использования макросов?

Вопрос, наверное, не в возможности-невозможности, а в удобстве.
Макросы дефакто более высокоуровневый механизм.
Мне, допустим, претит строит на классах тяжеловесные паттерны, когда можно обойтись парой строчек макроса.
Опять же, паттерны — это всё таки какое-никакое дублирование рализации.
А как мы уже давно обсуждали, все паттерны в язык не встроишь, да и не надо.
Слишком навороченный язык — имхо тоже зло.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Являются ли макросы свидетельством недостаточной выр
От: Курилка Россия http://kirya.narod.ru/
Дата: 08.07.07 06:57
Оценка:
Здравствуйте, VGn, Вы писали:

VGn>Слишком навороченный язык — имхо тоже зло.


Что есть критерий навороченности? Макросы ведь однозначно делают язык навороченней.
Re[11]: Являются ли макросы свидетельством недостаточной выр
От: VGn Россия http://vassilsanych.livejournal.com
Дата: 08.07.07 07:14
Оценка: +1
К>Что есть критерий навороченности? Макросы ведь однозначно делают язык навороченней.

Макросы "наворачивают" язык локально.
Все навороты предусмотреть нельзя, а если попытаться, — язык превратится в тысячеглавого монстра.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Являются ли макросы свидетельством недостаточной выр
От: Gaperton http://gaperton.livejournal.com
Дата: 08.07.07 10:07
Оценка: +5
VGn>Вопрос, наверное, не в возможности-невозможности, а в удобстве.
VGn>Макросы дефакто более высокоуровневый механизм.
VGn>Мне, допустим, претит строит на классах тяжеловесные паттерны, когда можно обойтись парой строчек макроса.

пример пожалуйста.

VGn>Опять же, паттерны — это всё таки какое-никакое дублирование рализации.

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

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


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

VGn>Слишком навороченный язык — имхо тоже зло.


ага. И каждый ваш новоопределенный макрос — каждый, делает этот язык все более навороченным — причем, без контроля и толковых спецификаций. Что может быть и ускорит разработку, когда вы работаете в одиночку, но приведет к катастрофе, если над проектом работает большая группа. Сразу напишете неподдерживаемый код, который потом в помойку пойдет через пару лет.
Re[11]: Являются ли макросы свидетельством недостаточной выр
От: mkizub Литва http://symade.tigris.org
Дата: 08.07.07 10:47
Оценка:
Здравствуйте, Gaperton, Вы писали:

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

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

Реализуйте паттерн ОО, плиз.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[11]: Являются ли макросы свидетельством недостаточной выр
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 08.07.07 11:45
Оценка:
Здравствуйте, Gaperton, Вы писали:

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


Ну, можно чего попроще. Лексер написать. Кстати, сначала ты скажи, сколько у тебя это времени заняло, а потом я отвечу и мы сравним.

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


Введение в язык средств абстракции вроде функций, модулей, объектов так же чревато тем, что кто-то понапишет кривых библиотек (вспомним, как было с C++ и строками). И ничего, вроде как-то пишут вполне поддерживаемый код, не отказываясь от этих абстракций.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[12]: Являются ли макросы свидетельством недостаточной выр
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 08.07.07 11:46
Оценка:
K>Ну, можно чего попроще. Лексер написать. Кстати, сначала ты скажи, сколько у тебя это времени заняло, а потом я отвечу и мы сравним.

Ой, забыл сказать. Лексер C#. А то лексер вообще можно и за пару минут написать.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[12]: Являются ли макросы свидетельством недостаточной выр
От: FR  
Дата: 09.07.07 05:37
Оценка: -1
Здравствуйте, mkizub, Вы писали:

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


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

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

M>Реализуйте паттерн ОО, плиз.


Вот на схеме без использования макросов http://okmij.org/ftp/Scheme/pure-oo-system.scm
Re[13]: Являются ли макросы свидетельством недостаточной выр
От: FR  
Дата: 09.07.07 05:39
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>>Ну, можно чего попроще. Лексер написать. Кстати, сначала ты скажи, сколько у тебя это времени заняло, а потом я отвечу и мы сравним.


K>Ой, забыл сказать. Лексер C#. А то лексер вообще можно и за пару минут написать.


По твоему лексер C# написать проще чем большинство паттернов?
Re[14]: Являются ли макросы свидетельством недостаточной выр
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 09.07.07 05:57
Оценка: :)
Здравствуйте, FR, Вы писали:

K>>Ой, забыл сказать. Лексер C#. А то лексер вообще можно и за пару минут написать.


FR>По твоему лексер C# написать проще чем большинство паттернов?


Нет. Зато проще, чем парсер С#
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[12]: Являются ли макросы свидетельством недостаточной выр
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 09.07.07 06:05
Оценка: 1 (1) +1
Здравствуйте, konsoletyper, Вы писали:

K>Ну, можно чего попроще. Лексер написать. Кстати, сначала ты скажи, сколько у тебя это времени заняло, а потом я отвечу и мы сравним.


Для лексера необходимости в макросах нет. Погляди Parsec.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.