Re[8]: Кто-нибудь знает адрес Герберта Шилдта?
От: Павел Кузнецов  
Дата: 08.11.05 23:24
Оценка: :)
c-smile,

> sch> Опять же любой индивид, который увидел C++ "месяц назад" прочитает того же Александреску без труда, узнает для себя много нового и полезного.


> Сомневаюсь я сильно в выделенной фразе.

> Более того приходилось общаться с указанным автором вживую.
> Скажем так я дично не понял треть абстракций которые он использует.

Это polite форма сказать, что ты не согласен с абстракциями, выбранными автором, или же ты действительно считаешь, что ты их не понял? Во втором случае, можно пример?
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[9]: Кто-нибудь знает адрес Герберта Шилдта?
От: c-smile Канада http://terrainformatica.com
Дата: 08.11.05 23:48
Оценка: 1 (1) :))) :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>c-smile,


>> sch> Опять же любой индивид, который увидел C++ "месяц назад" прочитает того же Александреску без труда, узнает для себя много нового и полезного.


>> Сомневаюсь я сильно в выделенной фразе.

>> Более того приходилось общаться с указанным автором вживую.
>> Скажем так я дично не понял треть абстракций которые он использует.

ПК>Это polite форма сказать, что ты не согласен с абстракциями, выбранными автором, или же ты действительно считаешь, что ты их не понял? Во втором случае, можно пример?




Скажем так: на третьей странице некоей "темплатуёвины" я перестаю хотеть его понимать.

Пойдет?

Пример ... да все те же discriminated unions
http://www.cuj.com/documents/s=7982/cujcexp2006alexandr/

А слово Structify вызывает... это уже из физиологии, опущу пожалуй.
Re[12]: Один умный вещь скажу
От: WolfHound  
Дата: 09.11.05 08:18
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Умный вещь №1: Честные мусорщики стоят дорого. Не все их могут себе позволить.

CS>Во всех смыслах. Например честный мусорщик без reflection (runtime meta-information) не работает.
В .NET GC reflection не использует ибо reflection не просто тормоз, а супер тормоз те в случае использования reflection'а производительность GC былабы просто никакая.
Все необходимые для GC данные получаются во время JIT компиляции. А в компилируемых языках этим может заняться компилятор.

CS>Умный вещь №2: честных GC в природе не бывает.

В .NET GC честный.
CS>Вернее так: честный GC по определинию слишком легко надурить. Достаточно разместить начало некого списка на периметре (aka roots — например static или stack bottom) — и все — приплыли.
Ты не поверишь но со счетчиком ссылок и нечестным GC таже фигня.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[12]: Один умный вещь скажу
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.11.05 10:02
Оценка:
Здравствуйте, c-smile, Вы писали:
CS>Умный вещь №1: Честные мусорщики стоят дорого. Не все их могут себе позволить.
Это я могу понять.
CS>Во всех смыслах. Например честный мусорщик без reflection (runtime meta-information) не работает.
Ага.

CS>Нет, не так. Есть ненулевая вероятность что что-то зависнет в памяти навсегда.

CS>Поэтому золотое правило в С++/D + GC — "зануляй ненужную память".
Дело хорошее, но...
CS>У меня нпример в одном проекте деструктор ничего не удаляет — просто делает memset 0x0000DEAD.
...главное — не забыть позвать деструктор А если мы это не забываем, то к чему вообще GC? (Наверное, для снижения фрагментации и повышения пиковой производительности благодаря отложенному освобождению)

CS>Умный вещь №2: честных GC в природе не бывает. Вернее так: честный GC по определинию слишком

CS>легко надурить. Достаточно разместить начало некого списка на периметре (aka roots — например static или stack bottom) — и все — приплыли.
Не вижу надуривания. Объект достижим. Поэтому его нельзя собирать. То, что он нам на самом деле больше не нужен, обнаружить никак нельзя. Даже если у нас в памяти нет кода, который бы читал этот статик и ходил по этой ссылке, через минуту мы можем дозагрузить именно такой код.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[12]: Кто-нибудь знает адрес Герберта Шилдта?
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.11.05 12:39
Оценка: -2 :)
Здравствуйте, vdimas, Вы писали:

Z>>>Для решения этого недостатка уже давно придумали разделение на weak- и strong- указатели.


VD>> Вручную?


V>именно, на этапе проектирования


Ну, слава богу хоть не понос.

ЗЫ

Чем дальше, тем забавнее читать твои ответы. Ты о чем думашь когда отвечашь? Я задаю один вопрос, а ты отвечашь на другой.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Один умный вещь скажу
От: Павел Кузнецов  
Дата: 09.11.05 16:58
Оценка:
WolfHound,

> В .NET GC честный.


А напомни-ка мне, когда освобождаются объекты из 2-го поколения?..
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[13]: Один умный вещь скажу
От: Павел Кузнецов  
Дата: 09.11.05 17:00
Оценка:
Sinclair,

> CS>У меня нпример в одном проекте деструктор ничего не удаляет — просто делает memset 0x0000DEAD.


> ...главное — не забыть позвать деструктор А если мы это не забываем, то к чему вообще GC?


ИМХО, это главная проблема GC: всегда находятся "деструкторы", которые нужно не забыть вызвать. В C# это Dispose().

> Не вижу надуривания. Объект достижим. Поэтому его нельзя собирать. То, что он нам на самом деле больше не нужен, обнаружить никак нельзя. Даже если у нас в памяти нет кода, который бы читал этот статик и ходил по этой ссылке, через минуту мы можем дозагрузить именно такой код.


И какая разница с точки пользователя? И там, и там память, отведенная под объект(ы), не освобождена...
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[14]: Один умный вещь скажу
От: GlebZ Россия  
Дата: 09.11.05 17:06
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>А напомни-ка мне, когда освобождаются объекты из 2-го поколения?..

Когда не хватает памяти после зачистки 0 и 1 поколения.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: Один умный вещь скажу
От: Павел Кузнецов  
Дата: 09.11.05 17:19
Оценка:
GlebZ,

> ПК>А напомни-ка мне, когда освобождаются объекты из 2-го поколения?..


> Когда не хватает памяти после зачистки 0 и 1 поколения.


Т.е. на практике может вообще не вызываться. Это я к тому, что критерии "честности", основанные на "полноте" уборки мусора, достаточно зыбки...
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[16]: Один умный вещь скажу
От: GlebZ Россия  
Дата: 09.11.05 17:28
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:


>> ПК>А напомни-ка мне, когда освобождаются объекты из 2-го поколения?..


>> Когда не хватает памяти после зачистки 0 и 1 поколения.


ПК>Т.е. на практике может вообще не вызываться.

Не-а, будет вызываться. Хотя бы при выходе из программы.
ПК>Это я к тому, что критерии "честности", основанные на "полноте" уборки мусора, достаточно зыбки...
Насчет критериев честности, дам тебе шанс. При сборке в large (такая шняга для хранения больших объектов), память не дефрагментируется, и соответсвенно в принципе, возможно занятие памяти больше чем нужно.

С уважением, Gleb.
PS. Честно говоря мне как то по барабану критерии честности, гораздо интереснее функциональность. Насколько я должен учитывать GC в работе. Пока лучше нетовского не видел.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: Один умный вещь скажу
От: c-smile Канада http://terrainformatica.com
Дата: 09.11.05 17:35
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, c-smile, Вы писали:


CS>>Умный вещь №1: Честные мусорщики стоят дорого. Не все их могут себе позволить.

CS>>Во всех смыслах. Например честный мусорщик без reflection (runtime meta-information) не работает.
WH>В .NET GC reflection не использует ибо reflection не просто тормоз, а супер тормоз те в случае использования reflection'а производительность GC былабы просто никакая.

Я не про .Net.Reflection package говорю.

Когда два массива в памяти
object a1[]; и int a2[]; первый надо сканировать, второй нет.
Т.е. информация о типе должна наличествовать в аллоцированной памяти.

Консервативный GC этой информации не требует но сканирует оба массива — just in case.

WH>Все необходимые для GC данные получаются во время JIT компиляции. А в компилируемых языках этим может заняться компилятор.


А при чем здесь JIT? в памяти .net все аллоцированные сущности обязаны иметь ссылку на класс/тип


CS>>Умный вещь №2: честных GC в природе не бывает.


WH>В .NET GC честный.


То нам не ведомо
Видел ли ты исходники оного?

CS>>Вернее так: честный GC по определинию слишком легко надурить. Достаточно разместить начало некого списка на периметре (aka roots — например static или stack bottom) — и все — приплыли.

WH>Ты не поверишь но со счетчиком ссылок и нечестным GC таже фигня.

Да. А я и не говорю что это только для GC проблема.
Re[17]: Один умный вещь скажу
От: Павел Кузнецов  
Дата: 09.11.05 17:37
Оценка:
GlebZ,

>>> ПК> А напомни-ка мне, когда освобождаются объекты из 2-го поколения?..


>>> Когда не хватает памяти после зачистки 0 и 1 поколения.


> ПК>Т.е. на практике может вообще не вызываться.


> Не-а, будет вызываться. Хотя бы при выходе из программы.


Т.е.? Даже все Finalizers в обязательном порядке будут вызваны?
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[13]: Один умный вещь скажу
От: c-smile Канада http://terrainformatica.com
Дата: 09.11.05 17:42
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, c-smile, Вы писали:

CS>>Умный вещь №1: Честные мусорщики стоят дорого. Не все их могут себе позволить.
S>Это я могу понять.
CS>>Во всех смыслах. Например честный мусорщик без reflection (runtime meta-information) не работает.
S>Ага.

CS>>Нет, не так. Есть ненулевая вероятность что что-то зависнет в памяти навсегда.

CS>>Поэтому золотое правило в С++/D + GC — "зануляй ненужную память".
S>Дело хорошее, но...
CS>>У меня нпример в одном проекте деструктор ничего не удаляет — просто делает memset 0x0000DEAD.
S>...главное — не забыть позвать деструктор А если мы это не забываем, то к чему вообще GC? (Наверное, для снижения фрагментации и повышения пиковой производительности благодаря отложенному освобождению)

А зачем его звать-то ? Он сам вызывается при выходе из зоны видимости.


CS>>Умный вещь №2: честных GC в природе не бывает. Вернее так: честный GC по определинию слишком

CS>>легко надурить. Достаточно разместить начало некого списка на периметре (aka roots — например static или stack bottom) — и все — приплыли.
S>Не вижу надуривания. Объект достижим. Поэтому его нельзя собирать. То, что он нам на самом деле больше не нужен, обнаружить никак нельзя. Даже если у нас в памяти нет кода, который бы читал этот статик и ходил по этой ссылке, через минуту мы можем дозагрузить именно такой код.

Это я к тому что с памятью как и с любым другим ресурсом нужно
работать аккуратно и грамотно. В любых системах.

GC не панацея. А конкретный инструмент. А инструменты надо знать хорошо.
Если ты чего-то хочешь ими сделать толковое.
Re[18]: Один умный вещь скажу
От: GlebZ Россия  
Дата: 09.11.05 17:43
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>GlebZ,


>>>> ПК> А напомни-ка мне, когда освобождаются объекты из 2-го поколения?..


>>>> Когда не хватает памяти после зачистки 0 и 1 поколения.


>> ПК>Т.е. на практике может вообще не вызываться.


>> Не-а, будет вызываться. Хотя бы при выходе из программы.


ПК>Т.е.? Даже все Finalizers в обязательном порядке будут вызваны?

Ну да. Правда там с порядком вызова будут проблемы.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[14]: Один умный вещь скажу
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.11.05 05:28
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>А зачем его звать-то ? Он сам вызывается при выходе из зоны видимости.

Если у тебя все разрушается при выходе из области видимости, то никакой GC не нужен. Да и мемори менеджер тоже — стек аллокатор будет более чем достаточен.
CS>Это я к тому что с памятью как и с любым другим ресурсом нужно
CS>работать аккуратно и грамотно. В любых системах.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[17]: Один умный вещь скажу
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.11.05 15:34
Оценка: +1
Здравствуйте, GlebZ, Вы писали:

GZ>Не-а, будет вызываться. Хотя бы при выходе из программы.


Совсем не обязательно.
... << RSDN@Home 1.2.0 alpha rev. 619>>
AVK Blog
Re[16]: Один умный вещь скажу
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.11.05 15:34
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Т.е. на практике может вообще не вызываться. Это я к тому, что критерии "честности", основанные на "полноте" уборки мусора, достаточно зыбки...


Самое главное чтобы не было утечек. А уж кто и когда не столь важно. Точные критерии очистки 2 поколения лично мне неизвестны, но уж точно не только когда места нехватает.
... << RSDN@Home 1.2.0 alpha rev. 619>>
AVK Blog
Re[18]: Один умный вещь скажу
От: GlebZ Россия  
Дата: 10.11.05 16:06
Оценка:
Здравствуйте, AndrewVK, Вы писали:

GZ>>Не-а, будет вызываться. Хотя бы при выходе из программы.

AVK>Совсем не обязательно.
Example?

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: Один умный вещь скажу
От: Павел Кузнецов  
Дата: 10.11.05 16:10
Оценка:
AndrewVK,

> ПК> Т.е. на практике может вообще не вызываться. Это я к тому, что критерии "честности", основанные на "полноте" уборки мусора, достаточно зыбки...

>
> Самое главное чтобы не было утечек.

Если под отсутствием утечек понимать освобождение памяти по крайней мере в момент завершения программы, то утечек вообще нигде не будет.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[19]: Один умный вещь скажу
От: Павел Кузнецов  
Дата: 10.11.05 16:25
Оценка:
GlebZ,

>>> Не-а, будет вызываться. Хотя бы при выходе из программы.

>
> ПК>Т.е.? Даже все Finalizers в обязательном порядке будут вызваны?

> Ну да.


Уверен?

http://msdn.microsoft.com/msdnmag/issues/1100/GCI/default.aspx

by default, Finalize methods are not called for unreachable objects when an application exits so that the application may terminate quickly

Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.