Автор Тема: Зачем сборщик мусора? (v2.0)  (Прочитано 28823 раз)

alexus

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #30 : Февраль 07, 2012, 10:41:27 am »
Чем в данном случае отличается: повторное и многократное ?
Это просто уточнение...
Повторное - от "повторить", то есть, один раз использовали, потом ещё... А "многократное" допускает одновременное и последовательное множественное использование. Так по смыслу ближе, IMHO.

DIzer

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #31 : Февраль 07, 2012, 11:18:55 am »
1. Базовое определение - часть некоторой составной системы , обладающая по крайней мере двумя тремя свойствами
я) Отвечающая заданному интерфейсу;
a) Относительно некоторого(ых) признака(ов) функционально законченная;
б) Допускающая повторное многократное использование, в том числе, внутри одной системы/программы;

2. Понижают сложность создаваемой с помощью них системы
2. Ускоряют процесс разработки, за счёт перехода к сборке из готовых блоков/компонент.

При этом ни на функциональность, ни на размер компонент ограничений, как правило, не накладывается, то есть, отдельный компонент сам может быть системой или набором компонент.
НИ В КОЕМ  СЛУЧАЕ - я говорил про БАЗОВОЕ определение - то есть наиболее общее , но тем не менее ПОЛЕЗНОЕ НА ПРАКТИКЕ
Ваше первое предположение ОГРАНИЧИВАЕТ рассматриваемые системы -пример CygWin - система содержащая компонетны (утилиты) БЕЗ ИНТЕРФЕЙСА, с другой стороны без ИНТЕРФЕЙСА  НЕВОЗМОЖНО ПРИНЦИПИАЛЬНО взаимодействие компонент.
П2 - можно рассматривать как УТОЧНЕНИЕ понятия СЛОЖНОСТЬ применительно к КОНКРЕТНОЙ или к КЛАССУ систем.

alexus

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #32 : Февраль 07, 2012, 11:35:22 am »
1. Базовое определение - часть некоторой составной системы , обладающая по крайней мере двумя тремя свойствами
я) Отвечающая заданному интерфейсу;
a) Относительно некоторого(ых) признака(ов) функционально законченная;
б) Допускающая повторное многократное использование, в том числе, внутри одной системы/программы;

2. Понижают сложность создаваемой с помощью них системы
2. Ускоряют процесс разработки, за счёт перехода к сборке из готовых блоков/компонент.

При этом ни на функциональность, ни на размер компонент ограничений, как правило, не накладывается, то есть, отдельный компонент сам может быть системой или набором компонент.
НИ В КОЕМ  СЛУЧАЕ - я говорил про БАЗОВОЕ определение - то есть наиболее общее , но тем не менее ПОЛЕЗНОЕ НА ПРАКТИКЕ
Тем не менее... Ваше определение получилось очень хорошим: полным, простым для восприятия и полезным. Мои поздравления!

Ваше первое предположение ОГРАНИЧИВАЕТ рассматриваемые системы -пример CygWin - система содержащая компонетны (утилиты) БЕЗ ИНТЕРФЕЙСА, с другой стороны без ИНТЕРФЕЙСА  НЕВОЗМОЖНО ПРИНЦИПИАЛЬНО взаимодействие компонент.
Интерфейс - это нечто "между лицами", то, что делает возможным/упрощает взаимодействие "лиц". Интерфейсы, встроенные в языки/поддерживаемые языками программирования, просто частный случай. В общем случае интерфейсы могут быть явно не специфицированы/не объявлены, но без них взаимодействие невозможно.

П2 - можно рассматривать как УТОЧНЕНИЕ понятия СЛОЖНОСТЬ применительно к КОНКРЕТНОЙ или к КЛАССУ систем.
Я стараюсь избегать понятия "сложность". По семантике "сложный" значит "с ложью", поскольку одним из основных свойств истины является простота (и если не простой, значит и не истинный, т.е. ложный).
Компонент не может понизить "сложность" системы, поскольку не в его воле изменить количество и смысл уровней системы, но упростить решение задач, за счёт блочной сборки, он может (для этого он и предназначен).

DIzer

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #33 : Февраль 07, 2012, 12:08:00 pm »
Интерфейс - это нечто "между лицами", то, что делает возможным/упрощает взаимодействие "лиц". Интерфейсы, встроенные в языки/поддерживаемые языками программирования, просто частный случай. В общем случае интерфейсы могут быть явно не специфицированы/не объявлены, но без них взаимодействие невозможно.
ФУНДАМЕНТАЛЬНЫМ  является понятие СИСТЕМЫ описывающей НЕКОТОРУЮ ИНТЕРЕСУЮЩУЮ НАС ЗАДАЧУ, ваше определение ограничивает системы случаем когда есть  ВЗАИМОДЕЙСТВИЕ между компонентами
Цитировать
Я стараюсь избегать понятия "сложность". По семантике "сложный" значит "с ложью", поскольку одним из основных свойств истины является простота (и если не простой, значит и не истинный, т.е. ложный).
Компонент не может понизить "сложность" системы, поскольку не в его воле изменить количество и смысл уровней системы, но упростить решение задач, за счёт блочной сборки, он может (для этого он и предназначен).
1. :)  А мне насрать на семантику -есть задача которую надо решить, есть система (возможно не единственная)которая ее описывает в каком -то приближении (или точно)...Я к чему это говорю - для определения можно использовать различные фундаментальных базовых понятий и  категорий - главное чтобы результат был удовлетворительным (поставленные задачи решались).
2. а) Может б) это и есть сложность  измеряемая  в категориях затрат (по времени создания, по стоимости железа...). Скажем так, мне в ОДИНОЧКУ -НЕВОЗМОЖНО сделать современную ИДЕ (здесь иде рассматривкается как система решающая с приемлемым качеством ряд задач) для ОБЕРОНА за РАЗУМНОЕ  время но с ГОТОВЫМИ  компонентами - почему бы и нет :)
« Последнее редактирование: Февраль 07, 2012, 12:15:45 pm от DIzer »

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Зачем сборщик мусора? (v2.0)
« Ответ #34 : Февраль 07, 2012, 12:29:39 pm »
1. Если компоненты не взаимодействуют, то какую же систему они образуют? о_О

2. Компоненты снижают не сложность самой системы, а сложность её создания.
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

DIzer

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #35 : Февраль 07, 2012, 12:35:16 pm »
1. Если компоненты не взаимодействуют, то какую же систему они образуют? о_О

2. Компоненты снижают не сложность самой системы, а сложность её создания.
1)  :) :) :) :) :) из НЕВЗАИМОДЕЙСТВУЮЩИХ (друг с другом) компонент ( но они ПРЕКРАСНО могут взаимодействовать с ОКРУЖАЮЩИМ миром - обьектами ВНЕШНИМИ по отношению к РАССМАТРИВАЕМОЙ системе  (пример я привел))
2) это зависит от ОПРЕДЕЛЕНИЯ (уточнения ) понятия сложность  :)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Зачем сборщик мусора? (v2.0)
« Ответ #36 : Февраль 07, 2012, 01:03:21 pm »
1. Если компоненты не взаимодействуют, то какую же систему они образуют? о_О

2. Компоненты снижают не сложность самой системы, а сложность её создания.
1)  :) :) :) :) :) из НЕВЗАИМОДЕЙСТВУЮЩИХ (друг с другом) компонент ( но они ПРЕКРАСНО могут взаимодействовать с ОКРУЖАЮЩИМ миром - обьектами ВНЕШНИМИ по отношению к РАССМАТРИВАЕМОЙ системе  (пример я привел))
2) это зависит от ОПРЕДЕЛЕНИЯ (уточнения ) понятия сложность  :)

1) Это не система, а просто коробка с кучей запчастей.

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

ЗЫ. Хотя, если уменьшается сложность создания системы, то можно считать, что уменьшается и её внутренняя сложность, просто кирпичики, из которых она строится, становятся более высокоуровневыми.
Дома мы же строим не из песчинок, а из кирпичей, панелей, модульных блоков...
« Последнее редактирование: Февраль 07, 2012, 01:05:17 pm от Geniepro »
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

DIzer

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #37 : Февраль 07, 2012, 01:11:32 pm »


1) Это не система, а просто коробка с кучей запчастей.

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

ЗЫ. Хотя, если уменьшается сложность создания системы, то можно считать, что уменьшается и её внутренняя сложность, просто кирпичики, из которых она строится, становятся более высокоуровневыми.
Дома мы же строим не из песчинок, а из кирпичей, панелей, модульных блоков...
1.  А если подумать?  :D
2. Сами компоненты могут иметь сложную структуру (то есть рассматриваться как весьма сложная система) - ну  а ЗЫ показывает что вы улавливаете то , о чем я пытаюсь сказать  :)

alexus

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #38 : Февраль 07, 2012, 02:22:16 pm »
Интерфейс - это нечто "между лицами", то, что делает возможным/упрощает взаимодействие "лиц". Интерфейсы, встроенные в языки/поддерживаемые языками программирования, просто частный случай. В общем случае интерфейсы могут быть явно не специфицированы/не объявлены, но без них взаимодействие невозможно.
ФУНДАМЕНТАЛЬНЫМ  является понятие СИСТЕМЫ описывающей НЕКОТОРУЮ ИНТЕРЕСУЮЩУЮ НАС ЗАДАЧУ, ваше определение ограничивает системы случаем когда есть ВЗАИМОДЕЙСТВИЕ между компонентами
Есть много определений понятия "система", но большая часть из них сходится в том, что "система состоит из элементов и связей между элементами". Связи - это и есть взаимодействие (или описание взаимодействия). Систем, у которых элементы не взаимодействуют, не бывает, это просто нечто сложенное в кучу.
Связи, которые соединяют элементы/компоненты системы, называются "слабыми" ("сильные" связи образуют сами элементы). "Слабость" "слабых связей" заключается в том, система может их в любой момент разорвать/перестроить. Другими словами, слабые связи опосредованы, явно или скрыто. Но без связей... это не система.

Я стараюсь избегать понятия "сложность". По семантике "сложный" значит "с ложью", поскольку одним из основных свойств истины является простота (и если не простой, значит и не истинный, т.е. ложный).
Компонент не может понизить "сложность" системы, поскольку не в его воле изменить количество и смысл уровней системы, но упростить решение задач, за счёт блочной сборки, он может (для этого он и предназначен).
1. :)  А мне насрать на семантику -есть задача которую надо решить, есть система (возможно не единственная)которая ее описывает в каком -то приближении (или точно)...Я к чему это говорю - для определения можно использовать различные фундаментальных базовых понятий и  категорий - главное чтобы результат был удовлетворительным (поставленные задачи решались).
Такой подход возможен, и он давно известен. В программировании этот подход получил название "экстремального". Проблема только в том, что при данном подходе возникает проблема "отложенной сложности". То есть, берётся какая-то частная задача и решается (максимально быстро и эффективно). Заказчик доволен, программисты счастливы. Потом берётся другая задача и тоже решается быстро и эффективно. Однако наступает момент, когда приходит понимание, что между задачами существуют внутренние связи, и изменения, сделанные одной задачей, должны влиять на решение другой задачи. Наступает пора рефакторинга. И тут ВДРУГ выясняется, что внутренних связей много и задач... тоже много и переделывать надо всё, что было сделано... а заказчик уже недоволен, его приучили к быстрым решениям, и он хочет решения новых задач (в соответствии с бизнес-планом). Атмосфера накаляется, а появление удовлетворительного решения... откладывается. Вот и приходим к "отложенной сложности".
К семантике можно относится различно, главное, чтобы она к нам относилась... с пониманием... :)

alexus

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #39 : Февраль 07, 2012, 02:28:12 pm »
1. Если компоненты не взаимодействуют, то какую же систему они образуют? о_О

2. Компоненты снижают не сложность самой системы, а сложность её создания.
1)  :) :) :) :) :) из НЕВЗАИМОДЕЙСТВУЮЩИХ (друг с другом) компонент ( но они ПРЕКРАСНО могут взаимодействовать с ОКРУЖАЮЩИМ миром - обьектами ВНЕШНИМИ по отношению к РАССМАТРИВАЕМОЙ системе  (пример я привел))
2) это зависит от ОПРЕДЕЛЕНИЯ (уточнения ) понятия сложность  :)
Так нет же никакой "рассматриваемой системы"... если компоненты никак не соединены между собой, не взаимодействуют между собой, то это просто библиотека... а с внешним миром взаимодействует система (возможно с посредством компонентов). Она получает возмущение из-вне, распределяет работу между компонентами, выдаёт во-вне реакцию на внешнее или внутреннее возмущение (опять же возможно посредством компонентов).

DIzer

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #40 : Февраль 07, 2012, 03:22:57 pm »

Так нет же никакой "рассматриваемой системы"... если компоненты никак не соединены между собой, не взаимодействуют между собой, то это просто библиотека... а с внешним миром взаимодействует система (возможно с посредством компонентов). Она получает возмущение из-вне, распределяет работу между компонентами, выдаёт во-вне реакцию на внешнее или внутреннее возмущение (опять же возможно посредством компонентов).
Ну как нет - предположим вы хотите  создать  систему для улучшения производительности персонального ПК, ваша контора имеет ресурсов ровно на то, что бы обрабатывать часть этой задачи (оптимизация настроек системы) , без нормального дефрагментатора диска "жизни нет" - нет и нормальных денег.  Но есть конторка которая умеет делать дефрагментаторы  (быстрые , дешевые)- но.... ввиде  ЗАМКНУТОГО НА СЕБЯ приложения. Хороший выход - включить этот дефрагментатор в  СВОЮ систему. Легко убедится, что такая комбинированная система -БУДЕТ ОБЛАДАТЬ СВОЙСТВАМИ О КОТОРЫХ ГОВОРЮ я. ВАША точка зрения - частный случай (правда, часто в СОВРЕМЕННОЙ реальности реализуемый на практике).

DIzer

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #41 : Февраль 07, 2012, 03:31:30 pm »
Не, на самом деле trurl вел речь о том, что можно жить без динамической памяти вообще. И таки да, живем. В одной из наших программ нет ни одного new/malloc и ни одного delete/free. Рукописных менеджеров памяти также нет. Стандартные контейнеры также не используются.
Вопрос  - принципиально можно ли порушить такую систему   использованием НЕТИПИЗИРОВАННЫХ указателей и оператором ВЗЯТИЯ АДРЕСА?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Зачем сборщик мусора? (v2.0)
« Ответ #42 : Февраль 07, 2012, 03:48:58 pm »
Не, на самом деле trurl вел речь о том, что можно жить без динамической памяти вообще. И таки да, живем. В одной из наших программ нет ни одного new/malloc и ни одного delete/free. Рукописных менеджеров памяти также нет. Стандартные контейнеры также не используются.
Вопрос  - принципиально можно ли порушить такую систему   использованием НЕТИПИЗИРОВАННЫХ указателей и оператором ВЗЯТИЯ АДРЕСА?
Да нет, на самом деле ответ в том, что для "герметичной" системы типов не нужен GC. То есть GC не является ни необходимым ни достаточным условием.  Он оной герметичности вообще побоку.

Тоесть тут есть корреляция, но нет причинно-следственной связи.
« Последнее редактирование: Февраль 07, 2012, 03:51:09 pm от valexey »
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Зачем сборщик мусора? (v2.0)
« Ответ #43 : Февраль 07, 2012, 03:58:07 pm »

Да нет, на самом деле ответ в том, что для "герметичной" системы типов не нужен GC. То есть GC не является ни необходимым ни достаточным условием.  Он оной герметичности вообще побоку.

Тоесть тут есть корреляция, но нет причинно-следственной связи.
Почему(я говорю про высказывание Trurlя)  ?- посмотрите  пример С.Губанова.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Зачем сборщик мусора? (v2.0)
« Ответ #44 : Февраль 07, 2012, 04:10:09 pm »
Да нет, на самом деле ответ в том, что для "герметичной" системы типов не нужен GC. То есть GC не является ни необходимым ни достаточным условием.  Он оной герметичности вообще побоку.

Тоесть тут есть корреляция, но нет причинно-следственной связи.

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