Re[50]: Сложный язык для сложных срограмм.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 20.02.07 09:00
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>Насколько я понимаю строками Потом даём компилеру. Ну или байткод генерить.


VD>И чем это оличается от вызова компилятора во вроемя исполнения?


VD>Понимаешь, ли в чем дело. Основная проблема метапрограммирования не в том, том чтобы скопилировать и выполнить код врантайме.


Да я понимаю. Я то всего лишь разницу показывал между С и ST, отвечая на сообщение.

IT>Не совсем. Подобное можно сэмулировать даже в С с помощью указателей на функции.


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

Полагаю, всё упирается в удобство. По мне, так и в ST это тоже делается неудобно
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[52]: Сложный язык для сложных срограмм.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 20.02.07 09:10
Оценка:
Здравствуйте, IT, Вы писали:

IT>>>А как быть с декомпозицией кода?


L>>Прости, не понял. Что имеется в виду?


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


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

Хотя можно ли это тогда называть макросами, я не знаю
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[53]: Сложный язык для сложных срограмм.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 20.02.07 09:10
Оценка:
Здравствуйте, VladD2, Вы писали:

ANS>>Так это фича языка лиспа такая, что там абсолютно всё реализовано на макросах.


VD>if, car, cdr тоже?


if — в схеме да car/cdr разумеется примитивы.
А если по существу, то цепляться к тому на чём реализовано — это придирки. В чём недостатки реализации ПМ на макрах?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[56]: Сложный язык для сложных срограмм.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 20.02.07 09:21
Оценка:
Здравствуйте, IT, Вы писали:

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


С Лиспом то же самое, кроме повсеместного использования ПМ.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[54]: Сложный язык для сложных срограмм.
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.07 21:11
Оценка:
Здравствуйте, lomeo, Вы писали:

L>if — в схеме да car/cdr разумеется примитивы.

L>А если по существу, то цепляться к тому на чём реализовано — это придирки. В чём недостатки реализации ПМ на макрах?

В возможностях. В скорости работы. В ML разбором образцов занимается нехилого размера модуль скомпилированный в нэйтив код и потимизированный по самое нехочу. При этом используются специальные типы данных в которые вставляются "закладки" позволяющие усокрить раоботу. В итоге получается не медленее чем на if-ах в С.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Сложный язык для сложных срограмм.
От: ironwit Украина  
Дата: 27.02.07 10:55
Оценка:
Здравствуйте, eugene0, Вы писали:


E>Игроделанье оказалось ужасно неблагодарным занятием


можно подробнее осветить причину? очень надо
... << RSDN@Home 1.2.0 alpha rev. 0>>
Я не умею быть злым, и не хочу быть добрым.
Re[25]: Сложный язык для сложных срограмм.
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.02.07 00:07
Оценка:
Здравствуйте, ironwit, Вы писали:

E>>Игроделанье оказалось ужасно неблагодарным занятием


I>можно подробнее осветить причину? очень надо


Платят мало. Ведь море юнцов жаждут стать программистами игр. Уровень у них низкий, но цену они сбивают сильно. Плюс на рынке много конкурентов, что снижает прибыльность.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: Сложный язык для сложных срограмм.
От: ironwit Украина  
Дата: 28.02.07 06:09
Оценка:
Здравствуйте, VladD2, Вы писали:

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


E>>>Игроделанье оказалось ужасно неблагодарным занятием


I>>можно подробнее осветить причину? очень надо


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


понятно. спасибо Агромаднейшее
... << RSDN@Home 1.2.0 alpha rev. 0>>
Я не умею быть злым, и не хочу быть добрым.
Re[45]: Сложный язык для сложных срограмм.
От: ironwit Украина  
Дата: 03.03.07 05:52
Оценка:
Здравствуйте, Quintanar, Вы писали:



Q>Паттерн-матчинг нужен всегда, когда надо извлекать значения из сложных структур данных (более сложных чем int). Хотя бы с той точки зрения, что не надо писать горы if'ов. В том же Лиспе постоянно можно видеть ступенчатые проверки типов и извлечения значений:

Q>
Q>(if (my-super-struct? p) (my-super-f (my-super-struct->mega-field p))
Q>   (if (my-super-struct2? p) ....))
Q>


а вы не могли бы привести пример как выглядел бы код при паттерн-матчинге?

P.S.
вообще в этом ничего не понимаю. пытаюсь понять.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Я не умею быть злым, и не хочу быть добрым.
Re[46]: Сложный язык для сложных срограмм.
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.03.07 11:23
Оценка: 4 (1)
Здравствуйте, ironwit, Вы писали:

Q>>
Q>>(if (my-super-struct? p) (my-super-f (my-super-struct->mega-field p))
Q>>   (if (my-super-struct2? p) ....))
Q>>


I>а вы не могли бы привести пример как выглядел бы код при паттерн-матчинге?


Ну, как-то так, если переводить на лисповские скобки:
((match p)
  ((my-super-struct (my-super-struct2 x)) ...))

Или как-то так, если использовать более традиционный синтаксис:
match (p)
  | MySuperStruct(MySuperStruct2 as x) => ... // используем x

То есть образец описывающий структуру объекта, а не набор проверок.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.