Re[22]: Jupiter
От: TK Лес кывт.рф
Дата: 09.06.11 11:48
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Погоди погоди. Я же просил нормальный, реальный пример. Понятно, что можно напридумывать кучу костылей. Я привел пример, когда отдаю контрол в несколько лямбд. На что был получен ответ, типа это не проблема для C++. Однако, внятного решения — автоматической заботы об объекте, вырванном из дерева, мне никто не приводит. Вон, как что не скажешь про C++, у FR на всё ответ "при желании можно", но что-то пример продакшн уровня реализации этих желаний никто не приводит, только самопальные костыли... или Python!


Реализации ссылок на любой вкус есть в TR1/boost, сигналы есть в boost/QT. Например, в QT есть QPointer<T> — надо "вырвать" объект из дерева — сказали ему delete obj и он автоматически будет из него "вырван" (все указатели на объект станут равны 0) А вот в .net удаление любого объекта из дерева, это хождение по граблям — все ссылки владеющие, а WeakReference без "внешней поддержки" использовать практически нельзя.

MM>Проблемы циклических ссылок в .Net нет. И потом, я не уверен, что разрыв связи — это правильный путь. Если кто-то подписался на event, значит это ему нужно. Да и weak event при желании реализовать можно. А лучше научится реализовывать GUI без этих заморочек.


"Если кто-то подписался на event, значит это ему нужно." — получается паттерн "буратино вырос". после этого, истинный владелец "буратин" будет ломать голову над тем, как их всех родить обратно. Weak Event в том-же WPF это как раз и следствие того, что "проблемы циклических ссылок в .Net нет".
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[16]: No mention of either Silverlight or .NET on Windows
От: Ночной Смотрящий Россия  
Дата: 09.06.11 12:08
Оценка:
Здравствуйте, hattab, Вы писали:

H>При использование специализированных менеджеров памяти можно вообще избежать фрагментирования кучи


Не бесплатно.

H>Зачем ужиматься до 2Gb, когда позволяется 3Gb на 32-битных системах и 4Gb на 64?


Я в курсе. Принципиально проблему это не решает.

H> Разумеется, я не отрицаю явного преимущества 64-битного адресного пространства, но нужно это далеко не всем.


Но это не означает, что не нужно почти никому, как ты утверждаешь.
Re[27]: Jupiter
От: Ночной Смотрящий Россия  
Дата: 09.06.11 12:08
Оценка:
Здравствуйте, FR, Вы писали:

FR>Тут http://habrahabr.ru/blogs/net/89529/


И где там проблемы GC? Фиксация на глобальных событиях/сигналах без отписки при любой технологии управления памятью приведет к утечке. Потому что проблема логическая, а не технологическая.
Re[29]: Jupiter
От: Ночной Смотрящий Россия  
Дата: 09.06.11 12:08
Оценка:
Здравствуйте, FR, Вы писали:

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


Слабые ссылки это у тебя ручное управление? Вобщем, все как и предполагалось, слышал звон ...
Re[23]: Jupiter
От: Ночной Смотрящий Россия  
Дата: 09.06.11 12:08
Оценка:
Здравствуйте, TK, Вы писали:

TK>А вот в .net удаление любого объекта из дерева, это хождение по граблям — все ссылки владеющие, а WeakReference без "внешней поддержки" использовать практически нельзя.


А зачем убивать объект, когда на него остались ссылки? Чтобы потом воевать с помершими ссылками?

TK>"Если кто-то подписался на event, значит это ему нужно." — получается паттерн "буратино вырос". после этого, истинный владелец "буратин" будет ломать голову над тем, как их всех родить обратно. Weak Event в том-же WPF это как раз и следствие того, что "проблемы циклических ссылок в .Net нет".


Какая связь между циклическими ссылками и weak подпиской?
Re[2]: No mention of either Silverlight or .NET on Windows 8
От: Ночной Смотрящий Россия  
Дата: 09.06.11 12:12
Оценка:
Здравствуйте, Sclis, Вы писали:

S>Возможно Microsoft ожидает заметных перемен в компьютерных железках.


Нет.

S>При таком раскладе надо успевать выдать свежую версию и ОС и средств разработки и это надо делать паралелльно. Нет времени ждать, пока .Net устаканится под новые реалии


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

S>, она слишком мнолитна и громоздка для резких поворотов.


Аргументируй. Потому что, по факту, как раз нативные решения проигрывают по скорости адаптации к изменениям.

S>Представьте, если у кого-то уже дозревает до рыночной кондиции технология хранения данных со скоростью процессорного кэша и емкостью + себестоимость + энегронезависимость HDD. Как это повлияет на поведение крупных производителей софта ?!


Сперва ты расскажи, что такого придется кардинально менять при этом в рантайме дотнета.
Re[30]: Jupiter
От: FR  
Дата: 09.06.11 12:25
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Слабые ссылки это у тебя ручное управление? Вобщем, все как и предполагалось, слышал звон ...


Так полного автомата нет, а полуавтоматы и без GC доступны, те же shared_ptr/weak_ptr
Re[3]: No mention of either Silverlight or .NET on Windows 8
От: Евгений Акиньшин grapholite.com
Дата: 09.06.11 12:27
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:


S>>При таком раскладе надо успевать выдать свежую версию и ОС и средств разработки и это надо делать паралелльно. Нет времени ждать, пока .Net устаканится под новые реалии


НС>Нет никакой необходимости чего то устаканивать с дотнетом — рантайм обновляется очень редко и понемногу.



а почему тогда в текущей версии windows phone используется урезанный Compact Framework, а не нормальный .net? я так понял они не успели его полноценно на АРм портировать
Не шалю, никого не трогаю, починяю примус Diagrams Designer for iPad and Windows 10
Re[3]: No mention of either Silverlight or .NET on Windows 8
От: FR  
Дата: 09.06.11 12:29
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Аргументируй. Потому что, по факту, как раз нативные решения проигрывают по скорости адаптации к изменениям.


По факту не проигрывают, так как не припомню таких событий чтобы сравнить для менеджед, а натив
вполне неплохо адаптируем, например тот же apple уже несколько раз менял аппаратуру.
Re[4]: No mention of either Silverlight or .NET on Windows 8
От: FR  
Дата: 09.06.11 12:31
Оценка:
Здравствуйте, Евгений Акиньшин, Вы писали:

ЕА>а почему тогда в текущей версии windows phone используется урезанный Compact Framework, а не нормальный .net? я так понял они не успели его полноценно на АРм портировать


Скорее как и у андроида дождемся нативного SDK
Re[29]: Jupiter
От: Sinix  
Дата: 09.06.11 12:52
Оценка:
Здравствуйте, FR, Вы писали:


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

Это не утечка памяти. Проблема ничем не отличается от
class A { }
class B { public A A { get; set; } }

// ...

A a = new A();
B b = new B() { A = a };

и сохранения ссылки на b, поэтому какой-нибудь "альтернативный" GC тут ничем не поможет. Костыли по ссылки — защита от отдельных одарённых личностей, что не могут усвоить правило "подписался — отпишись".
Re[16]: No mention of either Silverlight or .NET on Windows
От: yoriсk.kiev.ua  
Дата: 09.06.11 12:57
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Скорее всего просто подстраховываются на случай, если большая часть этих 4ГБ уже занята.


А когда хотят 8, то подстраховываются на случай, если пользователь забил большую часть этих восьми? Когда пишут "рекомендуем исспользовать 64-х битную версию" от чего подстраховываются?


ВВ>И откуда дефицит памяти на 32-битах?


А вы с чем спорите-то? С надписями на дисках от производителей?
Кстати, Крайтек уже пишет в Спортлото, что на приставки надо 8G ставить. Это минимум, говорят.
Re[30]: Jupiter
От: FR  
Дата: 09.06.11 13:41
Оценка: +2 :)
Здравствуйте, Sinix, Вы писали:

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

S>Это не утечка памяти. Проблема ничем не отличается от

Да это понятно конечно.
Но память все равно бестолково зависает.

S>и сохранения ссылки на b, поэтому какой-нибудь "альтернативный" GC тут ничем не поможет. Костыли по ссылки — защита от отдельных одарённых личностей, что не могут усвоить правило "подписался — отпишись".


Это и есть ручное управление.
Утрированно и RAII в C++ и GC это только защита от отдельных одаренных личностей не способных на каждый malloc вызвать free
Re[17]: No mention of either Silverlight or .NET on Windows
От: hattab  
Дата: 09.06.11 13:44
Оценка: -2 :)
Здравствуйте, Ночной Смотрящий, Вы писали:

НС> H> Разумеется, я не отрицаю явного преимущества 64-битного адресного пространства, но нужно это далеко не всем.


НС> Но это не означает, что не нужно почти никому, как ты утверждаешь.


Да как раз это и означает
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[31]: Jupiter
От: Sinix  
Дата: 09.06.11 14:09
Оценка:
Здравствуйте, FR, Вы писали:

FR>Да это понятно конечно.

FR>Но память все равно бестолково зависает.
+1

S>>и сохранения ссылки на b, поэтому какой-нибудь "альтернативный" GC тут ничем не поможет. Костыли по ссылки — защита от отдельных одарённых личностей, что не могут усвоить правило "подписался — отпишись".

FR>Это и есть ручное управление.
Неа, тут скорее явное освобождение ресурсов

На самом деле по ссылке городят тонну лишнего кода, для ленивого события более чем достаточно WeakList<T> (пишется самостоятельно за 5 минут).

Ну, а если делать всерьёз, то надо целиком имитировать реализацию multicast delegate — сделать immutable-тип, внутри которого — WeakReference<TDelegate>[] + (опционально) хелпер, что будет обновлять поле, используя Modify-CompareExchange loop (см пример). Поскольку снаружи всё выглядит как обычный event EventHandler MyEvent, для клиентского кода разницы никакой.

Делается 1 раз... и нигде не используется за практической ненадобностью. У меня где-то валяется набросок трёхлетней давности, не пригодился пока.

FR>Утрированно и RAII в C++ и GC это только защита от отдельных одаренных личностей не способных на каждый malloc вызвать free

Угу
Re[31]: Jupiter
От: Ночной Смотрящий Россия  
Дата: 09.06.11 17:29
Оценка:
Здравствуйте, FR, Вы писали:

НС>>Слабые ссылки это у тебя ручное управление? Вобщем, все как и предполагалось, слышал звон ...


FR>Так полного автомата нет


Что значит нет? Слабые ссылки работают полностью автоматически.

FR>, а полуавтоматы и без GC доступны, те же shared_ptr/weak_ptr


Ага, с проблемами на циклах и перформансе.
Re[4]: No mention of either Silverlight or .NET on Windows 8
От: Ночной Смотрящий Россия  
Дата: 09.06.11 17:29
Оценка:
Здравствуйте, Евгений Акиньшин, Вы писали:

ЕА>а почему тогда в текущей версии windows phone используется урезанный Compact Framework, а не нормальный .net?


Потому же, почему вообще CF существует — куцые ресурсы и необходимость беречь батарейку.
Re[4]: No mention of either Silverlight or .NET on Windows 8
От: Ночной Смотрящий Россия  
Дата: 09.06.11 17:29
Оценка:
Здравствуйте, FR, Вы писали:

FR>По факту не проигрывают


Проигрывают.
Re[32]: Jupiter
От: FR  
Дата: 09.06.11 17:48
Оценка: :)
Здравствуйте, Ночной Смотрящий, Вы писали:

FR>>Так полного автомата нет


НС>Что значит нет? Слабые ссылки работают полностью автоматически.


Так и shared_ptr/weak_ptr тоже полностью автоматически работают, после того как их расставил.

FR>>, а полуавтоматы и без GC доступны, те же shared_ptr/weak_ptr


НС>Ага, с проблемами на циклах и перформансе.


Тут вопрос сложный в контексте GUI который обычно однопоточный и не требует особого быстродействия
(кроме самого нижнего уровня) но зато очень любит чтобы не было внезапных остановок даже на короткое
время. С этим как раз у ref count все гораздо лучше чем у GC.
Re[5]: No mention of either Silverlight or .NET on Windows 8
От: FR  
Дата: 09.06.11 17:49
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

FR>>По факту не проигрывают


НС>Проигрывают.


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