Кто-нибудь знает адрес Герберта Шилдта?
От: sch  
Дата: 03.11.05 07:55
Оценка: 39 (6) +7 :))) :))) :))) :))) :)
Работаю я недалеко от дома педагогической книги на Камергерском, частенько прохожу мимо и вот решил
вчера зайти и посмотреть что есть интересного по программированию. Большинство книг не выдерживают
минимальной критики. Был встречен забавный перевод общедоступного "Using the GNU Compiler Collection
(GCC)" за 850 рублей. И нашел я там книжку, которую я давненько хотел прочитать, называется "Искусство
программирования на C++". Далее следует аннотация.

Книга посвящена применению языка C++ для решения интересных, полезных и сложных задач программирования. Рассмотрены разработка сборщика мусора, пользовательского контейнера STL и панели управления потоком. Показано, как создать загрузчик файлов из Интернета, а также написать приложения для финансовых расчетов (вычисления платежей по ссуде, расчет суммы вложений и др.).

Уделено внимание вопросам применения языка C++ для решения задач искусственного интеллекта. Приведен уникальный код интерпретатора Mini C++. Каждая глава книги сопровождается заданиями для самостоятельной работы.


Ну что же, мне было очень интересно посмотреть как всемирный гуру сделал сборщик мусора и интерпретатор C++, ну я и купил. Вернулся на работу, гордо поставил на стол и сел за компьютер. Вечером я нежно взял книжку и поехал домой, ожидая незабываемый вечер в автобусе.

Вечер оказался незабываемым. Незабываемо испоганненным

Пропустив вступления, прологи и эпиграфы, я стал читать про GC. Меня удивило такое большое количество воды. Я решил пролистать пару страниц, и так пролистал до 350. (О, как на меня смотрели стоящие рядом девушки! Надо было остаться холостяком на всю жизнь!)

Все что я увидел в книге -- бездарные, неэффективные, иногда просто смешные решения. Сборщик мусора он реализовал путем подсчета ссылок; а проблему кольцевых ссылок он решает следующим образом: при завершении работы программы сборщик мусора просто освобождает все неосвобожденные участки Mini C++ это тот же интерпретатор подмножества бейсика, который он дал в свой книжке "Профессиональное программирование на Turbo C" двадцать лет назад Чудовищно. Об остальном не хочется и говорить, ибо все настолько тривиально, что не заслуживает внимания.

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

Процитирую комментарий с oz.by:

Уровень книги черезвычайно низок:

1) 100 страниц кода, который есть на сайте и потом детально разбирается и повторяется — явное желание ниписать объем побольше

2) качество кода ниже плинтуса, создается ощущение, что автор — студент 1 курса университета, где преподает Шилдт

3) очень много тривиального материала


И вот что я собираюсь сделать.
Я собираюсь послать эту книгу по почте Герберту Шилдту.
Со здоровенной надписью КГ/АМ.
Re: Кто-нибудь знает адрес Герберта Шилдта?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 03.11.05 08:04
Оценка: :))) :)))
Здравствуйте, sch, Вы писали:

sch>И вот что я собираюсь сделать.

sch>Я собираюсь послать эту книгу по почте Герберту Шилдту.
sch>Со здоровенной надписью КГ/АМ.

Не делайте этого. В мире и так много экстремизма.
Re: Кто-нибудь знает адрес Герберта Шилдта?
От: Кодт Россия  
Дата: 03.11.05 08:06
Оценка:
Здравствуйте, sch, Вы писали:

sch>Ну что же, мне было очень интересно посмотреть как всемирный гуру сделал сборщик мусора и интерпретатор C++, ну я и купил. Вернулся на работу, гордо поставил на стол и сел за компьютер. Вечером я нежно взял книжку и поехал домой, ожидая незабываемый вечер в автобусе.


Бедол-ага!
Буду краток: Шилдт на RSDN
Перекуём баги на фичи!
Re: Кто-нибудь знает адрес Герберта Шилдта?
От: alexeiz  
Дата: 03.11.05 08:12
Оценка: 1 (1) +1 :))) :))) :))) :))) :)
Что такое bullschildt?
Re: Кто-нибудь знает адрес Герберта Шилдта?
От: Perestoronin Россия http://www.abbyy.ru
Дата: 03.11.05 09:30
Оценка:
Здравствуйте, sch, Вы писали:
sch>И вот что я собираюсь сделать.
sch>Я собираюсь послать эту книгу по почте Герберту Шилдту.
sch>Со здоровенной надписью КГ/АМ.
Напишите в издательство и переводчику, и потребуйте возврата денег.

У Шилдта была книга по алгоритмам, у Тома Свана что-то по Java, которые, как мне показалось стали явной неудачей. Но эти авторы пишут для начинающих и определенный уровень все-таки держат. Я вижу главной причиной отсутствия наших авторов в том, что профессионалы писать не хотят. В следствие чего на этот рынок вышли халтурщики, которые просто занимаются надувательством, ибо их книги можно применять, только по одному назначению, они собственно говоря столько и стоят

взято с http://www.citforum.nov.ru/programming/opengl/opengl_01.shtml
За ПО в комплекте с исходным кодом!
Re[2]: Кто-нибудь знает адрес Герберта Шилдта?
От: sch  
Дата: 03.11.05 09:34
Оценка: +1
Здравствуйте, Perestoronin, Вы писали:

P>Напишите в издательство и переводчику, и потребуйте возврата денег.

Да разве в деньгах дело!
Мне просто за державу обидно.
Re[3]: Кто-нибудь знает адрес Герберта Шилдта?
От: ailurus Россия https://kochetkov.github.io
Дата: 03.11.05 12:12
Оценка: -1
Здравствуйте, sch, Вы писали:

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


P>>Напишите в издательство и переводчику, и потребуйте возврата денег.

sch>Да разве в деньгах дело!
sch>Мне просто за державу обидно.

За чью именно?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Кто-нибудь знает адрес Герберта Шилдта?
От: ailurus Россия https://kochetkov.github.io
Дата: 03.11.05 12:42
Оценка: 7 (1)
Здравствуйте, ailurus, Вы писали:

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


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


P>>>Напишите в издательство и переводчику, и потребуйте возврата денег.

sch>>Да разве в деньгах дело!
sch>>Мне просто за державу обидно.

A>За чью именно?


Блин, я имел ввиду: "За нашу державу или за державу Шилдта?". Мои извинения, если обидел

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re: Кто-нибудь знает адрес Герберта Шилдта?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 03.11.05 12:55
Оценка: 4 (1) +5 -4
Здравствуйте, sch, Вы писали:

sch>И вот что я собираюсь сделать.

sch>Я собираюсь послать эту книгу по почте Герберту Шилдту.
sch>Со здоровенной надписью КГ/АМ.

Извини, если я покажусь резким, но если тебе не понравилась книга -- не читай, не рекомендуй другим, напиши свой отзыв на oz.by или, как ты сделал, сюда. А вот чтобы пытаться поиздеваться над Шилдтом нужно самому сделать что-то лучшее. Напиши свою книгу по C++, лучше чем Шилдт, тогда у тебя будет такое моральное право. Я вот как-то сам за два года работы разродился полуучебником-полудокументаций на 200 страниц по одному из наших продуктов. С тех пор желание высказываться в адрес авторов книг резко поубавилось.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Кто-нибудь знает адрес Герберта Шилдта?
От: sch  
Дата: 03.11.05 13:05
Оценка: +2
Здравствуйте, eao197, Вы писали:

E>Извини, если я покажусь резким, но если тебе не понравилась книга -- не читай, не рекомендуй другим, напиши свой отзыв на oz.by или, как ты сделал, сюда. А вот чтобы пытаться поиздеваться над Шилдтом нужно самому сделать что-то лучшее. Напиши свою книгу по C++, лучше чем Шилдт, тогда у тебя будет такое моральное право. Я вот как-то сам за два года работы разродился полуучебником-полудокументаций на 200 страниц по одному из наших продуктов. С тех пор желание высказываться в адрес авторов книг резко поубавилось.


Я ни в коем случае не хотел поиздеваться над Шилдтом. Да, каюсь и посыпаю голову пеплом: я слишком резко выразился. Это была просто реация на количество эпитетов в превосходной степени по поводу автора на обожке книги в сравнении с уровнем материала.

А хорошие книги писать конечно трудно.
Но это не повод писать такие книги.
Re[5]: Кто-нибудь знает адрес Герберта Шилдта?
От: sch  
Дата: 03.11.05 13:06
Оценка: :)
A>Блин, я имел ввиду: "За нашу державу или за державу Шилдта?". Мои извинения, если обидел

Я имел в виду общую, всемирную державу C++ community
Re[6]: Кто-нибудь знает адрес Герберта Шилдта?
От: ailurus Россия https://kochetkov.github.io
Дата: 03.11.05 13:09
Оценка:
Здравствуйте, sch, Вы писали:


A>>Блин, я имел ввиду: "За нашу державу или за державу Шилдта?". Мои извинения, если обидел


sch>Я имел в виду общую, всемирную державу C++ community



[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: Кто-нибудь знает адрес Герберта Шилдта?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 03.11.05 13:10
Оценка: +1 :)
Здравствуйте, sch, Вы писали:

sch>А хорошие книги писать конечно трудно.


Это точно.

sch>Но это не повод писать такие книги.


Запретить писать не возможно. Да и не нужно, должна же быть свобода.
А вот откуда повод переводить и издавать такие книги -- вот это более актуально. При том, что репутация Шилдта давно известна.

Но на эту тему уже высказались: Re: Кто-нибудь знает адрес Герберта Шилдта?
Автор: Perestoronin
Дата: 03.11.05
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Кто-нибудь знает адрес Герберта Шилдта?
От: Кодт Россия  
Дата: 03.11.05 13:17
Оценка: +1 :))) :))) :))) :))
Здравствуйте, ailurus, Вы писали:

sch>>>Мне просто за державу обидно.

A>>За чью именно?
A>Блин, я имел ввиду: "За нашу державу или за державу Шилдта?". Мои извинения, если обидел

Эт' фигня. Вот мне за скипетр обидно; что теперь делать?
Перекуём баги на фичи!
Re[2]: Кто-нибудь знает адрес Герберта Шилдта?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.11.05 14:25
Оценка: 12 (2) +9 :)
Здравствуйте, eao197, Вы писали:

sch>>И вот что я собираюсь сделать.

sch>>Я собираюсь послать эту книгу по почте Герберту Шилдту.
sch>>Со здоровенной надписью КГ/АМ.

E>Извини, если я покажусь резким, но если тебе не понравилась книга -- не читай, не рекомендуй другим, напиши свой отзыв на oz.by или, как ты сделал, сюда. А вот чтобы пытаться поиздеваться над Шилдтом нужно самому сделать что-то лучшее. Напиши свою книгу по C++, лучше чем Шилдт, тогда у тебя будет такое моральное право.


Ну зря ты так. ИМХО, вполне себе неплохой ход — послать автору обратно книгу с припиской "КГ/АМ". Формулировочку, правда, не грех бы поменять, а то ещё расшифруют "АМ"! Но вообще, неплохая форма отзыва читателя на книгу. Притом заметь, что читатель отзывается за свои кровные. И не предлагает наделать коммунальных пакостей типа вываливания мусора под входной дверью!

Более того, если сам сделашеь что-то лучшее, чем КГ-шный автор, то моральное право на столь впечатляющие отзывы потеряешь, ибо перейдёшь из категории "пользователь" в категорию "конкурент", а здесь совсем другие требования к корректности.

E>Я вот как-то сам за два года работы разродился полуучебником-полудокументаций на 200 страниц по одному из наших продуктов. С тех пор желание высказываться в адрес авторов книг резко поубавилось.


При чём здесь твой личный опыт? Тот, что писать книги трудно (особенно, если писать хорошо) вовсе не значит, что халтурщик-автор не должен и не может быть подвергнут заслуженному читательскому остракизму. Что, если у него терпения хватило написать кучу фигни, то его всё равно "на щит"? За трудолюбие, что ли? Нет уж, нет уж. Нафиг таких трудолюбцев. А то получится, что и освистать лажового исполнителя на концерте нельзя (он же, типа, трудится!) — нужно писать критический отзыв в местную газету.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Кто-нибудь знает адрес Герберта Шилдта?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 03.11.05 14:41
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

E>>Извини, если я покажусь резким, но если тебе не понравилась книга -- не читай, не рекомендуй другим, напиши свой отзыв на oz.by или, как ты сделал, сюда. А вот чтобы пытаться поиздеваться над Шилдтом нужно самому сделать что-то лучшее. Напиши свою книгу по C++, лучше чем Шилдт, тогда у тебя будет такое моральное право.


ГВ>Ну зря ты так. ИМХО, вполне себе неплохой ход — послать автору обратно книгу с припиской "КГ/АМ". Формулировочку, правда, не грех бы поменять, а то ещё расшифруют "АМ"! Но вообще, неплохая форма отзыва читателя на книгу. Притом заметь, что читатель отзывается за свои кровные. И не предлагает наделать коммунальных пакостей типа вываливания мусора под входной дверью!


Это было бы так, если бы сам Шилдт уговаривал sch купить свою книгу. А так, sch стал жертвой недобросовесной рекламы.

ГВ>Более того, если сам сделашеь что-то лучшее, чем КГ-шный автор, то моральное право на столь впечатляющие отзывы потеряешь, ибо перейдёшь из категории "пользователь" в категорию "конкурент", а здесь совсем другие требования к корректности.


А вот это может быть. Не подумал я от этом.

E>>Я вот как-то сам за два года работы разродился полуучебником-полудокументаций на 200 страниц по одному из наших продуктов. С тех пор желание высказываться в адрес авторов книг резко поубавилось.


ГВ>При чём здесь твой личный опыт?


При том, что о трудностях, например, альпинизма и спелеологии нельзя судить без собственного опыта. Документальный фильм о восхождении на Пик Коммунизма или Эльбрус, снятый альпинистами и показанный в "Вокруг Света", может быть очень плохого качества и не выдерживать никакой критики с точки зрения кинематографов, а для подавляющего большинства зрителей окровенно скучным и занудным. Тем не менее, если ты сам не поднялся на Эльбрус, говорить что-либо негативное в адрес автора фильма...
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Кто-нибудь знает адрес Герберта Шилдта?
От: savaDAN  
Дата: 03.11.05 14:57
Оценка:
ГВ>>При чём здесь твой личный опыт?
E>При том, что о трудностях, например, альпинизма и спелеологии нельзя судить без собственного опыта.
К счастью для читателей книг все куда проще: не надо никуда лезть или писать самому, надо просто сравнивать книги между собой. Причем для технической литературы все еще проще.

С другой стороны, для технической литературы действует правило "каждой книге свое время" — прочитает какой-нить чайник скажем александреску, и скажет "ну и фигню товарищ написал! ниче не понятно, да и темплеи эти нафиг никому не нужны" и пойдет книгу по форумам опускать, "мол не читайте, товарищи чайники, КГ/АМ!"... и ведь будет прав! ни к чему чайникам книжка такая

В данном конкретном случае действительно "жертва недобросовестной рекламы", но с другой стороны и Шилдт бренд весьма сомнительный.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[5]: Кто-нибудь знает адрес Герберта Шилдта?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 03.11.05 15:04
Оценка: -1
Здравствуйте, savaDAN, Вы писали:

DAN>В данном конкретном случае действительно "жертва недобросовестной рекламы", но с другой стороны и Шилдт бренд весьма сомнительный.


Так я же про то и говорю. Но это не повод предпринимать какие-то действия против Шилдт-а лично. ИМХО.

У нас вот, в Белорусси, FM-радиостанции обязали крутить не менее 75% отечественной музыки (т.е. хотя бы с какими-нибудь белорусским корнями у авторов, исполнителей или музыкантов). Слушать FM-радиостанции стало совсем не возможно. Мне что теперь, свой приемник какому-нибудь "Ляпису Трубецкому" по почте отослать нужно?

... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Кто-нибудь знает адрес Герберта Шилдта?
От: _Winnie Россия C++.freerun
Дата: 03.11.05 15:52
Оценка: :)
All.

Стандарт c++0x говорят будет около двух тысяч страниц.
А теперь представьте себе учебник, подробно их разжевывющий для новичков. Это страниц 10000 так будет. Будете заказывать доставку из книжного магазина. Как из мебельного.
Правильно работающая программа — просто частный случай Undefined Behavior
Re[2]: Кто-нибудь знает адрес Герберта Шилдта?
От: Глеб Алексеев  
Дата: 03.11.05 16:05
Оценка: +1
Здравствуйте, _Winnie, Вы писали:

_W>Стандарт c++0x говорят будет около двух тысяч страниц.

_W>А теперь представьте себе учебник, подробно их разжевывющий для новичков. Это страниц 10000 так будет. Будете заказывать доставку из книжного магазина. Как из мебельного.
Не понял возражения. Можно не разжевывать стандарт, но написать толковую книгу для начинающих — см. Липпмана, например.

А культовый в свое время ARM как раз и был текстом стандарта с комментариями. Правда, тут ты прав, стандарт был покороче .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Кто-нибудь знает адрес Герберта Шилдта?
От: vitaly_spb Россия  
Дата: 03.11.05 17:09
Оценка:
E>Запретить писать не возможно. Да и не нужно, должна же быть свобода.
E>А вот откуда повод переводить и издавать такие книги -- вот это более актуально. При том, что репутация Шилдта давно известна.

Книги пишутся для людей разного уровня подготовленности. Над тем что напишет sch посмеется тот кто писал GС ну и т.п.
...Ei incumbit probatio, qui dicit, non qui negat...
Re[4]: Кто-нибудь знает адрес Герберта Шилдта?
От: Hydrogen  
Дата: 03.11.05 17:11
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Геннадий Васильев, Вы писали:


E>>>Извини, если я покажусь резким, но если тебе не понравилась книга -- не читай, не рекомендуй другим, напиши свой отзыв на oz.by или, как ты сделал, сюда. А вот чтобы пытаться поиздеваться над Шилдтом нужно самому сделать что-то лучшее. Напиши свою книгу по C++, лучше чем Шилдт, тогда у тебя будет такое моральное право.


ГВ>>Ну зря ты так. ИМХО, вполне себе неплохой ход — послать автору обратно книгу с припиской "КГ/АМ". Формулировочку, правда, не грех бы поменять, а то ещё расшифруют "АМ"!

Слово АМ в тюркских языках — женское одно место.
... << RSDN@Home 1.1.3 stable >>
Re: Кто-нибудь знает адрес Герберта Шилдта?
От: c-smile Канада http://terrainformatica.com
Дата: 03.11.05 17:26
Оценка:
Здравствуйте, sch, Вы писали:

Эту версию книги не читал но...

sch>...Сборщик мусора он реализовал путем подсчета ссылок;


reference counting как одно из средств memory management — работает. И кстати на определнных задачах
эффектвнее других механизмов GC в разы. А какие проблемы ты видишь?

sch>а проблему кольцевых ссылок он решает следующим образом: при завершении работы программы сборщик мусора просто освобождает все неосвобожденные участки


И чего? Так работает любой GC.

sch> Mini C++ это тот же интерпретатор подмножества бейсика, который он дал в свой книжке "Профессиональное программирование на Turbo C" двадцать лет назад


So what? Еще одно поколение программеров научится писать инетрпретаторы.
Простота изложения проблемы Шилдтом очень помогает на ранних преиодах освоения.
Провернно на личном опыте.

sch> Чудовищно.....


Выпей чая с рамашкой, открой чакры. И глянь еще раз на книжку.
Re[6]: Кто-нибудь знает адрес Герберта Шилдта?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.11.05 18:42
Оценка: :))
Здравствуйте, eao197, Вы писали:

DAN>>В данном конкретном случае действительно "жертва недобросовестной рекламы", но с другой стороны и Шилдт бренд весьма сомнительный.

E>Так я же про то и говорю. Но это не повод предпринимать какие-то действия против Шилдт-а лично. ИМХО.

А никто и не предлагает предпринимать что-то против Шилдта лично.

E>У нас вот, в Белорусси, FM-радиостанции обязали крутить не менее 75% отечественной музыки (т.е. хотя бы с какими-нибудь белорусским корнями у авторов, исполнителей или музыкантов). Слушать FM-радиостанции стало совсем не возможно. Мне что теперь, свой приемник какому-нибудь "Ляпису Трубецкому" по почте отослать нужно?


Если хочешь — отсылай. Всё лучше, чем выкидывать приёмник за окно. Только не мажь приёмник какашками.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Кто-нибудь знает адрес Герберта Шилдта?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.11.05 18:42
Оценка:
Здравствуйте, eao197, Вы писали:

ГВ>>Ну зря ты так. ИМХО, вполне себе неплохой ход — послать автору обратно книгу с припиской "КГ/АМ". Формулировочку, правда, не грех бы поменять, а то ещё расшифруют "АМ"! Но вообще, неплохая форма отзыва читателя на книгу. Притом заметь, что читатель отзывается за свои кровные. И не предлагает наделать коммунальных пакостей типа вываливания мусора под входной дверью!


E>Это было бы так, если бы сам Шилдт уговаривал sch купить свою книгу. А так, sch стал жертвой недобросовесной рекламы.


Ну, я думаю, что рекламные надписи на обложке не без помощи Шилдта появились...

E>>>Я вот как-то сам за два года работы разродился полуучебником-полудокументаций на 200 страниц по одному из наших продуктов. С тех пор желание высказываться в адрес авторов книг резко поубавилось.


ГВ>>При чём здесь твой личный опыт?


E>При том, что о трудностях, например, альпинизма и спелеологии нельзя судить без собственного опыта.

Хм. О трудностях программирования тоже нельзя судить без опыта. Однако, возмущённый читатель, похоже, обладает достаточной для таких суждений квалификацией.

E>Документальный фильм о восхождении на Пик Коммунизма или Эльбрус, снятый альпинистами и показанный в "Вокруг Света", может быть очень плохого качества и не выдерживать никакой критики с точки зрения кинематографов, а для подавляющего большинства зрителей окровенно скучным и занудным. Тем не менее, если ты сам не поднялся на Эльбрус, говорить что-либо негативное в адрес автора фильма...

...можно и нужно, если автор фильма пытается продвинуть своё творение в качестве чего-то, отличного от документальной съёмки.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Кто-нибудь знает адрес Герберта Шилдта?
От: sch  
Дата: 03.11.05 19:16
Оценка:
Здравствуйте, c-smile, Вы писали:

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


CS>Эту версию книги не читал но...


sch>>...Сборщик мусора он реализовал путем подсчета ссылок;


CS>reference counting как одно из средств memory management — работает. И кстати на определнных задачах

CS>эффектвнее других механизмов GC в разы. А какие проблемы ты видишь?

Меня не устраивает 90 процентов кода GC, потому что вся его функциональность по большому счету
сводится к функциональности простейшего указателя с подсчетом ссылок.

sch>>а проблему кольцевых ссылок он решает следующим образом: при завершении работы программы сборщик мусора просто освобождает все неосвобожденные участки


CS>И чего? Так работает любой GC.


Позвольте, а как же деструкторы?
Я конечно не большой знаток GC, но такой GC -- это просто халтура.

sch>> Mini C++ это тот же интерпретатор подмножества бейсика, который он дал в свой книжке "Профессиональное программирование на Turbo C" двадцать лет назад


CS>So what? Еще одно поколение программеров научится писать инетрпретаторы.

CS>Простота изложения проблемы Шилдтом очень помогает на ранних преиодах освоения.
CS>Провернно на личном опыте.

И ты написал c-smile?

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

sch>> Чудовищно.....


CS> Выпей чая с рамашкой, открой чакры. И глянь еще раз на книжку.


Уже выпил.
Чакры не открылись.
Книжку отдал племяннику, пусть разбирает.
Вместо нее дочитаю наконец "Object-oriented Software Construction" by Bertrand Meyer.

P.S. Я думаю что многие из тех, кто защищает Шилдта, делает это в память о старых-добрых днях,
когда на Borland C++ 3.1 они стряпали псевдографические меню по его книге. Я тоже стряпал эти меню.
Я тоже изучал его трансялтор Бейсика. Просто времена изменились. И я изменился. И я думал, что и
Шилдт тоже изменился. А он продает то же самое, только вид с боку.
Re: Кто-нибудь знает адрес Герберта Шилдта?
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 03.11.05 19:19
Оценка:
Здравствуйте, sch, Вы писали:


sch>И вот что я собираюсь сделать.

sch>Я собираюсь послать эту книгу по почте Герберту Шилдту.
sch>Со здоровенной надписью КГ/АМ.

Можешь написать ему на
Herb@HerbSchildt.com
-- Андрей
Re[3]: Кто-нибудь знает адрес Герберта Шилдта?
От: sch  
Дата: 03.11.05 19:37
Оценка:
Я вот только что понял, почему мне не понравился этот GC. Так вот, этот GC мне не понравился из-за того, что он работает в некоторых случаях, а в некоторых -- работает плохо. Шилдт мог сказать: ребята, это GC, это хороший GC, но не делайте кольцевых ссылок. Это было бы одно решение. Шилдт мог бы сделать положим weak pointers, или способ explicitly удалить объект. Это было бы другое решение.

Делать программы, которые иногда работают, а иногда нет -- непрофессионально.
Либо должно быть общее решение, либо частное решение, либо никакого. Промежутоных результатов быть не может.
И показывать начинающим программистам, что можно халтурить, это просто вредительство.
Re[3]: Кто-нибудь знает адрес Герберта Шилдта?
От: c-smile Канада http://terrainformatica.com
Дата: 03.11.05 19:56
Оценка: +1 -1 :)
Здравствуйте, sch, Вы писали:

CS>>reference counting как одно из средств memory management — работает. И кстати на определнных задачах

CS>>эффектвнее других механизмов GC в разы. А какие проблемы ты видишь?

sch>Меня не устраивает 90 процентов кода GC, потому что вся его функциональность по большому счету

sch>сводится к функциональности простейшего указателя с подсчетом ссылок.

Союственно подсчет ссылок (тем или иным методом) это и есть основная функция GC.
Извиняюсь но так и не понял причин твоего праведного гнева.

sch>>>а проблему кольцевых ссылок он решает следующим образом: при завершении работы программы сборщик мусора просто освобождает все неосвобожденные участки


CS>>И чего? Так работает любой GC.


sch>Позвольте, а как же деструкторы?


Позволяю.

По большому счету GC и деструкторы это две взаимоисключающие штуки.

Не торопись жать Reply здесь — подумай.
Хинт: почему в Java и .NET нет их как сущностей?

sch>Я конечно не большой знаток GC, но такой GC -- это просто халтура.


С одним из частей этого OR exepression я согласен.

sch>>> Mini C++ это тот же интерпретатор подмножества бейсика, который он дал в свой книжке "Профессиональное программирование на Turbo C" двадцать лет назад


CS>>So what? Еще одно поколение программеров научится писать инетрпретаторы.

CS>>Простота изложения проблемы Шилдтом очень помогает на ранних преиодах освоения.
CS>>Провернно на личном опыте.

sch>И ты написал c-smile?


Ага. А шо? Только перед ним было еще штуки три "смайлика".
Первый был как раз direct interpretter в стиле Шилдта.

Кстати по такому принципу построены несколько JavaScript interpretters.
Например тот что в Konqueror ( http://www.konqueror.org/ ) или вот
этот: http://www.adaptive-enterprises.com.au/~d/software/see/

sch>Я думаю что начинающему было бы очень трудно освоить трянсляторо-строение по такому материалу, потому что он

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

Наверное. Еще раз говорю — эту версию книги не видел.

sch>P.S. Я думаю что многие из тех, кто защищает Шилдта, делает это в память о старых-добрых днях,

sch>когда на Borland C++ 3.1 они стряпали псевдографические меню по его книге. Я тоже стряпал эти меню.
sch>Я тоже изучал его трансялтор Бейсика. Просто времена изменились. И я изменился. И я думал, что и
sch>Шилдт тоже изменился. А он продает то же самое, только вид с боку.

Ага. А Никлас Вирт — "казел", да? Уже 20 лет как мурыжит этот Паскаль...
И Булгаков, скотина такая, один раз написал а уже три поколения читают — мучаются.

Да Шилдту памятник нужно ставить по хорошему.
Основная задача его книг это нечто типа "Радио — это просто" Айсберга.
Re[2]: Кто-нибудь знает адрес Герберта Шилдта?
От: alexeiz  
Дата: 03.11.05 21:37
Оценка: +1
Здравствуйте, _Winnie, Вы писали:

_W>All.


_W>Стандарт c++0x говорят будет около двух тысяч страниц.

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

Новичку не надо понимать весь язык. Только основные моменты, которых больше чем есть не станет. В каком-то случае будет даже меньше. Например, не нужно будет объяснять >> в шаблонах.
Re[2]: Кто-нибудь знает адрес Герберта Шилдта?
От: alexeiz  
Дата: 03.11.05 22:34
Оценка:
Здравствуйте, c-smile, Вы писали:

sch>> Mini C++ это тот же интерпретатор подмножества бейсика, который он дал в свой книжке "Профессиональное программирование на Turbo C" двадцать лет назад


CS>So what? Еще одно поколение программеров научится писать инетрпретаторы.

CS>Простота изложения проблемы Шилдтом очень помогает на ранних преиодах освоения.
CS>Провернно на личном опыте.

Я кстати её читал. Имеется ввиду про С. Надцать лед тому назад. Единственное, что я из неё помню теперь это то, что константы должны быть числами, а не строками. Это прочно засело в мою голову. Откат к строковым константам я увидел только с приходом .NET, ресурсы в котором выбираются по строковому ключу. Может быть это и оправдано, но для меня это сразу показалось каким-то недоразумением, мягко говоря. Вероятно, люди создавшие такую модель ресурсов не читали книжку Шилдта.
Re[4]: Кто-нибудь знает адрес Герберта Шилдта?
От: Глеб Алексеев  
Дата: 04.11.05 08:56
Оценка: +1 -1
Здравствуйте, c-smile, Вы писали:

CS>Союственно подсчет ссылок (тем или иным методом) это и есть основная функция GC.

Ээээ. Даже и не знаю, стоит ли это говорить Великому и Ужасному c-smile . Может, я чего недопонял, но как раз самый известный древний метод GC — Mark-n-Sweep — ссылки не считает, ни тем, ни иным методом, он просто промечает все живые объекты и прибивает все остальные.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Кто-нибудь знает адрес Герберта Шилдта?
От: ailurus Россия https://kochetkov.github.io
Дата: 04.11.05 10:28
Оценка:
Здравствуйте, sch, Вы писали:

<skipped>

Я к сожалению не имел чести читать данное руководство, но вот "C# для начинающих" и "Полный справочник по С#" обсуждаемого автора прочел. Мое имхо — самое оно для начинающих, хотя вода там конечно есть. Равно как и пресловутый интерпритатор

Главное до Шилдта — Рихтера и спецификации не читать Хотя Рихтер, все больше по платформе, вот если бы он и по языку что-нибудь написал...

Кстати, насколько я знаю — Шилдт был одним из первых, кто в ударных темпах выпустил "Полный справочник по С# 2.0"

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[5]: Кто-нибудь знает адрес Герберта Шилдта?
От: c-smile Канада http://terrainformatica.com
Дата: 04.11.05 17:38
Оценка:
Здравствуйте, Глеб Алексеев, Вы писали:

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


CS>>Союственно подсчет ссылок (тем или иным методом) это и есть основная функция GC.

ГА> ... Может, я чего недопонял, но как раз самый известный древний метод GC — Mark-n-Sweep — ссылки не считает, ни тем, ни иным методом, он просто промечает все живые объекты и прибивает все остальные.

Как сказал великий Сальватор Еао:

"Программист — думай!"


Что делает Mark в Mark-n-Sweep?

Mark именно считает кол-во ссылок на элементы.

Как правило счетчик это bit — частный случай int. Но есть схема когда именно int используются.
В зависимости от его значения выполняется оптимизация разложения памяти.


В частном случае reference counting выделенной фазы Mark нет. И все.
Re[6]: Кто-нибудь знает адрес Герберта Шилдта?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.11.05 06:52
Оценка: :)))
Здравствуйте, c-smile, Вы писали:

CS>Как сказал великий Сальватор Еао:


CS>"Программист — думай!"


Какой, однако, плодовитый персонаж, этот великий Сальватор Еао. Если дело так и дальше пойдет, то нужно будет составлять "Сборник афоризмов Сальватора Еао".

Пора уже копирайт оформлять. Мол, исключительные права на использование имени "Сальватор Еао" и эксклюзивное право на высказывания от его имени принадлежат c-smile.



... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Кто-нибудь знает адрес Герберта Шилдта?
От: Cyberax Марс  
Дата: 05.11.05 11:49
Оценка: +3
c-smile wrote:

> Что делает Mark в Mark-n-Sweep?

> Mark именно считает кол-во ссылок на элементы.

Не считает он ничего. Он _помечает_ достижимые элементы (на которые,
кстати, ссылок может и не быть).

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[2]: От модератора
От: Кодт Россия  
Дата: 06.11.05 09:52
Оценка:
Здравствуйте, c-smile, Вы писали:

CS> Выпей чая с рамашкой, открой чакры. И глянь еще раз на книжку.


(И далее, в переписке с sch, перешедшей в перепалку).
Не надо на личности переходить.
Перекуём баги на фичи!
Re[7]: Кто-нибудь знает адрес Герберта Шилдта?
От: c-smile Канада http://terrainformatica.com
Дата: 06.11.05 18:32
Оценка: -1
Здравствуйте, Cyberax, Вы писали:

C>c-smile wrote:


>> Что делает Mark в Mark-n-Sweep?

>> Mark именно считает кол-во ссылок на элементы.

C>Не считает он ничего. Он _помечает_ достижимые элементы (на которые,

C>кстати, ссылок может и не быть).

Mark-n-sweep "помечает" — определяет есть ли на объект ссылки или нет.
А сколько — как правило (но не всегда) не важно. Считает, если хочешь, все достижимые объекты.

reference counting'у в принципе тоже не важно значение счетчика. Ему важно есть ли ссылки или нет — ноль или не ноль.
Т.е. сам по себе счетчик это особенность имплементации данного способа garbage collector.

Two basic approaches to distinguishing live objects from garbage are reference counting and tracing. Reference counting garbage collectors distinguish live objects from garbage objects by keeping a count for each object on the heap. The count keeps track of the number of references to that object. Tracing garbage collectors, on the other hand, actually trace out the graph of references starting with the root nodes. Objects that are encountered during the trace are marked in some way. After the trace is complete, unmarked objects are known to be unreachable and can be garbage collected.


В контексте же данного обсуждения "Фи-и-и, у него GC сделан как ref-counting..."
замечу еще раз — все имеет свою цену.

Для real-time систем с детерменированным откликом ref-counted GC это практически единственная опция.
Re[8]: Кто-нибудь знает адрес Герберта Шилдта?
От: System Goose Россия  
Дата: 06.11.05 18:51
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Для real-time систем с детерменированным откликом ref-counted GC это практически единственная опция.


Это не совсем так. Для real-time стандартный подсчет ссылок не годится, так как
при удалении одной ссылки может понадобиться удалять огромную гроздь объектов.
Счетчики ссылок имеют серьезный недостаток --- они не освобождают
циклический мусор (т.е. объект A сослался на объект Б, а тот, в свою очередь
обратно на А).
Для real-time используется например threadmill Бейкера, и еще примерно полсотни
разных алгоритмов
Re[9]: Кто-нибудь знает адрес Герберта Шилдта?
От: Zdreni Украина http://r7.org.ru
Дата: 06.11.05 18:54
Оценка:
Здравствуйте, System Goose, Вы писали:

SG>Счетчики ссылок имеют серьезный недостаток --- они не освобождают

SG>циклический мусор (т.е. объект A сослался на объект Б, а тот, в свою очередь
SG>обратно на А).

Для решения этого недостатка уже давно придумали разделение на weak- и strong- указатели.
Re[10]: Кто-нибудь знает адрес Герберта Шилдта?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.11.05 02:50
Оценка:
Здравствуйте, Zdreni, Вы писали:

SG>>Счетчики ссылок имеют серьезный недостаток --- они не освобождают

SG>>циклический мусор (т.е. объект A сослался на объект Б, а тот, в свою очередь
SG>>обратно на А).

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


Вручную?
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Кто-нибудь знает адрес Герберта Шилдта?
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.11.05 06:17
Оценка: +1
Здравствуйте, vitaly_spb, Вы писали:
_>Книги пишутся для людей разного уровня подготовленности. Над тем что напишет sch посмеется тот кто писал GС ну и т.п.
То-то и оно, что книги с ошибками могут читать только люди с хорошей подготовкой. А люди со слабой подготовкой поверят печатному слову и забьют себе голову трудновыколупываемой ерундой, а над ошибками будут биться головой о стену и чувствовать себя идиотами.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Кто-нибудь знает адрес Герберта Шилдта?
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.11.05 06:17
Оценка:
Здравствуйте, c-smile, Вы писали:
CS>Mark-n-sweep "помечает" — определяет есть ли на объект ссылки или нет.
CS>А сколько — как правило (но не всегда) не важно. Считает, если хочешь, все достижимые объекты.
Отличие RC от настоящего GC вовсе не в количестве бит, отведенных под количество ссылок. Честный GC учитывает только те ссылки, которые сами находятся в живых объектах. А RC подсчитывает ВСЕ ссылки.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Кто-нибудь знает адрес Герберта Шилдта?
От: Глеб Алексеев  
Дата: 07.11.05 08:39
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>"Программист — думай!"

Не умею, что поделаешь .

CS>Что делает Mark в Mark-n-Sweep?

CS>Mark именно считает кол-во ссылок на элементы.
CS>Как правило счетчик это bit — частный случай int. Но есть схема когда именно int используются.
Какая однако вольная интертрепация. С такими аналогиями можно далеко зайти. А финалайзер — это деструктор. А шаблон в С++ — это макрос.

CS>В частном случае reference counting выделенной фазы Mark нет. И все.


И поэтому программа, активно использующая подсчет ссылок, может 30% времени сидеть в функциях addref()/release() (это не обобщение, а частный случай из опыта, именно такая цифра недавно получилась при профилировании проекта), а Mark-n-sweep приступает к работе, когда прижмет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Кто-нибудь знает адрес Герберта Шилдта?
От: sch  
Дата: 07.11.05 11:31
Оценка: 3 (1) +3 -1
Здравствуйте, Sinclair, Вы писали:

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

_>>Книги пишутся для людей разного уровня подготовленности. Над тем что напишет sch посмеется тот кто писал GС ну и т.п.
S>То-то и оно, что книги с ошибками могут читать только люди с хорошей подготовкой. А люди со слабой подготовкой поверят печатному слову и забьют себе голову трудновыколупываемой ерундой, а над ошибками будут биться головой о стену и чувствовать себя идиотами.

А я вот почему-то вспомнил книгу Кернигана и Пайка "Практика программирования", или тот же K&R. Книги в общем-то предназначенные для новичков, но я вот с огромным удовольствием перечитываю их. Потому, что код там простой, элегантный и очень мощный. Эти издания для меня идеал "книги о программировании". Опять же любой индивид, который увидел C++ "месяц назад" прочитает того же Александреску без труда, узнает для себя много нового и полезного.

Ибо не бывает книг для профессионалов и для начинающих. Бывают хорошие книги и плохие книги.
Re[3]: От модератора
От: sch  
Дата: 07.11.05 11:56
Оценка:
Здравствуйте, Кодт, Вы писали:

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


CS>> Выпей чая с рамашкой, открой чакры. И глянь еще раз на книжку.


К>(И далее, в переписке с sch, перешедшей в перепалку).

К> Не надо на личности переходить.

"Он первый начал!"

P.S. Больше не будем.
Re[6]: Кто-нибудь знает адрес Герберта Шилдта?
От: Pavel Dvorkin Россия  
Дата: 07.11.05 12:57
Оценка:
Здравствуйте, Кодт, Вы писали:


К>Эт' фигня. Вот мне за скипетр обидно; что теперь делать?


Купи булаву.
With best regards
Pavel Dvorkin
Re[9]: Кто-нибудь знает адрес Герберта Шилдта?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.11.05 13:49
Оценка: +1 :))
Здравствуйте, Sinclair, Вы писали:

CS>>Mark-n-sweep "помечает" — определяет есть ли на объект ссылки или нет.

CS>>А сколько — как правило (но не всегда) не важно. Считает, если хочешь, все достижимые объекты.
S>Отличие RC от настоящего GC вовсе не в количестве бит, отведенных под количество ссылок. Честный GC учитывает только те ссылки, которые сами находятся в живых объектах. А RC подсчитывает ВСЕ ссылки.

Блин, настоящее отличие между ЖЦ и подсчетом ссылок в том, что это два совершенно рзных алгоритма управления жизнью объектов. Все! Точка!

Эдак можно начать рассуждать об отличиях "пузкрька" и "быстрой сортировки". Мол различие в них только в том, что в одном есть рекурсия, а в другом нет.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Кто-нибудь знает адрес Герберта Шилдта?
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.11.05 15:27
Оценка: +1 -1
Здравствуйте, VladD2, Вы писали:

VD>Блин, настоящее отличие между ЖЦ и подсчетом ссылок в том, что это два совершенно рзных алгоритма управления жизнью объектов. Все! Точка!

Не, Влад. Такое определение отличия сродни определению "веревка суть вервие простое". Они, видите ли, отличаются, потому что отличаются.
Отличий между различными алгоритмами — масса. Но можно провести точную границу между функциональностью GC и RC. (Кстати, пузырек и все остальные алгоритмы эквивалентны с точки зрения функциональности). И эту границу я привел. Она показывает, что пропасть между GC и RC значительно глубже, чем между пузырьком и хипсортом.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[9]: Кто-нибудь знает адрес Герберта Шилдта?
От: Павел Кузнецов  
Дата: 08.11.05 05:29
Оценка: +3
Sinclair,

> Честный GC учитывает только те ссылки, которые сами находятся в живых объектах.


Зависит от алгоритма.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[11]: Кто-нибудь знает адрес Герберта Шилдта?
От: Павел Кузнецов  
Дата: 08.11.05 05:36
Оценка: +1
Sinclair,

> пузырек и все остальные алгоритмы эквивалентны с точки зрения функциональности


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

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

CS>>Mark-n-sweep "помечает" — определяет есть ли на объект ссылки или нет.
CS>>А сколько — как правило (но не всегда) не важно. Считает, если хочешь, все достижимые объекты.
S>Отличие RC от настоящего GC вовсе не в количестве бит, отведенных под количество ссылок. Честный GC учитывает только те ссылки, которые сами находятся в живых объектах. А RC подсчитывает ВСЕ ссылки.

А что делать тогда с консервативными GC — Боер-Мур для C++ и GC в D например?

Там сканируется *вся* аллоцированная память и если что-то похоже на поинтер
(например последовательность символов в строке) — блок куда этот адрес попал все равно помечается.

На самом деле задача нахождения блока куда попадает такой вот случайный адрес тоже стоит денюжек.
И я честно говоря не знаю что лучше. Истина наверное как всегда посредине — в сочетании разных подходов.

Кстати reference counting является разновидностью GC.
Или скажем так — у народа есть такое мнение
Re[4]: От модератора
От: c-smile Канада http://terrainformatica.com
Дата: 08.11.05 05:55
Оценка:
Здравствуйте, sch, Вы писали:

sch>Здравствуйте, Кодт, Вы писали:


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


CS>>> Выпей чая с рамашкой, открой чакры. И глянь еще раз на книжку.


К>>(И далее, в переписке с sch, перешедшей в перепалку).

К>> Не надо на личности переходить.

sch>"Он первый начал!"


Дико извиняюсь — но ни сном не духом не было такого желания.

"Ах, граф, Вы меня неправильно поняли..." сказала графиня шелестя манжетой...
Re[10]: Кто-нибудь знает адрес Герберта Шилдта?
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.11.05 06:45
Оценка:
Здравствуйте, c-smile, Вы писали:
CS>А что делать тогда с консервативными GC — Боер-Мур для C++ и GC в D например?
Не считать их "честными GC". Потому что они не могут собрать весь мусор.
CS>Там сканируется *вся* аллоцированная память и если что-то похоже на поинтер
CS>(например последовательность символов в строке) — блок куда этот адрес попал все равно помечается.
То есть кольцевые ссылки чудесно держат друг друга, так?
CS>На самом деле задача нахождения блока куда попадает такой вот случайный адрес тоже стоит денюжек.
CS>И я честно говоря не знаю что лучше. Истина наверное как всегда посредине — в сочетании разных подходов.
Гм. Лично мне кажется, что достаточно важно обеспечить отсутствие утечек. Потому как самая маленькая утечка на сервере со временем сожрет все подряд.
Это можно разруливать "второй линией защиты".
CS>Кстати reference counting является разновидностью GC.
Ага. Разновидностью "нечестного" GC.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[11]: Кто-нибудь знает адрес Герберта Шилдта?
От: Кодт Россия  
Дата: 08.11.05 10:27
Оценка: :)))
Здравствуйте, Sinclair, Вы писали:

CS>>Кстати reference counting является разновидностью GC.

S>Ага. Разновидностью "нечестного" GC.

Не нечестного, а халатного
Перекуём баги на фичи!
Re[11]: Кто-нибудь знает адрес Герберта Шилдта?
От: vdimas Россия  
Дата: 08.11.05 15:19
Оценка:
Здравствуйте, VladD2, Вы писали:

SG>>>Счетчики ссылок имеют серьезный недостаток --- они не освобождают

SG>>>циклический мусор (т.е. объект A сослался на объект Б, а тот, в свою очередь
SG>>>обратно на А).

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


VD> Вручную?


именно, на этапе проектирования
Re[9]: Кто-нибудь знает адрес Герберта Шилдта?
От: vdimas Россия  
Дата: 08.11.05 15:26
Оценка:
Здравствуйте, System Goose, Вы писали:

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


CS>>Для real-time систем с детерменированным откликом ref-counted GC это практически единственная опция.


SG>Это не совсем так. Для real-time стандартный подсчет ссылок не годится, так как

SG>при удалении одной ссылки может понадобиться удалять огромную гроздь объектов.
SG>Счетчики ссылок имеют серьезный недостаток --- они не освобождают
SG>циклический мусор (т.е. объект A сослался на объект Б, а тот, в свою очередь
SG>обратно на А).
SG>Для real-time используется например threadmill Бейкера, и еще примерно полсотни
SG>разных алгоритмов

давай это спросим у тех, кто эти системы разрабатывал, ok?

1. В реал-тайм системах стараются вообще не использовать те или иные методы автоматизации контроля за временем времени жизни объектов, ибо, как ты правильно заметил, мы можем получить "неожиданно" много освобождений в непредсказуемый момент.

2. даже если и используют, то счетчик ссылок рулит на первом месте. WeakReference — зачастую обычный указатель. Все бенефиты и недостатки этого способа давно известны. И только если этот способ не подходит, то:

3. все остальные способы, вплоть до самописных извращенных (например, отложенный вызов деструкторов в системах с подсчетом ссылок!!!). Но применение каждого конкретного способа должно иметь под собой вполне серьезное обоснование.
Re[6]: Кто-нибудь знает адрес Герберта Шилдта?
От: vitaly_spb Россия  
Дата: 08.11.05 16:21
Оценка:
S>То-то и оно, что книги с ошибками могут читать только люди с хорошей подготовкой. А люди со слабой подготовкой поверят печатному слову и забьют себе голову трудновыколупываемой ерундой, а над ошибками будут биться головой о стену и чувствовать себя идиотами.

Ну я не о том говорил. Книжка же не должна реальными проектами быть забита. Там просто приводится некоторый способ реализации, который может быть не на 100% совершенен, но умнее чем может придумать новичок.
...Ei incumbit probatio, qui dicit, non qui negat...
Re[11]: Один умный вещь скажу
От: c-smile Канада http://terrainformatica.com
Дата: 08.11.05 19:13
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

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

CS>>А что делать тогда с консервативными GC — Боер-Мур для C++ и GC в D например?
S>Не считать их "честными GC". Потому что они не могут собрать весь мусор.

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


CS>>Там сканируется *вся* аллоцированная память и если что-то похоже на поинтер

CS>>(например последовательность символов в строке) — блок куда этот адрес попал все равно помечается.
S>То есть кольцевые ссылки чудесно держат друг друга, так?

Нет, не так. Есть ненулевая вероятность что что-то зависнет в памяти навсегда.
Поэтому золотое правило в С++/D + GC — "зануляй ненужную память".
У меня нпример в одном проекте деструктор ничего не удаляет — просто делает memset 0x0000DEAD.
Но опять же это часть той цены которую приходится платить.

CS>>На самом деле задача нахождения блока куда попадает такой вот случайный адрес тоже стоит денюжек.

CS>>И я честно говоря не знаю что лучше. Истина наверное как всегда посредине — в сочетании разных подходов.
S>Гм. Лично мне кажется, что достаточно важно обеспечить отсутствие утечек. Потому как самая маленькая утечка на сервере со временем сожрет все подряд.
S>Это можно разруливать "второй линией защиты".
CS>>Кстати reference counting является разновидностью GC.
S>Ага. Разновидностью "нечестного" GC.

Умный вещь №2: честных GC в природе не бывает. Вернее так: честный GC по определинию слишком
легко надурить. Достаточно разместить начало некого списка на периметре (aka roots — например static или stack bottom) — и все — приплыли.
Re[7]: Кто-нибудь знает адрес Герберта Шилдта?
От: c-smile Канада http://terrainformatica.com
Дата: 08.11.05 22:15
Оценка: +1 :)
Здравствуйте, sch, Вы писали:

sch>А я вот почему-то вспомнил книгу Кернигана и Пайка "Практика программирования", или тот же K&R. Книги в общем-то предназначенные для новичков, но я вот с огромным удовольствием перечитываю их. Потому, что код там простой, элегантный и очень мощный. Эти издания для меня идеал "книги о программировании". Опять же любой индивид, который увидел C++ "месяц назад" прочитает того же Александреску без труда, узнает для себя много нового и полезного.


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

sch>Ибо не бывает книг для профессионалов и для начинающих. Бывают хорошие книги и плохие книги.


Извиняюсь, но это совсем не в дугу.

"Радио это очень просто" и университетский учебник как бы то для разных уровней, нет?

Ты можешь провести эксперимент. Дать почитать университетский учебник школьнику начальных классов и
вопрос будет ли он заниматься радио стоять не будет.
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
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[20]: Один умный вещь скажу
От: GlebZ Россия  
Дата: 10.11.05 16:37
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Уверен?

Уже не знаю. Жду AndrewVK.

ПК>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

Не читай Рихтера за 2000 год. Он писал про какую то левую бету(первая версии книжки также была о ней). Все работает. На всякий случай даже проверил:
using System;
using System.Text;
using System.Runtime.InteropServices;
namespace Test
{
    class Test
    {

        public class TestGC
        {
            public TestGC(){}
             ~TestGC(){Console.WriteLine("exit");}
        }
        static void Main()
        {
            {
                TestGC t=new TestGC();
            }
        }
    }
}

Работает.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[19]: Один умный вещь скажу
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.11.05 16:39
Оценка: 9 (1)
Здравствуйте, GlebZ, Вы писали:

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

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

The Finalize method might not run to completion or might not run at all in the following exceptional circumstances:


The runtime continues to Finalize objects during shutdown only while the number of finalizable objects continues to decrease.

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

ПК>Уверен?


ПК>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


Еще одна цитата, на этот раз из MSDN

The Finalize method might not run to completion or might not run at all in the following exceptional circumstances:


The runtime continues to Finalize objects during shutdown only while the number of finalizable objects continues to decrease.

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

ПК>Если под отсутствием утечек понимать освобождение памяти по крайней мере в момент завершения программы


Почему обязательно в момент завершения? Судя по янусу уж раз в час то уборка 2-го поколения вызывается.
... << RSDN@Home 1.2.0 alpha rev. 619>>
AVK Blog
Re[18]: Один умный вещь скажу
От: WolfHound  
Дата: 10.11.05 17:47
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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

Запусти эту программу
using System;

namespace GCTest
{
    class Program
    {
        const int testCount = 10;

        const int objectCount = 1000;
        const int iterCount = 100000;
        const int minObjSize = 1000;
        const int maxObjSize = 10000;

        static void PrintGCInfo()
        {
            for (int i = 0; i <= GC.MaxGeneration; ++i)
                Console.WriteLine("Generation {0} collection count = {1}", i, GC.CollectionCount(i));
        }

        static void Test()
        {
            byte[][] arr = new byte[objectCount][];
            Random r = new Random();
            for (int j = 0; j < iterCount; ++j)
            {
                arr[r.Next(arr.Length)] = new byte[r.Next(minObjSize, maxObjSize)];
            }
        }

        static void Main(string[] args)
        {
            for (int i = 0; i < testCount; ++i)
            {
                Test();

                Console.WriteLine("Test       {0}/{1}", i + 1, testCount);
                PrintGCInfo();
                Console.WriteLine();
            }
        }
    }
}

Тут хорошо видно что сборка второго поколения происходит довольно активно.
Test       1/10
Generation 0 collection count = 110
Generation 1 collection count = 46
Generation 2 collection count = 8

Test       2/10
Generation 0 collection count = 218
Generation 1 collection count = 92
Generation 2 collection count = 12

Test       3/10
Generation 0 collection count = 330
Generation 1 collection count = 134
Generation 2 collection count = 22

Test       4/10
Generation 0 collection count = 439
Generation 1 collection count = 180
Generation 2 collection count = 28

Test       5/10
Generation 0 collection count = 548
Generation 1 collection count = 225
Generation 2 collection count = 36

Test       6/10
Generation 0 collection count = 662
Generation 1 collection count = 271
Generation 2 collection count = 46

Test       7/10
Generation 0 collection count = 772
Generation 1 collection count = 316
Generation 2 collection count = 54

Test       8/10
Generation 0 collection count = 882
Generation 1 collection count = 362
Generation 2 collection count = 60

Test       9/10
Generation 0 collection count = 994
Generation 1 collection count = 407
Generation 2 collection count = 70

Test       10/10
Generation 0 collection count = 1104
Generation 1 collection count = 451
Generation 2 collection count = 78

У меня на машине объем занимаемой памяти (по показаниям task manager'а) держался гдето в районе 30М пик 65М.
ЗЫ .NET 2.0 RC
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[20]: Один умный вещь скажу
От: GlebZ Россия  
Дата: 10.11.05 18:14
Оценка:
Здравствуйте, AndrewVK, Вы писали:

Про первое я вспомнил, просто не говорил так как это вопрос о том, что криминальная ошибка привела к невызову finalize. Про второе, тоже можно было догадаться. Возможно еще будут проблемы при вызове а ля StackOverflow OutOfMemory exception. Правда может он подпадает под пункт два.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: Один умный вещь скажу
От: c-smile Канада http://terrainformatica.com
Дата: 10.11.05 20:37
Оценка:
Здравствуйте, Sinclair, Вы писали:

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


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

S>Если у тебя все разрушается при выходе из области видимости, то никакой GC не нужен. Да и мемори менеджер тоже — стек аллокатор будет более чем достаточен.

Смотря для чего. А если я не знаю размер требуемой памяти в момент компиляции?
Re[20]: Один умный вещь скажу
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.05 00:58
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:


>> ПК>Т.е.? Даже все 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


Все так, но по жизни проблем это не создает. Два случая в которых не вызваются финалайзеры:
1. Завис один из финалайзеров.
2. Процесс удален как-то по варварски.

Первый случай — баг. И но довольно легко отлавливается. К тому же я таких проблем еще не встречал.
Второй случай просто не интересен, так как при завершении приложения все внешние сслки на ресурсы автоматически закрывает ОС. А внутрениие уже никого не колышут.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Один умный вещь скажу
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.05 00:58
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ПК>>Если под отсутствием утечек понимать освобождение памяти по крайней мере в момент завершения программы


AVK>Почему обязательно в момент завершения? Судя по янусу уж раз в час то уборка 2-го поколения вызывается.


Статистика по моему Янусу:
78 уборок второго поколения с момента запуска. Янус был запущен в 4:00 10.11.2005.
Общее потребленное процессорное время 12 с половиной часов.

То есть при активной работе сборка идет чаще чем раз в час. При теневой работе практически не происходит. Что и логично.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Один умный вещь скажу
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.11.05 06:36
Оценка:
Здравствуйте, c-smile, Вы писали:
S>>Если у тебя все разрушается при выходе из области видимости, то никакой GC не нужен. Да и мемори менеджер тоже — стек аллокатор будет более чем достаточен.

CS>Смотря для чего. А если я не знаю размер требуемой памяти в момент компиляции?

Неважно. Стек ограничивает только порядок освобождения.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Кто-нибудь знает адрес Герберта Шилдта?
От: leper Россия  
Дата: 11.11.05 07:36
Оценка: 6 (1)
Здравствуйте, c-smile, Вы писали:

sch>>...Сборщик мусора он реализовал путем подсчета ссылок;


CS>reference counting как одно из средств memory management — работает. И кстати на определнных задачах

CS>эффектвнее других механизмов GC в разы. А какие проблемы ты видишь?

sch>>а проблему кольцевых ссылок он решает следующим образом: при завершении работы программы сборщик мусора просто освобождает все неосвобожденные участки


CS>И чего? Так работает любой GC.


Рекомендую ознакомиться с лучшим трудом (IMHO) по алгоритмам GC — Garbage Collection : Algorithms for Automatic Dynamic Memory Management. Хотел дать электронную версию (скан), но по правилам форумов нельзя (поправьте если не прав). Eсли сильно надо — стучитесь в мыло (см. профайл).
Think for yourself. Question authory.
Re[17]: Один умный вещь скажу
От: c-smile Канада http://terrainformatica.com
Дата: 11.11.05 07:45
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

S>>>Если у тебя все разрушается при выходе из области видимости, то никакой GC не нужен. Да и мемори менеджер тоже — стек аллокатор будет более чем достаточен.

CS>>Смотря для чего. А если я не знаю размер требуемой памяти в момент компиляции?

S>Неважно. Стек ограничивает только порядок освобождения.

Смотря когда и по чем

Есть например такая функция — мизерекордия:

SetThreadStackGuarantee
Re[21]: Один умный вещь скажу
От: GlebZ Россия  
Дата: 11.11.05 12:59
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Второй случай просто не интересен, так как при завершении приложения все внешние сслки на ресурсы автоматически закрывает ОС.

Второй тоже баг. Максимум использование Net из unmanaged — это интерфейсы COM. При этом FreeLibrary внешним процессом не должны вызываться. В самом Net все без эксцессов.
VD>А внутрениие уже никого не колышут.
Могут колыхать. Буффер файла будет потерян.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[22]: Один умный вещь скажу
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.05 14:23
Оценка: :)
Здравствуйте, GlebZ, Вы писали:

VD>>Второй случай просто не интересен, так как при завершении приложения все внешние сслки на ресурсы автоматически закрывает ОС.

GZ>Второй тоже баг. Максимум использование Net из unmanaged — это интерфейсы COM. При этом FreeLibrary внешним процессом не должны вызываться. В самом Net все без эксцессов.

Какой на фиг FreeLibrary? Кому он интересен? Ну, и проблемы КОМ-а есть проблемы КОМ-а. Не нужно их к дотнету привязывать.

VD>>А внутрениие уже никого не колышут.

GZ>Могут колыхать. Буффер файла будет потерян.

Что?
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Один умный вещь скажу
От: GlebZ Россия  
Дата: 11.11.05 14:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Какой на фиг FreeLibrary? Кому он интересен? Ну, и проблемы КОМ-а есть проблемы КОМ-а. Не нужно их к дотнету привязывать.

Поэтому и считаю что пункт второй может произойти также в результате баги.

VD>>>А внутрениие уже никого не колышут.

GZ>>Могут колыхать. Буффер файла будет потерян.
VD>Что?
У тебя идет буфферизированная запись в файл. В случае если не был вызван диспозе, то файл то будет закрыт, но данные буфера будут потеряны.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[24]: Один умный вещь скажу
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.05 16:14
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>У тебя идет буфферизированная запись в файл. В случае если не был вызван диспозе, то файл то будет закрыт, но данные буфера будут потеряны.


Ну, то есть если у меня идет не буферизированная запись и она обрываетя на полуслове, то это нормально?

Забавно!

Может простно нужно понять, что ненормальное завершение прилоежния есть ненормальное завершение и при этом обсуждать проблемы финалайзеров просто смешно. Деструкторы ведь тоже могут не вызваться.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: Один умный вещь скажу
От: GlebZ Россия  
Дата: 11.11.05 16:33
Оценка:
Здравствуйте, VladD2, Вы писали:

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

Собственно это мы и пытаемся друг другу доказать

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[26]: Один умный вещь скажу
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.05 19:09
Оценка:
Здравствуйте, GlebZ, Вы писали:

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

GZ>Собственно это мы и пытаемся друг другу доказать

Тогда нужо понять о чем мы говорим.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[27]: Один умный вещь скажу
От: GlebZ Россия  
Дата: 11.11.05 19:48
Оценка:
Здравствуйте, VladD2, Вы писали:

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


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

GZ>>Собственно это мы и пытаемся друг другу доказать

VD>Тогда нужо понять о чем мы говорим.



С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Кто-нибудь знает адрес Герберта Шилдта?
От: Kemm  
Дата: 20.11.05 10:12
Оценка:
Здравствуйте, c-smile, Вы писали:

sch>> Mini C++ это тот же интерпретатор подмножества бейсика, который он дал в свой книжке "Профессиональное программирование на Turbo C" двадцать лет назад

CS>So what? Еще одно поколение программеров научится писать инетрпретаторы.
CS>Простота изложения проблемы Шилдтом очень помогает на ранних преиодах освоения.
CS>Провернно на личном опыте.

Ужасненько.(с)Цири
Учиться писать интерпретаторы нужно по небезысветсной Dragon Book. Делать это по Шилдту -- это примерно то же, что учиться управлять реактивным истребителем по какой-нибудь "Управление любым средством перевижения за 21 минуту" 8))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.