Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, _nn_, Вы писали:
__>>Интересно. __>>Следующим шагом будет сопоставление паттернов ?
VD>Да, им еще до отказа от return-ов шагать и шагать .
А нафига от них отказыватся, принципиально это ничего ни меняет.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, eao197, Вы писали:
E>>Да, вот такая вот строчка в Change Log: E>>
E>>Full closure support added.
VD>Ну, таки это произошло?!
Угу, наконец-то, и судя по всему ни какиз коренных переделок не потребовалось, чего он так тянул не понятно.
VD>Как говорил Дуремар — еще 256 ведер и золотой ключик у нас в кормане.
Есть надежда что все таки наиграется и застабилизирует язык.
Здравствуйте, FR, Вы писали:
VD>>Да, им еще до отказа от return-ов шагать и шагать .
FR>А нафига от них отказыватся, принципиально это ничего ни меняет.
А вот когда откажутся ты сам мне об этом и расскажешь, а до тех мор ты Блаб и объяснить тебе ничего невозможно (вспоминаем отмазки по поводу полноценных замыканий).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>Угу, наконец-то, и судя по всему ни какиз коренных переделок не потребовалось, чего он так тянул не понятно.
А что там делать то было? В C# 2.0 и Немерле реализации можно было подсмореть еще 3 года назад.
Вопрос только с контролем памяти. В упомянутых языках замыкания автоматически контролиуют время жизни всего на что они ссылаются. В D с этим могут быть проблемы (ручник в управлении памтью — это слишком большая жертава).
VD>>Как говорил Дуремар — еще 256 ведер и золотой ключик у нас в кормане.
FR>Есть надежда что все таки наиграется и застабилизирует язык.
Ага. Ща макросы доделает только...
Если серьезно, то дай Бог, так как движется он в правильном направлении, хотя и огородами.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
VD>>>Да, им еще до отказа от return-ов шагать и шагать .
FR>>А нафига от них отказыватся, принципиально это ничего ни меняет.
VD>А вот когда откажутся ты сам мне об этом и расскажешь, а до тех мор ты Блаб и объяснить тебе ничего невозможно (вспоминаем отмазки по поводу полноценных замыканий).
Влад не надо до маразма доходить
Есть return или нет абсолютно ни на что ни влияет.
А отмазки напомни, а то я всегда жалел что нормальных замыканий в D нет.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Угу, наконец-то, и судя по всему ни какиз коренных переделок не потребовалось, чего он так тянул не понятно.
VD>А что там делать то было? В C# 2.0 и Немерле реализации можно было подсмореть еще 3 года назад.
Угу а в lispe 50 лет назад
VD>Вопрос только с контролем памяти. В упомянутых языках замыкания автоматически контролиуют время жизни всего на что они ссылаются. В D с этим могут быть проблемы (ручник в управлении памтью — это слишком большая жертава).
Вряд ли, только если найдутся буратины использующие new — delete в замыканиях
VD>>>Как говорил Дуремар — еще 256 ведер и золотой ключик у нас в кормане.
FR>>Есть надежда что все таки наиграется и застабилизирует язык.
VD>Ага. Ща макросы доделает только...
VD>Если серьезно, то дай Бог, так как движется он в правильном направлении, хотя и огородами.
Здравствуйте, FR, Вы писали:
FR>Влад не надо до маразма доходить FR>Есть return или нет абсолютно ни на что ни влияет.
Ладно, извини за резкость, но то что я тебе сказал это грустная правда. Ты действительно не поймешь необходимость фичи пока не проникнешся ею на практике.
return не только делает код маленьких лямд необравданно длинее, он еще к тому же прерывает логику фунции в самом неожиданном месте. Код написанный без него читается несколько лучше. Через год жития без return-а понимаешь, что в общем-то он нужен раз в год по обещанию.
FR>А отмазки напомни, а то я всегда жалел что нормальных замыканий в D нет.
Ссылок не храню, но когда я в свое время делал замечания на то что локальные фунции в D не полноценны мне на сразу приводили тысячи аргументов в оправдание этому. Насколько я помню, ты был в числе зищитников.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, 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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
FR>>Влад не надо до маразма доходить FR>>Есть return или нет абсолютно ни на что ни влияет.
VD>Ладно, извини за резкость, но то что я тебе сказал это грустная правда. Ты действительно не поймешь необходимость фичи пока не проникнешся ею на практике.
Но это не тот случай, например на том же питоне, на котором я активно писал, в лямбдах нет return.
VD>return не только делает код маленьких лямд необравданно длинее, он еще к тому же прерывает логику фунции в самом неожиданном месте. Код написанный без него читается несколько лучше. Через год жития без return-а понимаешь, что в общем-то он нужен раз в год по обещанию.
Мне без разницы абсолютно, могу и так и так, вообще вопрос ближе к стилевым и по моему непринипиальный.
FR>>А отмазки напомни, а то я всегда жалел что нормальных замыканий в D нет.
VD>Ссылок не храню, но когда я в свое время делал замечания на то что локальные фунции в D не полноценны мне на сразу приводили тысячи аргументов в оправдание этому. Насколько я помню, ты был в числе зищитников.
Насколько я помню там шел разговор что такие недолямбды абсолютно бесполезны, я же придерживался мнения что это лучше чем ничего
Здравствуйте, 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'шной коференции как дома
Здравствуйте, FR, Вы писали:
FR>Насколько я помню там шел разговор что такие недолямбды абсолютно бесполезны, я же придерживался мнения что это лучше чем ничего
Я говорил, что они вредны, а не бесполезны.
Ошибки провацируют.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, 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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, 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 можно получить только если баловатся указателями на стековые переменные.
Здравствуйте, 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++.
Здравствуйте, VladD2, Вы писали:
VD>В Лиспе то? Ни разу не видел. Есть КЛОС, но он макро-библиотека, а стало быть тем кто реализует фичи языка на него внимания обращать нет нужды. Или прийдется обращать внимание на все макро-библиотеки.
Извини — мысль не уловил... Какая нафиг разница — на макрах он или нет, если вопрос в его функциональности?
Здравствуйте, 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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.