Re[3]: Full closures in DMD 2.007
От: FR  
Дата: 11.11.07 09:35
Оценка:
Здравствуйте, _nn_, Вы писали:

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


__>Интересно.

__>Следующим шагом будет сопоставление паттернов ?

Угу, http://s3.amazonaws.com/dconf2007/WalterAndrei.pdf
Re[4]: Full closures in DMD 2.007
От: _nn_ www.nemerleweb.com
Дата: 13.11.07 18:58
Оценка: :)
Здравствуйте, FR, Вы писали:

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


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


__>>Интересно.

__>>Следующим шагом будет сопоставление паттернов ?

FR>Угу, http://s3.amazonaws.com/dconf2007/WalterAndrei.pdf


Ну может выйдет что-то вроде Nemerle без .Net

P.S.
Но вот это уже перебор:
invariant(char)[][invariant(char)[]] abbrev(invariant(char)[][] values);
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Full closures in DMD 2.007
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.11.07 16:27
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Интересно.

__>Следующим шагом будет сопоставление паттернов ?

Да, им еще до отказа от return-ов шагать и шагать .
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Full closures in DMD 2.007
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.11.07 16:27
Оценка:
Здравствуйте, eao197, Вы писали:

E>Да, вот такая вот строчка в Change Log:

E>

E>Full closure support added.


Ну, таки это произошло?!

Как говорил Дуремар — еще 256 ведер и золотой ключик у нас в кормане.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Full closures in DMD 2.007
От: FR  
Дата: 22.11.07 06:14
Оценка: +1
Здравствуйте, VladD2, Вы писали:

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


__>>Интересно.

__>>Следующим шагом будет сопоставление паттернов ?

VD>Да, им еще до отказа от return-ов шагать и шагать .


А нафига от них отказыватся, принципиально это ничего ни меняет.
Re[3]: Full closures in DMD 2.007
От: FR  
Дата: 22.11.07 06:16
Оценка:
Здравствуйте, VladD2, Вы писали:

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


E>>Да, вот такая вот строчка в Change Log:

E>>

E>>Full closure support added.


VD>Ну, таки это произошло?!


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

VD>Как говорил Дуремар — еще 256 ведер и золотой ключик у нас в кормане.


Есть надежда что все таки наиграется и застабилизирует язык.
Re[5]: Full closures in DMD 2.007
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.07 09:09
Оценка:
Здравствуйте, FR, Вы писали:

VD>>Да, им еще до отказа от return-ов шагать и шагать .


FR>А нафига от них отказыватся, принципиально это ничего ни меняет.


А вот когда откажутся ты сам мне об этом и расскажешь, а до тех мор ты Блаб и объяснить тебе ничего невозможно (вспоминаем отмазки по поводу полноценных замыканий).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Full closures in DMD 2.007
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.07 09:09
Оценка:
Здравствуйте, FR, Вы писали:

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


А что там делать то было? В C# 2.0 и Немерле реализации можно было подсмореть еще 3 года назад.
Вопрос только с контролем памяти. В упомянутых языках замыкания автоматически контролиуют время жизни всего на что они ссылаются. В D с этим могут быть проблемы (ручник в управлении памтью — это слишком большая жертава).

VD>>Как говорил Дуремар — еще 256 ведер и золотой ключик у нас в кормане.


FR>Есть надежда что все таки наиграется и застабилизирует язык.


Ага. Ща макросы доделает только...

Если серьезно, то дай Бог, так как движется он в правильном направлении, хотя и огородами.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Full closures in DMD 2.007
От: FR  
Дата: 22.11.07 09:32
Оценка:
Здравствуйте, VladD2, Вы писали:

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


VD>>>Да, им еще до отказа от return-ов шагать и шагать .


FR>>А нафига от них отказыватся, принципиально это ничего ни меняет.


VD>А вот когда откажутся ты сам мне об этом и расскажешь, а до тех мор ты Блаб и объяснить тебе ничего невозможно (вспоминаем отмазки по поводу полноценных замыканий).


Влад не надо до маразма доходить
Есть return или нет абсолютно ни на что ни влияет.
А отмазки напомни, а то я всегда жалел что нормальных замыканий в D нет.
Re[5]: Full closures in DMD 2.007
От: FR  
Дата: 22.11.07 09:33
Оценка:
Здравствуйте, VladD2, Вы писали:

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


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


VD>А что там делать то было? В C# 2.0 и Немерле реализации можно было подсмореть еще 3 года назад.


Угу а в lispe 50 лет назад

VD>Вопрос только с контролем памяти. В упомянутых языках замыкания автоматически контролиуют время жизни всего на что они ссылаются. В D с этим могут быть проблемы (ручник в управлении памтью — это слишком большая жертава).


Вряд ли, только если найдутся буратины использующие new — delete в замыканиях

VD>>>Как говорил Дуремар — еще 256 ведер и золотой ключик у нас в кормане.


FR>>Есть надежда что все таки наиграется и застабилизирует язык.


VD>Ага. Ща макросы доделает только...


VD>Если серьезно, то дай Бог, так как движется он в правильном направлении, хотя и огородами.


Угу, нормальные герои всегда идут в обход
Re[7]: Full closures in DMD 2.007
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.07 11:12
Оценка:
Здравствуйте, FR, Вы писали:

FR>Влад не надо до маразма доходить

FR>Есть return или нет абсолютно ни на что ни влияет.

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

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

FR>А отмазки напомни, а то я всегда жалел что нормальных замыканий в D нет.


Ссылок не храню, но когда я в свое время делал замечания на то что локальные фунции в D не полноценны мне на сразу приводили тысячи аргументов в оправдание этому. Насколько я помню, ты был в числе зищитников.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Full closures in DMD 2.007
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.07 11:12
Оценка:
Здравствуйте, FR, Вы писали:

FR>Угу а в lispe 50 лет назад


Можно и в Лиспе, но в нем нет ООП, и он тогда был интерпретатором, что как бы накладывает специфику. А тут можно тырить решения прямиком.

VD>>Вопрос только с контролем памяти. В упомянутых языках замыкания автоматически контролиуют время жизни всего на что они ссылаются. В D с этим могут быть проблемы (ручник в управлении памтью — это слишком большая жертава).


FR>Вряд ли, только если найдутся буратины использующие new — delete в замыканиях


Видимо ты не понял. Вот тебе псевдокод:
def x = new SomeObj();
def localFunc() { x };
return localFunc;
...

Ну, и где-то зовем данную фунцию и пытаемся использовать ее результат.
А он, зараза, замкнут на x, а тот ссылается на SomeObj который мог быть
объявлен на стеке или уничтожен принудительно.
В языках с автоматическим управлением памятью проблем быть не может, так как в x будет лежать или ссылка которую контролирует GC, или х является вэйлью-типом и копируется по значению.
Внимание вопрос, что дудет в Ди?

FR>Угу, нормальные герои всегда идут в обход


Кстати, у Героя спрашивали видел ли он Немерле и не кажется ли ему, что он последние несколько лет движется от "Вандефул С++" к "Почти Немерле"? Еще интересно, что он отвечат на вопрос "Почему же все же Ди не написан на Ди?".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Full closures in DMD 2.007
От: FR  
Дата: 22.11.07 11:45
Оценка:
Здравствуйте, VladD2, Вы писали:

FR>>Влад не надо до маразма доходить

FR>>Есть return или нет абсолютно ни на что ни влияет.

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


Но это не тот случай, например на том же питоне, на котором я активно писал, в лямбдах нет return.

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


Мне без разницы абсолютно, могу и так и так, вообще вопрос ближе к стилевым и по моему непринипиальный.

FR>>А отмазки напомни, а то я всегда жалел что нормальных замыканий в D нет.


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


Насколько я помню там шел разговор что такие недолямбды абсолютно бесполезны, я же придерживался мнения что это лучше чем ничего
Re[7]: Full closures in DMD 2.007
От: FR  
Дата: 22.11.07 12:01
Оценка:
Здравствуйте, VladD2, Вы писали:

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


FR>>Угу а в lispe 50 лет назад


VD>Можно и в Лиспе, но в нем нет ООП, и он тогда был интерпретатором, что как бы накладывает специфику. А тут можно тырить решения прямиком.


Ну в нем ООП поопней чем у большинства других

VD>>>Вопрос только с контролем памяти. В упомянутых языках замыкания автоматически контролиуют время жизни всего на что они ссылаются. В D с этим могут быть проблемы (ручник в управлении памтью — это слишком большая жертава).


FR>>Вряд ли, только если найдутся буратины использующие new — delete в замыканиях


VD>Видимо ты не понял. Вот тебе псевдокод:

VD>
VD>def x = new SomeObj();
VD>def localFunc() { x };
VD>return localFunc;
VD>...
VD>

VD>Ну, и где-то зовем данную фунцию и пытаемся использовать ее результат.
VD>А он, зараза, замкнут на x, а тот ссылается на SomeObj который мог быть
VD>объявлен на стеке или уничтожен принудительно.
VD>В языках с автоматическим управлением памятью проблем быть не может, так как в x будет лежать или ссылка которую контролирует GC, или х является вэйлью-типом и копируется по значению.
VD>Внимание вопрос, что дудет в Ди?

Сейчас уже будет нормально, раньше это было UB

FR>>Угу, нормальные герои всегда идут в обход


VD>Кстати, у Героя спрашивали видел ли он Немерле и не кажется ли ему, что он последние несколько лет движется от "Вандефул С++" к "Почти Немерле"? Еще интересно, что он отвечат на вопрос "Почему же все же Ди не написан на Ди?".


Это надо eao197 попросить чтобы спросил, он в D'шной коференции как дома
Re[9]: Full closures in DMD 2.007
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.07 13:06
Оценка: :)
Здравствуйте, FR, Вы писали:

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


Я говорил, что они вредны, а не бесполезны.
Ошибки провацируют.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Full closures in DMD 2.007
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.07 13:06
Оценка:
Здравствуйте, FR, Вы писали:

FR>Ну в нем ООП поопней чем у большинства других


В Лиспе то? Ни разу не видел. Есть КЛОС, но он макро-библиотека, а стало быть тем кто реализует фичи языка на него внимания обращать нет нужды. Или прийдется обращать внимание на все макро-библиотеки.

VD>>Ну, и где-то зовем данную фунцию и пытаемся использовать ее результат.

VD>>А он, зараза, замкнут на x, а тот ссылается на SomeObj который мог быть
VD>>объявлен на стеке или уничтожен принудительно.
VD>>В языках с автоматическим управлением памятью проблем быть не может, так как в x будет лежать или ссылка которую контролирует GC, или х является вэйлью-типом и копируется по значению.
VD>>Внимание вопрос, что дудет в Ди?

FR>Сейчас уже будет нормально, раньше это было UB


Так что нормально то? Кто управляет временим жизни?

VD>>Кстати, у Героя спрашивали видел ли он Немерле и не кажется ли ему, что он последние несколько лет движется от "Вандефул С++" к "Почти Немерле"? Еще интересно, что он отвечат на вопрос "Почему же все же Ди не написан на Ди?".


FR>Это надо eao197 попросить чтобы спросил, он в D'шной коференции как дома


eao197... ау!!!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Full closures in DMD 2.007
От: FR  
Дата: 22.11.07 13:19
Оценка:
Здравствуйте, VladD2, Вы писали:

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


FR>>Ну в нем ООП поопней чем у большинства других


VD>В Лиспе то? Ни разу не видел. Есть КЛОС, но он макро-библиотека, а стало быть тем кто реализует фичи языка на него внимания обращать нет нужды. Или прийдется обращать внимание на все макро-библиотеки.


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

FR>>Сейчас уже будет нормально, раньше это было UB


VD>Так что нормально то? Кто управляет временим жизни?


GC управляет. Реализация такая же как в шарпе ( )

Delegates to non-static nested functions contain two pieces of data: the pointer to the stack frame of the lexically enclosing function (called the frame pointer) and the address of the function. This is analogous to struct/class non-static member function delegates consisting of a this pointer and the address of the member function. Both forms of delegates are interchangeable, and are actually the same type:


UB можно получить только если баловатся указателями на стековые переменные.
Re[8]: Full closures in DMD 2.007
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.11.07 13:32
Оценка: 5 (3)
Здравствуйте, FR, Вы писали:

VD>>Кстати, у Героя спрашивали видел ли он Немерле и не кажется ли ему, что он последние несколько лет движется от "Вандефул С++" к "Почти Немерле"? Еще интересно, что он отвечат на вопрос "Почему же все же Ди не написан на Ди?".


FR>Это надо eao197 попросить чтобы спросил, он в D'шной коференции как дома


Уже давно нет. Месяца три или четыре как отписался. Заглядываю иногда, когда новые релизы DMD выходят. Вот, например, здесь Брайт рассказывал, что могут замыкания в D, и как они устроены.

Про Nemerle в конференции D говорилось сразу как только Вальтер завел речь о макросах. И не только мной, там были и другие люди, упоминавшие Nemerle как образец мощных макросов. Я же высказывался в том смысле, что нехер D пытаться встраивать макросы в язык -- все равно за Nemerle не угонишься. По поводу макросов там и Lisp обсуждался. Так что не знаю, знаком ли Брайт с Nemerle, но по поводу макросов он говорил, что мол макросы нужны не для того, чтобы расширять язык и добавлять новые синтаксические конструкции, а для того, чтобы за стандартным синтаксисом D прятать сложные преобразования операций.

В свое время, когда в D появились текстовые миксины, некто Don Clugston, активный участник D-шных конференций, написал небольшую библиотеку compile-time функций, преобразующих векторные выражения в эффективный набор x86-ассемблерных инструкций. Народ тогда писал кипятком от восторга.

Так вот насколько я понял из объяснений Брайта, макросы D предназначаются для аналогичных целей. Мол, подключаешь макрос, пишешь:
a = b + c + d;

где a, b, c и d матрицы, а макрос это дело разворачивает в один цикл. Т.е. макросы будут служить тем же целям, что и expression templates в C++. Но это я так понял. Как оно будет на самом деле -- со временем увидим.

И по поводу переписывания D на D ему вопросы задавали. Последний ответ, который я видел, был в таком духе: сейчас нет смысла переписывать front-end компилятора D на D, поскольку оба основных D-ных компилятора (DMD и GDC) используют C-шные back-end-ы. И переписывание front-end-а только добавит проблем в интеграции front- и back-end-ов.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[9]: Full closures in DMD 2.007
От: cl-user  
Дата: 22.11.07 14:50
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>В Лиспе то? Ни разу не видел. Есть КЛОС, но он макро-библиотека, а стало быть тем кто реализует фичи языка на него внимания обращать нет нужды. Или прийдется обращать внимание на все макро-библиотеки.


Извини — мысль не уловил... Какая нафиг разница — на макрах он или нет, если вопрос в его функциональности?
Re[10]: Full closures in DMD 2.007
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.07 15:30
Оценка:
Здравствуйте, FR, Вы писали:

FR>GC управляет. Реализация такая же как в шарпе ( )


Миннутточкуу... Я же специльно спросил о том, что будет если захватить в контексте нечто, что не управляется ЖЦ.

FR>

FR>Delegates to non-static nested functions contain two pieces of data: the pointer to the stack frame of the lexically enclosing function (called the frame pointer) and the address of the function. This is analogous to struct/class non-static member function delegates consisting of a this pointer and the address of the member function. Both forms of delegates are interchangeable, and are actually the same type:


Нифига себе? А если возвратить делегат из фунции, что будет? Стэк-фрэйм ведь разрушится...

FR>UB можно получить только если баловатся указателями на стековые переменные.


Вот боюсь, что не таолько. В прочем это тоже не очень приятно. Я бы на их месте сделал как в Шарпе — разрешил бы использовать указатели только в небезопастном контексте.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.