Здравствуйте, VladD2, Вы писали:
VD>Тут нужно еще помнить о производительности. Все же ленивость через lazy обходится дороговато в энергичных (странное слово) языках.
В случае D не очень дорого, lazy преобразуется в анонимную функцию и соответственно добавляется один лишний вызов, в релизном
машинном коде лишний call/ret, будь оптимизатор dmd получше все это заинлайнилось бы.
VD>В случае же if-а имеет место выполнение одного из двух выражений. И это "бесплатно".
Здравствуйте, VladD2, Вы писали:
L>>Знаешь, то что сегодня кажется нормальным и логичным, завтра обрастает такими деталями, что начинаешь сильно жалеть, что ввязался. Имею такой опыт именно с мета-программированием (генерация кода как текста, не немерле).
VD>Ну, так и не надо проецировать свой неудачный опыт на немерл.
Собственно, почему "не надо"? Опыт разработчиков шарпа мне видимо тоже не стоит проецировать на него?
VD>ЗЫ
VD>Я заметил, что многие противники макросов до этого генерили код руками. Может фобии связаны именно с этим?
Ну, у меня еще был опыт генерации xslt-шаблонов с помощью того же xslt. Впечатления тоже не из приятных.
Здравствуйте, FR, Вы писали:
FR>В случае D не очень дорого, lazy преобразуется в анонимную функцию и соответственно добавляется один лишний вызов, в релизном машинном коде лишний call/ret, будь оптимизатор dmd получше все это заинлайнилось бы.
Это и есть очень дорого. Так все делают. Ну, кроме Хаскеля, где ленивость обрабатывается особенным образом.
Сравни косвенный (сильно) вызов и банальное неисполнение выражения. Это очень разные по скорости операции. Во втором случае нет не только вызова по ссылке, но и вообще какого либо вызова. Это пара тактов процессора против пары десятков.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Lloyd, Вы писали:
L>>>Знаешь, то что сегодня кажется нормальным и логичным, завтра обрастает такими деталями, что начинаешь сильно жалеть, что ввязался. Имею такой опыт именно с мета-программированием (генерация кода как текста, не немерле).
VD>>Ну, так и не надо проецировать свой неудачный опыт на немерл.
L>Собственно, почему "не надо"? Опыт разработчиков шарпа мне видимо тоже не стоит проецировать на него?
В шарпе появилась поддержка МП?
VD>>Я заметил, что многие противники макросов до этого генерили код руками. Может фобии связаны именно с этим?
L>Ну, у меня еще был опыт генерации xslt-шаблонов с помощью того же xslt. Впечатления тоже не из приятных.
Это те же яйца — вид с боку. Текстовая генерация без возможности возможности взаимодействовать кодом проекта.
Я тебе давно говорил и повторяю повторять. Просто попробуй. Найди себе задачу по душе и реализуй ее на макросах. Я тебе в этом помогу. А вот когда ты это сделаешь, то мы вместо (с тобой) тебя послушаем. Гарантирую, что ты изменишь свое мнение.
Ты чем по жизни занимаешься? Вебом? У меня как раз есть невеороятно захватывающий проект в этой области, а деать мне его не интересно и некогда. Берись. Получишь не только массу драйва и интересного опыта, но возможно сможешь стать занаменитым как автор одного из самых не ординарных решений для вэба координатор (на порядки) упрощающего разработку динамических сайтов для веба.
Ну, а если разбираться неинтересно, то по крайней мере не вводи людей в заблуждение распространением своих домыслов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>>>Ну, так и не надо проецировать свой неудачный опыт на немерл.
L>>Собственно, почему "не надо"? Опыт разработчиков шарпа мне видимо тоже не стоит проецировать на него?
VD>В шарпе появилась поддержка МП?
Нет, разработчики шарпа проектировали синтаксис шарпа. Допустили "нелогичности". Почему я должен предполагать, что я, ты или кто-то другой при переходе на nemerle вдруг перестанет совершать такие ошибки?
VD>>>Я заметил, что многие противники макросов до этого генерили код руками. Может фобии связаны именно с этим?
L>>Ну, у меня еще был опыт генерации xslt-шаблонов с помощью того же xslt. Впечатления тоже не из приятных.
VD>Это те же яйца — вид с боку. Текстовая генерация без возможности возможности взаимодействовать кодом проекта.
Причем тут вообще код проекта?
VD>Я тебе давно говорил и повторяю повторять. Просто попробуй. Найди себе задачу по душе и реализуй ее на макросах. Я тебе в этом помогу. А вот когда ты это сделаешь, то мы вместо (с тобой) тебя послушаем. Гарантирую, что ты изменишь свое мнение.
Это ничего не изменит, т.к. единичный пример (даже мой пример) не является доказательством.
VD>Ты чем по жизни занимаешься? Вебом?
Нет, не вэбом.
VD>У меня как раз есть невеороятно захватывающий проект в этой области, а деать мне его не интересно и некогда. Берись. Получишь не только массу драйва и интересного опыта, но возможно сможешь стать занаменитым как автор одного из самых не ординарных решений для вэба координатор (на порядки) упрощающего разработку динамических сайтов для веба.
VD>Ну, а если разбираться неинтересно, то по крайней мере не вводи людей в заблуждение распространением своих домыслов.
Еще раз советую воздержаться от употребления слов, несущих отрицательную коннотацию. Это не способствует конструктивной беседе.
Здравствуйте, Lloyd, Вы писали:
L>Еще раз советую воздержаться от употребления слов, несущих отрицательную коннотацию. Это не способствует конструктивной беседе.
Ты так говоришь как будто ты конструктивен.
Ты тут защищаешь свою веру, а не пытаешься выяснить правду.
У тебя есть вера "макросы говно!". И ты придумываешь кучу совершенно левый "аргументов" чтобы ее отстоять.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Lloyd, Вы писали:
L>Нет, разработчики шарпа проектировали синтаксис шарпа. Допустили "нелогичности". Почему я должен предполагать, что я, ты или кто-то другой при переходе на nemerle вдруг перестанет совершать такие ошибки?
ОК. Давай быть конкретными. Приведи список нелогичностей которые ты считаешь синтаксическими и обсудим их.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
L>>Еще раз советую воздержаться от употребления слов, несущих отрицательную коннотацию. Это не способствует конструктивной беседе. WH>Ты так говоришь как будто ты конструктивен. WH>Ты тут защищаешь свою веру, а не пытаешься выяснить правду.
Нет, я ставлю под сомнение твою веру. Именно поэтому у тебя такая эмоциональная реакция.
WH>У тебя есть вера "макросы говно!". И ты придумываешь кучу совершенно левый "аргументов" чтобы ее отстоять.
Я не писал, что макросы — гавно. Если ты не заметил, я уточнил, что именно считаю опасным и недальновидным — использование макросов, позволяющих менять синтаксис целевого языка. Ключевое тут — не слово "макрос", а "изменение синтаксиса".
Ваши аргументы по этому разногласию свелись к тому, чтобы я поверил вам наслово, мол в практике проблем не возникает.
Даже если не принимать во внимание мой личный опыт "борьбы" с метапрограммированием (я вполне допускаю что многое делал неправильно), то все равно остаются ошибки допущенные проектировщиками иных языков. По какой причине Nemerle-разработчики застрахованы от таких ошибок? Ответа на этот вопрос я почему-то не услышал.
P.S. Я тебе очень прошу не повторять, что выбор синтаксических макросов — дело добровольное и что nemerle — это не монолитный язык. Я в курсе.
Здравствуйте, VladD2, Вы писали:
L>>Нет, разработчики шарпа проектировали синтаксис шарпа. Допустили "нелогичности". Почему я должен предполагать, что я, ты или кто-то другой при переходе на nemerle вдруг перестанет совершать такие ошибки?
VD>ОК. Давай быть конкретными. Приведи список нелогичностей которые ты считаешь синтаксическими и обсудим их.
Да, давай будем конкретными. Приведи список причин, почему при переходе на nemerle вдруг перестанут совершаться такие ошибки и мы обсудим их.
L>Я не писал, что макросы — гавно. Если ты не заметил, я уточнил, что именно считаю опасным и недальновидным — использование макросов, позволяющих менять синтаксис целевого языка. Ключевое тут — не слово "макрос", а "изменение синтаксиса".
Здравствуйте, FR, Вы писали:
L>>Я не писал, что макросы — гавно. Если ты не заметил, я уточнил, что именно считаю опасным и недальновидным — использование макросов, позволяющих менять синтаксис целевого языка. Ключевое тут — не слово "макрос", а "изменение синтаксиса".
FR>Хороший все таки язык лисп
Очень хороший. И время показало, где ему самое место.
Здравствуйте, Lloyd, Вы писали:
FR>>Хороший все таки язык лисп
L>Очень хороший. И время показало, где ему самое место.
Ну скажем не самое плохое место, куча гораздо более молодых и популярных языков давно уже сгинули, а старичок хоть и живет
на самой окраине, но вполне здоров и бодр
Здравствуйте, Lloyd, Вы писали:
VD>>ОК. Давай быть конкретными. Приведи список нелогичностей которые ты считаешь синтаксическими и обсудим их.
L>Да, давай будем конкретными. Приведи список причин, почему при переходе на nemerle вдруг перестанут совершаться такие ошибки и мы обсудим их.
Ну, раз сказать тебе не чего. То что ты лезешь в каждую бочку?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
L>>Да, давай будем конкретными. Приведи список причин, почему при переходе на nemerle вдруг перестанут совершаться такие ошибки и мы обсудим их.
VD>Ну, раз сказать тебе не чего. То что ты лезешь в каждую бочку?
Т.е. у тебя нет ответа на вопрос? Ну так это вполне ожидаемо.
Здравствуйте, Lloyd, Вы писали:
L>Я не писал, что макросы — гавно. Если ты не заметил, я уточнил, что именно считаю опасным и недальновидным — использование макросов, позволяющих менять синтаксис целевого языка. Ключевое тут — не слово "макрос", а "изменение синтаксиса".
Не в первый раз вижу утверждение, будто синтаксические макросы позволяют менять синтаксис.
И это, будто бы способно породить трудности.
Но менять синтаксис такие макросы не могут, могут только расширять его.
То есть видя известную синтаксическую конструкцию, можно быть уверенным, что она означает то, что означала.
Видя новую, неизвестную вам конструкцию, можно проявить любознательность, ознакомиться с ее предназначением.
Но никакого изменения синтаксиса...
Может это простая терминологическая путаница между словами изменять и расширять, но она способна вести к недоразумениям.
Здравствуйте, Chrome, Вы писали:
C>Но менять синтаксис такие макросы не могут, могут только расширять его.
В Немерле, вызов макроса через синтаксис функции или оператора, например, может развернуться во что угодно. Можно переопределить большинство стандартных конструкций, вроде if/else, for, foreach, etc, в том числе и с другим синтаксисом.
Здравствуйте, Chrome, Вы писали:
C>Но никакого изменения синтаксиса...
C>Может это простая терминологическая путаница между словами изменять и расширять, но она способна вести к недоразумениям.
Расгирение — это частный случай изменения. Это так, к сведению.
Здравствуйте, Chrome, Вы писали:
C>Здравствуйте, Lloyd, Вы писали:
L>>Я не писал, что макросы — гавно. Если ты не заметил, я уточнил, что именно считаю опасным и недальновидным — использование макросов, позволяющих менять синтаксис целевого языка. Ключевое тут — не слово "макрос", а "изменение синтаксиса".
C>Не в первый раз вижу утверждение, будто синтаксические макросы позволяют менять синтаксис. C>И это, будто бы способно породить трудности. C>Но менять синтаксис такие макросы не могут, могут только расширять его. C>То есть видя известную синтаксическую конструкцию, можно быть уверенным, что она означает то, что означала. C>Видя новую, неизвестную вам конструкцию, можно проявить любознательность, ознакомиться с ее предназначением.
C>Но никакого изменения синтаксиса...
C>Может это простая терминологическая путаница между словами изменять и расширять, но она способна вести к недоразумениям.
Никакой путаницы нет. Макросы nemerle позволяют создавать также операторы и функции, в поведением, которое невозможно предсказать при просмотре функции.
Кроме вод обычно сильносвязный, существует множество неявных зависимостей внутри программы, и макросы влияют в том числе на них.
Здравствуйте, gandjustas, Вы писали:
G>Никакой путаницы нет. Макросы nemerle позволяют создавать также операторы и функции, в поведением, которое невозможно предсказать при просмотре функции.
Чем вызов макроса в данном случае отличается от вызова функции? Если не видеть ее кода и документации точно так же нельзя сказать, что она делает.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, VladD2, Вы писали:
L>>>Нет, разработчики шарпа проектировали синтаксис шарпа. Допустили "нелогичности". Почему я должен предполагать, что я, ты или кто-то другой при переходе на nemerle вдруг перестанет совершать такие ошибки?
VD>>ОК. Давай быть конкретными. Приведи список нелогичностей которые ты считаешь синтаксическими и обсудим их.
L>Да, давай будем конкретными. Приведи список причин, почему при переходе на nemerle вдруг перестанут совершаться такие ошибки и мы обсудим их.
Отсутствие оператора as.
При ссылочном сравнении требуется приведение к object:
class A {}
class Program
{
static Main() : void
{
def a = A();
def b = A();
when (a == b) {} // Errorwhen (a : object == b) {} // Now ok.
}
}