Garbage collector или Да ну нафиг!

Garbage collector
14
Нейтральная
сторона
4
Да ну нафиг!
12
Автоматически освобождать неиспользуемую память (Java-style)
Прежде чем писать комментарии или выбрать сторону вы должны авторизироваться!
Явно указывать освобождение памяти (Pascal-style)

13-03-2011 14:09 0

Я по сабжу не знаю, но у зелёных хоть понятная картинка

8 комментариев
opera.rulez 13-03-2011 14:30 0

Einharjar, Теперь всё ясно. Чтобы холивар был успешным, нужно помещать в заголовки понятные всем картинки.

Morbus 13-03-2011 14:32 +1

opera.rulez, и пони

opera.rulez 13-03-2011 16:06 0

Morbus, То есть пони понятны не всем, но помещать их почему-то нужно?

Morbus 13-03-2011 16:10 0

opera.rulez, да

opera.rulez 13-03-2011 16:11 0

Morbus, А почему их всё-таки стоит публиковать?

Morbus 13-03-2011 16:12 +1

opera.rulez, мне надоели твои вопросы

opera.rulez 13-03-2011 16:13 0

Morbus, А я всё равно не понимаю, зачем нужно постить пони.

Morbus 13-03-2011 16:15 0

opera.rulez,

13-03-2011 14:11 +1



В нейтрал

3 комментария
opera.rulez 13-03-2011 14:22 +2

Morbus, А по моим данным Морбус — всё-таки пони:

Morbus 13-03-2011 14:29 +1

opera.rulez,

cherepets 13-03-2011 14:32 0

Morbus,
пони бывают разные.
Бывают левые, бывают правые...

13-03-2011 15:47 +2

С++ кунг-фу для гиков. Реальные пацанчики юзают gcnew и косят бабосы вместо ебачки с мэмлейками. За знание кунг-фу не доплачивают! Вон, блеадь, 1С прогеры бабосы колотят и прогают на русском и никуя! Больше чем плюсанутые поднимают. Засуньте себе свои тэмплэйты в жопуЁ!

5 комментариев
NightmareZ 13-03-2011 17:33 0

JAre, 1С написана на C++.

JAre 13-03-2011 18:16 0

NightmareZ, Ага и все на ассемблере. И чё теперь?

NightmareZ 13-03-2011 21:05 0

JAre, Что всё? Ничего не всё, неправда это.

JAre 13-03-2011 21:27 0

NightmareZ, как не правда? Первый компилятор был написан на машинном коде и дальше пошло поехало. СШ то же на С++ писался но щя он пишеться на СШ так то!

NightmareZ 13-03-2011 21:33 +2

JAre, Человеки тоже развились из бактерий, но это не значит, что человек - бактерия.

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

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

Например, в случае платформы .NET это работает: CIL и байт-код можно перегонять один в другой без проблем. А вот машинный код для x86-совместимых процов перегнать в язык ассемблера иногда весьма проблемно.

Потому я с тобой не согласен, что "всё на ассемблере".

13-03-2011 17:34 0

Самому отслеживать всю динамику распределения памяти - боль в заднице.

0 комментариев
18-11-2011 08:33 0

Во-первых, даже со сборщиком мусора никто не мешает освобождать память руками, а быстродействие не так уж и уменьшается.

0 комментариев
18-11-2011 11:10 0

Еще б она правильно работала, было б вообще шикарно

0 комментариев
19-11-2011 00:05 0

Я нихуя не пойму - о чём вар?

2 комментария
cherepets 19-11-2011 00:06 0

uncleFLOPS, System.GC();

opera.rulez 19-11-2011 00:41 0

uncleFLOPS, Я сначала думал, что об этом: мусор. И только рубрика «Софт» и описания сторон склонили меня к гипотезе, что всё же об этом. Ололо, да это же баян!

18-12-2011 20:35 0

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

2 комментария
opera.rulez 18-12-2011 20:57 0

alexey-abak.ya.ru, Вы так говорите, как будто освобождать память — это сложнее, чем выделять.

NightmareZ 29-01-2012 20:47 0

alexey-abak.ya.ru, Программисты то разные бывают. Системные, прикладные... одни видимо должны заниматься освобождением, другие - нет. Я так щитаю.

29-01-2012 21:03 0

Было бы конечно круто если бы garbage collector работал только когда программист этого хочет

0 комментариев
05-03-2012 14:06 0

Когда почти у всех юзеров по 4-6 гигов памяти, ручной контроль практически не нужен

0 комментариев
05-03-2012 14:10 0

Дохуя боян же.
3й или 4й вар.

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

6 комментариев
r619 05-03-2012 14:33 0

cherepets, >Дохуя баян
автопоиск похожих варов молчал как рыба

>влом запариваться
Лень - не мотиватор. При желании можно писать код с минимальным количеством new\delete

cherepets 05-03-2012 14:35 0

r619, Ну, например вот
holywars.ru/comments/10042

r619 05-03-2012 14:37 0

cherepets, Там различия в словах, поиск - не ии

cherepets 05-03-2012 14:39 0

r619, Ну я собственно целенаправленно сборщик не вызываю и стараюсь писать так чтоб его было не за чем вызывать. Но мало ли что?

cherepets 05-03-2012 14:40 0

r619, Есть еще вары. Но я не помню названий.

opera.rulez 05-03-2012 15:49 0

r619, Поиск по слову «мусор» показывает ещё этот холивар: Сборка мусора рулит vs Сборка мусора - отстой. И комментариев кот наплакал. Мало здесь пока народа, готового поспорить на эту тему, хотя тема интересная.

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

05-03-2012 14:28 0

CCleaner

5 комментариев
cherepets 05-03-2012 14:30 0

Hemul, Речь как бы не о том. Речь о System.Gc();

r619 05-03-2012 14:30 0

Hemul, ಠ_ಠ

Gopnik 05-03-2012 14:30 0

Hemul, лол

Hemul 05-03-2012 14:36 0

Hemul, Видимо я вар не понял. Объясните.

r619 05-03-2012 14:38 0

Hemul, RTFM

13-03-2011 13:21 +1

Конечно лучше когда ты можешь явно освободить память.
А то в яве напишешь System.gc(), ничего не произойдет и получишь outOfMemory. Меня такой расклад совсем не радует...

11 комментариев
opera.rulez 13-03-2011 13:35 0

cherepets, И мне тоже мусоросборщики кажутся русской рулеткой. Но для чего-то их придумали...

JAre 13-03-2011 16:36 +1

opera.rulez, Шобы человеческий фактор уменьшить. в плюсах слишком просто заделать утечку памяти и потом онанировать на отладчик до посинения инструмента. Притом если заранее не подготовиться к половому акту то утечка может сохраняться годами. Не даром придумали библиотеки со всякими скопед пойнтерами и тп.

opera.rulez 13-03-2011 17:14 0

JAre, А я всегда говорил, что C++ — крайне ненадёжный язык. Object Pascal в этом плане куда надёжнее!

NightmareZ 13-03-2011 17:17 +1

JAre, В плюсах и прочих используется идиома владения и RAII.

А твой высер похож на нетленное "Пастернака не читал, но осуждаю".

NightmareZ 13-03-2011 17:23 +3

opera.rulez, Object Pascal - верблюжье говно. Я в упор не понимаю, какому уёбищу пришло в голову сделать так, как в паскале.

Объясняю.

Одна крайность - C#. Я создаю объект с помощью оператора new, работаю с ним и забываю о нём - сборщик мусора его очистит, всё хорошо.

Другая крайность - C++. Я создаю объект на стеке, работаю с ним и забываю о нём. После выхода из области видимости, объект будет удалён. Всё хорошо.

Второй вариант для C++ - я создаю объект в куче с помощью оператора new, заворачиваю в умный указатель, созданный на стеке... а дальше работает предыдущий сценарий. Опять же, всё хорошо.

А теперь, внимание! Уёбищный говнопаскаль. Он умудрился вобрать в себя недостатки обоих крайностей.
Я создаю объект в куче (потому что хуй иначе сделаешь), работаю с ним, удаляю его. Всё вроде бы хорошо. Но, блядь, стоит выскочить эксепшену после того, как я создал объект, но до того, как я его удалил - и, оппаньки, получаем утечку памяти и/или ресурсов.

И, блядь, чтоб мне этого избежать, нужно заворачивать работу с объектом в блок try...catch...finally, что делает код похожим на кусок верблюжьего говна.

-----

Правка. Тут я разгневался и решил дописать.

Но дегенераты, разрабатывающие паскаль пошли дальше и решили добавить таки кастрированный вариант сборщика мусора (неудачное название в данном случае, но я не знаю, как ещё сказать) и, например, динамический строки (вуаля!) сами удаляются. Какого хуя? Никто не знает.

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

opera.rulez 13-03-2011 17:27 0

NightmareZ, Кстати, да. Если чётко придерживаться схем, то проблем не будет. А если руки кривые, то и gc не спасёт.

NightmareZ 13-03-2011 18:00 +1

opera.rulez, Ну по сути дела, да. Вон пишут же ядра типа Linux и подобные на C. Другое дело, что нужно быть очень-очень внимательным, и, если что, быть готовым словить ошибку из-за неверного указателя совсем в другом месте в другое время и потом долго-долго дебажить. Потому у линукс программистов борода растёт, бриться некогда.

Вот написал я самодельные двусвязный список на C#, создал его в памяти, заполнил всякой фигнёй... Что мне нужно сделать, чтобы удалить все связанные его ноды из памяти? Ничего.

А что нужно сделать в C, чтобы удалить такой же список? Нужно пройтись с самого его начала до самого конца, делая free для каждого элемента, а потом не забыть удалить самый последний элемент. Ну, а, если это не интрузивный список, то нужно ещё не забыть поубивать все элементы, находящиеся в его нодах.

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

JAre 13-03-2011 18:25 +1

NightmareZ, СШ и С++ две разные и во многом параллельные вещи. СШ ближе к скриптовым языкам и ориентирован на то, что бы быть универсальным инструментов в руках М$ ориентированной code monkey где не так важно выжимать все соки из системы, зато важна скорость и простота + область применения от формошлёпства и офисного ПО до вэб серверов. С++ это больше для драйверов и низкоуровневых систем а не формошлепства и тем более веба. Хотя МС сделала всё, что бы убить С++ и превратить всех в анальных рабов. Тот же Мэнджэт С++ адова хрень. Но факт остается фактом: Зачем стрелять из пушки по воробьям?

JAre 13-03-2011 18:45 +2

JAre, Кстати у СШ из-за отложенного компилирования в машинный код есть ряд не кислых преимуществ. По крайней мере теоретически :) В плоть до того, что проблемные сегменты могут рекомпилиться после выполнения программы и будет выбран самый шустрый вариант, я уже не говорю о том, что код собираеться под конкретную машину и всё это дело обнавляеться с каждым выходом фрэймворка с возможность пересборки под новые процы старого кода. Короче, всё лучшее от мира скриптов и нативного программирования :)

JAre 13-03-2011 19:25 +1

JAre, ИМХО есть 4 основных типа С++ еров.
1. Олдскульные прогеры, жившие в каменный век, игравшие деревянными 8-ми битными игрушками.
2. С++ Ради понтов, восновном студенты.
3. Технари с душой художника вроде Александреску. Пищащие такие простыни кода, соответствующие спеку, что ни то, что человек - ни один компилятор в мире не способен их полностью осознать. Если бы не было С++ они бы 100% прогали на брэфйнаке потому, что это сложно и неудобно...
4. Ну, наверное всё таки для чего-то С++ лучше :)

Факт еще в том, что если программист в команде выжимает 100% из всех аспектов С++ разрабатывая свой кусок кода - коллеги его побьют камнями ибо нах не кому не нужны эти художества, ПИШИ ПОНЯТНО, БДЖЛЯ!

NightmareZ 13-03-2011 21:04 +1

JAre, Спасибо, кэп! :)

13-03-2011 17:15 +1

Оба варианта имеют право на существование. Зависит от задачи и выбранного подхода к её решению. Я в нейтрал.

5 комментариев
opera.rulez 13-03-2011 17:17 0

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

NightmareZ 13-03-2011 17:36 0

opera.rulez, Нет.

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

Сторонники же в ответ пишут кошерные сборщики мусора, работающие в фоне и как-то по-доброму. Например, вон в .NET 4 мелкомягкие что-то навояли такое и кичатся этим.

Война.

opera.rulez 13-03-2011 17:38 0

NightmareZ, То есть всё-таки больше дело вкуса и привычки?

NightmareZ 13-03-2011 17:41 0

opera.rulez, Ну, я думаю, да.

Раз даже операционки пишут (во всяком случае пытаются) на управляемых языках со сборкой мусора (Microsoft с их Singularity; и ещё какой-то у кого-то проект был, я не помню)...

С другой стороны надо понимать, что за всё нужно платить.

NightmareZ 13-03-2011 17:47 +1

NightmareZ, За мой долгий опыт программирования на дотНете я пришёл к выводу, что основные тормоза не от сборщика мусора и не от managed кода.

Пример.

Есть в .NET Framework замечательный класс Bitmap, позволяющий загружать изображения из различных форматов (bmp, jpg, png...). Есть у него методы GetPixel и SetPixel. То есть теоретически, можно загрузить изображение, обработать его любым нужным тебе способом и алгоритмом и сохранить результат.

Но когда пришлось мне писать много-много разных фильтров для изображений я пришёл в уныние. Методы GetPixel и SetPixel работали жутко медленно. Ну то есть совсем-совсем. Ту задачу, которую надо было решить за (ну пусть десятки или сотни) миллисекунды, с помощью этих методов можно было выполнить за несколько секунд.

Но выход нашёлся: указатели и работа напрямую с памятью. То есть я стал загружать картинку в тот самый объект класса Bitmap, а потом в обход работать с памятью, где он лежит. Скорость выросла не в проценты и не в десятки процентов, скорость выросла в десятки раз.

А виной медленной работы Get/SetPixel был не сборщик мусора, а куча проверок внутри них (на формат пикселей изображений, на невыход за границы допустимых диапазонов, и т.д.)

18-11-2011 13:03 +5

взяли у нас как-то в доме в дворники бывшего программиста. говно он а не дворник.

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

с тех пор программистов к уборке мусора и близко не подпускаем. развращает она их, развращает.

1 комментарий
Razor 18-11-2011 18:20 0

fhfh, Нахуй все, я сюда

18-11-2011 22:53 +3

0 комментариев
05-03-2012 11:53 0

.. больше писать, зато все быстро и четко

0 комментариев