Зависимость от GC
От: Cyberax Марс  
Дата: 04.07.05 11:43
Оценка: +1 :)
AVC wrote:

> AF> — Аккуратное слежение за выделением и освобождением памяти.

> Совершенно невинный пункт. Но у меня уже готово сорваться ехидное: "И
> Вы собираетесь организовать это аккуратное слежение на Си++?!

Используя паттерны, которые были для этого разработаны.

> Не лучше ли взять за основу НАДЕЖНЫЙ язык, уступающий Си++ в

> производительности всего несколько процентов!? (В случае Оберона.)"

Не лучше, так как часто другой язык имеет еще и другие недостатки.
Скажем, в случае Оберона — марсианский синтаксис и полная
неприспособленность для практической работы. Ну и необходимость GC.

В случае Ады — слишком уж сильная мания преследования. В случае Java —
полная зависимость от GC.

Ну а проценты (даже десятки процентов) производительности сейчас мало
кого волнуют.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9

09.07.05 16:07: Ветка выделена из темы Язык — это философия :)
Автор: AndreyFedotov
Дата: 25.06.05
— AndrewVK
Sapienti sat!
Re[3]: Зависимость от GC
От: AVC Россия  
Дата: 04.07.05 19:22
Оценка: -2 :))) :)
Здравствуйте, Cyberax, Вы писали:

>> AF> — Аккуратное слежение за выделением и освобождением памяти.

>> Совершенно невинный пункт. Но у меня уже готово сорваться ехидное: "И
>> Вы собираетесь организовать это аккуратное слежение на Си++?!

C>Используя паттерны, которые были для этого разработаны.


То есть, все-таки, "вручную".
Понятно.
У соседей-буржуев стирает машина-автомат; а нас — стирает мама!

>> Не лучше ли взять за основу НАДЕЖНЫЙ язык, уступающий Си++ в

>> производительности всего несколько процентов!? (В случае Оберона.)"

C>Не лучше, так как часто другой язык имеет еще и другие недостатки.


То есть имеет все недостатки Си++, а вдобавок — еще и другие.

C>Скажем, в случае Оберона — марсианский синтаксис и полная

C>неприспособленность для практической работы. Ну и необходимость GC.

Да, уныл марсианский пейзаж: оранжевое небо, оранжевая мама... оранжевый верблюд...
И, опять же, ранит сердце подлый факт существования стиральных машин.

C>В случае Ады — слишком уж сильная мания преследования.


Наверное, военным так положено: не верить ничему и никому, даже самим себе, и бдить!

C> В случае Java — полная зависимость от GC.


Все же, радует, что хотя бы синтаксис у Java — свой, земной.
Но, опять же, — эти стиральные машины...

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[4]: Зависимость от GC
От: Cyberax Марс  
Дата: 05.07.05 09:17
Оценка: 2 (2) +1 :)))
AVC wrote:

> C>Используя паттерны, которые были для этого разработаны.

> То есть, все-таки, "вручную".
> Понятно.
> У соседей-буржуев стирает машина-автомат; а нас — стирает мама!

Можно вопрос? Вы пальто, туфли и пиджак тоже в стиральной машине стираете?

> Но, опять же, — эти стиральные машины...


Hint: на многих вещах написано "не для машинной стирки"....

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[5]: Зависимость от GC
От: AVC Россия  
Дата: 05.07.05 10:25
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> C>Используя паттерны, которые были для этого разработаны.

>> То есть, все-таки, "вручную".
>> Понятно.
>> У соседей-буржуев стирает машина-автомат; а у нас — стирает мама!

C>Можно вопрос? Вы пальто, туфли и пиджак тоже в стиральной машине стираете?


>> Но, опять же, — эти стиральные машины...


C>Hint: на многих вещах написано "не для машинной стирки"....


Ответ очень удачный. Мне понравился.
Но мы несколько отвлеклись от темы форума и даже от языкового флейма.
Я сам тут виноват. Но как еще было ответить на смешное утверждение о "марсианском синтаксисе"?
По сути дела хочу сказать, что рассматриваю GC как достоинство современных языков, сильно упрощающее работу со сложными динамическими структурами данных и делающее программы гораздо надежнее.
Если по каким-то причинам GC не подходит для конкретного приложения, всегда можно найти другой способ управления памятью.
Например, заранее выделить пул объектов (хотя бы в виде стека указателей), создаваемых и уничтожаемых в реальном времени.
На крайний случай, можно написать на Обероне свой распределитель памяти для специфических объектов. (В одном модуле придется импортировать SYSTEM. Ничего, переживем. )
Для особых случаев компилятор может предоставить и старую добрую процедуру DISPOSE. (Oakwood guidelines)

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[6]: Зависимость от GC
От: Павел Кузнецов  
Дата: 05.07.05 21:15
Оценка:
AVC,

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


Мне по этому поводу показались интересными флеймы в comp.lang.c++.moderated:
Garbage Collection and C++
Pathology Of Bad Software Architecture

> Если по каким-то причинам GC не подходит для конкретного приложения, всегда можно найти другой способ управления памятью.


Вопрос: какие средства для надежного решения данной задачи предоставляет язык, рассчитанный на наличие GC?
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[5]: Зависимость от GC
От: Трурль  
Дата: 06.07.05 05:02
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>Можно вопрос? Вы пальто, туфли и пиджак тоже в стиральной машине стираете?

А Вы их стираете вручную?

C>Hint: на многих вещах написано "не для машинной стирки"....

Некоторые машины прекрасно стирают то, на чем написано "не для машинной стирки".
Re[6]: Зависимость от GC
От: Cyberax Марс  
Дата: 06.07.05 10:01
Оценка: 3 (1) :)
Трурль wrote:

> C>Можно вопрос? Вы пальто, туфли и пиджак тоже в стиральной машине

> стираете?
> А Вы их стираете вручную?

Туфли я не стираю — я их чищу, а пальто отдаю в чистку — там его
аккуратно стирают руками (раньше пальто/куртки я стирал сам).

> C>Hint: на многих вещах написано "не для машинной стирки"....

> Некоторые машины прекрасно стирают то, на чем написано "не для
> машинной стирки".

Но далеко не всегда — undefined behaviour.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[6]: Зависимость от GC
От: Cyberax Марс  
Дата: 06.07.05 10:29
Оценка: 1 (1) +1
AVC wrote:

> C>Можно вопрос? Вы пальто, туфли и пиджак тоже в стиральной машине

> стираете?
>>> Но, опять же, — эти стиральные машины...
> C>Hint: на многих вещах написано "не для машинной стирки"....
> Ответ очень удачный. Мне понравился.

Мне тоже

> Но мы несколько отвлеклись от темы форума и даже от языкового флейма.


А я и не знал, что у этого форума есть тема

> По сути дела хочу сказать, что рассматриваю GC как *достоинство*

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

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

ИМХО, GC реально нужен в сравнительно небольшой доле приложений — там
где нужно создавать сложные связные структуры с неопределенным временем
жизни (узлы AST в компиляторе и т.п.).

> Если по каким-то причинам GC не подходит для конкретного приложения,

> всегда можно найти другой способ управления памятью.

Это не так просто, как кажется. Сейчас реально существует _единственный_
язык, где можно удобно использовать "другие способы управления памятью",
и этот язык называется С++. Большая часть сложности в С++ как раз и
проистекает из этого.

> Например, заранее выделить пул объектов (хотя бы в виде стека

> указателей), создаваемых и уничтожаемых в реальном времени.
> На крайний случай, можно написать на Обероне свой распределитель
> памяти для специфических объектов. (В *одном* модуле придется
> импортировать SYSTEM. Ничего, переживем. )
> *Для особых случаев* компилятор может предоставить и старую добрую
> процедуру DISPOSE. (Oakwood guidelines)

Проблема-то не в том, чтобы написать аллокатор — всякие пулы для Java и
прочих C# написаны уже по 100 раз. Проблема в том, что нужно задизайнить
язык под возможность ручного управления памятью. Это не так просто —
сейчас это делается для C++/CLI, и уже были найдены куча разных тонких
моментов с исключениями, многотредностью и т.п.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[7]: Зависимость от GC
От: FR  
Дата: 06.07.05 10:57
Оценка:
Здравствуйте, Cyberax, Вы писали:


C>Это не так просто, как кажется. Сейчас реально существует _единственный_

C>язык, где можно удобно использовать "другие способы управления памятью",
C>и этот язык называется С++. Большая часть сложности в С++ как раз и
C>проистекает из этого.

Есть еще D в котором "другие способы управления памятью" использовать также удобно как и в C++.
Re[8]: Зависимость от GC
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.07.05 11:08
Оценка:
Здравствуйте, FR, Вы писали:

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



C>>Это не так просто, как кажется. Сейчас реально существует _единственный_

C>>язык, где можно удобно использовать "другие способы управления памятью",
C>>и этот язык называется С++. Большая часть сложности в С++ как раз и
C>>проистекает из этого.

FR>Есть еще D в котором "другие способы управления памятью" использовать также удобно как и в C++.


Есть вообще? Или есть для промышленной разработки?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Зависимость от GC
От: Cyberax Марс  
Дата: 06.07.05 11:20
Оценка:
FR wrote:

> C>Это не так просто, как кажется. Сейчас реально существует

> _единственный_
> C>язык, где можно удобно использовать "другие способы управления
> памятью",
> C>и этот язык называется С++. Большая часть сложности в С++ как раз и
> C>проистекает из этого.
> Есть еще D в котором "другие способы управления памятью" использовать
> также удобно как и в C++.

Не совсем, я в свое время в их группе новостей показывал места в языке,
из-за которых GC в D нельзя в полном объеме реализовать.

Да и вообще, D все никак закончить нормально не могут.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[7]: Зависимость от GC
От: IT Россия linq2db.com
Дата: 06.07.05 14:58
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

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


Зачем? В смысле, зачем нужно ручное управление памятью?
... << RSDN@Home 1.1.4 stable rev. 510>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Зависимость от GC
От: Cyberax Марс  
Дата: 06.07.05 15:16
Оценка: +2
IT wrote:

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

> управления памятью.
> Зачем? В смысле, зачем нужно ручное управление памятью?

1. Интероперирование с легаси-кодом. Скрещивание GC и неGC-библиотек —
адское занятие.
2. Не всегда можно мириться с оверхедом по памяти от GC.
3. Скорость, скорость, скорость.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[9]: Зависимость от GC
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.07.05 23:24
Оценка: :)
Здравствуйте, Cyberax, Вы писали:

C>1. Интероперирование с легаси-кодом. Скрещивание GC и неGC-библиотек —

C>адское занятие.

Да как-то скрещиваем и не потеем.

C>2. Не всегда можно мириться с оверхедом по памяти от GC.


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

C>3. Скорость, скорость, скорость.


Что скорость? Ты бы к своей фобии скорости хоть какие пояснения давал.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Зависимость от GC
От: Cyberax Марс  
Дата: 07.07.05 07:31
Оценка: +3 -1 :))
VladD2 wrote:

> C>1. Интероперирование с легаси-кодом. Скрещивание GC и неGC-библиотек —

> C>адское занятие.
> Да как-то скрещиваем и не потеем.

Ага, конечно. Лично занимался прилаживанием Image Magic к C# — больше
такого не хочется.

Кстати, нам нужна была кроссплатформенная либа на C#, а стандартами
только простенький PInvoke определен.

> C>2. Не всегда можно мириться с оверхедом по памяти от GC.

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

В С++ я могу без особых проблем (я этим занимался) добиться такого же
расходования памяти, как и в чистом С.

> C>3. Скорость, скорость, скорость.

> Что скорость? Ты бы к своей фобии скорости хоть какие пояснения давал.

Все современные и эффективные GC дают паузы при полных циклах сборки,
это не всегда приемлимо (в играх, например). Ну и еще С++ные
автоматические объекты все же быстрее работают, чем GC с короткоживущими
объектами.

Кстати, придумал еще пункт 4:
4. Нежелание мусорить.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[11]: Зависимость от GC
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.07.05 14:36
Оценка: :)
Здравствуйте, Cyberax, Вы писали:

C>Все современные и эффективные GC дают паузы при полных циклах сборки,

C>это не всегда приемлимо (в играх, например). Ну и еще С++ные
C>автоматические объекты все же быстрее работают, чем GC с короткоживущими
C>объектами.

Все же повторяя такое количество раз свои заблуждения нужно бы хоть раз попытаться проверить свои слова. А то заучил как "отче наш" фразу про паузы и тормоза и повторяшь ее по сто раз на дню. А тем временем игры спокойно работают на том самом ЖЦ и никаких проблем в упор не видно.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Зависимость от GC
От: Cyberax Марс  
Дата: 08.07.05 15:34
Оценка:
VladD2 wrote:

> C>Все современные и эффективные GC дают паузы при полных циклах сборки,

> C>это не всегда приемлимо (в играх, например). Ну и еще С++ные
> C>автоматические объекты все же быстрее работают, чем GC с
> короткоживущими
> C>объектами.
> Все же повторяя такое количество раз свои заблуждения нужно бы хоть
> раз попытаться проверить свои слова. А то заучил как "отче наш" фразу
> про паузы и тормоза и повторяшь ее по сто раз на дню.

Хочешь подробно расскажу о внутреннем мире GC в Java? Это к вопросу про
"проверить свои слова"...

Конкурентные GC есть, но они имеют тенденцию пропускать определенную
часть мусора, который постепенно накапливается.

> А тем временем игры спокойно работают на том самом ЖЦ и никаких

> проблем в упор не видно.

Насчет "не видят проблем" — это ты, кончено, загнул. Под GC портированы
простенькие Quake2/DOOM, которые на сегодняшних машинах действительно не
тормозят. А вот Ил-2 Штурмовик хоть и не использует Яву для графического
движка, но все равно отжирает кучу памяти.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[13]: Зависимость от GC
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.07.05 18:25
Оценка: :)
Здравствуйте, Cyberax, Вы писали:

C>Хочешь подробно расскажу о внутреннем мире GC в Java? Это к вопросу про

C>"проверить свои слова"...

Нет. Не хочу. Это вообще глупость так как существуют несколько типв ЖЦ, а их гибриды вообще не счесть. Хочу чтобы ты подтвердил свои слова чем-то практическим или прикратил постоянно высказывать эти домыслы.

C>Конкурентные GC есть, но они имеют тенденцию пропускать определенную

C>часть мусора, который постепенно накапливается.

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

C>Насчет "не видят проблем" — это ты, кончено, загнул. Под GC портированы

C>простенькие Quake2/DOOM, которые на сегодняшних машинах действительно не
C>тормозят. А вот Ил-2 Штурмовик хоть и не использует Яву для графического
C>движка, но все равно отжирает кучу памяти.

А у меня и дум3 отжирает кучу памяти. Но мы же не про память речь ведем? Мы же о торозах. Вот тот же ИЛ2 на моей машине не тормозит. А если и тормозил бы то скорее всго виной тому была бы видюха.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Зависимость от GC
От: minorlogic Украина  
Дата: 09.07.05 14:37
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Все же повторяя такое количество раз свои заблуждения нужно бы хоть раз попытаться проверить свои слова. А то заучил как "отче наш" фразу про паузы и тормоза и повторяшь ее по сто раз на дню. А тем временем игры спокойно работают на том самом ЖЦ и никаких проблем в упор не видно.


Я пишу один и тот же класс задач (небольшие утилитки под win32) C++ и С#, и исходя из чистого опыта наблюдаю что все то же но на С# тормозит на порядок , по сравнению с C++.
Причины выяснять нет желания, или память или еще какие ресурсы.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[12]: Зависимость от GC
От: minorlogic Украина  
Дата: 09.07.05 14:50
Оценка: +4 :))) :)
Здравствуйте, VladD2, Вы писали:

Ах да ! Извини забыл добавить, чтобы тебе было более доступнее.

Твои слова это полная чушь , которую ты повторяешь из поста в пост ... А также полный бред ..
Ищу работу, 3D, SLAM, computer graphics/vision.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.