Здравствуйте, Аноним, Вы писали:
А>>>Сколько проблем с подсчетом ссылок в манагед языках при работе с комом. G>>Ровно ноль. А> Угу. Плохо читаешь форум. Когда множество объектов с зависимыми ссылками, и только полная сборка мусора помогает.
А чем полная от неполной отличается в данном случае?
Приведи сссылку на такие проблемы, я ни разу не встречал.
MC>А когда кривизна инструмента оправдывается требованиями к прямоте рук разработчика — это наводит на мысли.
Прямота рук разработчика — это необходимое требование для того, что бы этим самым разработчиком называться. Если руки кривые — никакие языки, инструменты, платформы уже не помогут.
Re[24]: Умирает ли Delphi?
От:
Аноним
Дата:
10.11.09 16:53
Оценка:
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Аноним, Вы писали:
А>>>>Сколько проблем с подсчетом ссылок в манагед языках при работе с комом. G>>>Ровно ноль. А>> Угу. Плохо читаешь форум. Когда множество объектов с зависимыми ссылками, и только полная сборка мусора помогает. G>А чем полная от неполной отличается в данном случае?
Незарелизенные Ком объекты могут быть и в старших поколенияхи. Сборка может старшие поколения диспозные объекты не трогать.
G>Приведи сссылку на такие проблемы, я ни разу не встречал.
Проблемы сами по себе существуют т.к. в Net нет подсчета ссылок либо ручками через Marshal.ReleaseComObject.
Первая попавшаяся ссылка http://www.relib.com/forums/Topic861992-25-1.aspx#bm868682
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, Аноним, Вы писали:
А>>>>>Сколько проблем с подсчетом ссылок в манагед языках при работе с комом. G>>>>Ровно ноль. А>>> Угу. Плохо читаешь форум. Когда множество объектов с зависимыми ссылками, и только полная сборка мусора помогает. G>>А чем полная от неполной отличается в данном случае? А>Незарелизенные Ком объекты могут быть и в старших поколенияхи. Сборка может старшие поколения диспозные объекты не трогать.
И что? Нужно явно освободить — Marshal.ReleaseComObject, если не важно когда освободится, то можно ничего дополнительно не писать.
G>>Приведи сссылку на такие проблемы, я ни разу не встречал. А> Проблемы сами по себе существуют т.к. в Net нет подсчета ссылок либо ручками через Marshal.ReleaseComObject. А>Первая попавшаяся ссылка http://www.relib.com/forums/Topic861992-25-1.aspx#bm868682
Там первый ответ — правильный. При ошибке в excel, например при открытии или сохранении, дальнешие команды не обрабатываются, в том числе и Quit.
Сам на такое напарывался, .NET тут не при чем.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, gandjustas, Вы писали:
G>>>Здравствуйте, Аноним, Вы писали:
А>>>>>>Сколько проблем с подсчетом ссылок в манагед языках при работе с комом. G>>>>>Ровно ноль. А>>>> Угу. Плохо читаешь форум. Когда множество объектов с зависимыми ссылками, и только полная сборка мусора помогает. G>>>А чем полная от неполной отличается в данном случае? А>>Незарелизенные Ком объекты могут быть и в старших поколенияхи. Сборка может старшие поколения диспозные объекты не трогать. G>И что? Нужно явно освободить — Marshal.ReleaseComObject, если не важно когда освободится, то можно ничего дополнительно не писать.
А в большинстве случаев нужно, что бы выгрузился сразу. G>>>Приведи сссылку на такие проблемы, я ни разу не встречал. А>> Проблемы сами по себе существуют т.к. в Net нет подсчета ссылок либо ручками через Marshal.ReleaseComObject. А>>Первая попавшаяся ссылка http://www.relib.com/forums/Topic861992-25-1.aspx#bm868682 G>Там первый ответ — правильный. При ошибке в excel, например при открытии или сохранении, дальнешие команды не обрабатываются, в том числе и Quit. G>Сам на такое напарывался, .NET тут не при чем.
Так почему же в нативе все выгружается? Кстати по ссылке ниже смотри дело не в этом.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, Аноним, Вы писали:
А>>>Здравствуйте, gandjustas, Вы писали:
G>>>>Здравствуйте, Аноним, Вы писали:
А>>>>>>>Сколько проблем с подсчетом ссылок в манагед языках при работе с комом. G>>>>>>Ровно ноль. А>>>>> Угу. Плохо читаешь форум. Когда множество объектов с зависимыми ссылками, и только полная сборка мусора помогает. G>>>>А чем полная от неполной отличается в данном случае? А>>>Незарелизенные Ком объекты могут быть и в старших поколенияхи. Сборка может старшие поколения диспозные объекты не трогать. G>>И что? Нужно явно освободить — Marshal.ReleaseComObject, если не важно когда освободится, то можно ничего дополнительно не писать. S>А в большинстве случаев нужно, что бы выгрузился сразу.
С чего ты взял?
G>>>>Приведи сссылку на такие проблемы, я ни разу не встречал. А>>> Проблемы сами по себе существуют т.к. в Net нет подсчета ссылок либо ручками через Marshal.ReleaseComObject. А>>>Первая попавшаяся ссылка http://www.relib.com/forums/Topic861992-25-1.aspx#bm868682 G>>Там первый ответ — правильный. При ошибке в excel, например при открытии или сохранении, дальнешие команды не обрабатываются, в том числе и Quit. G>>Сам на такое напарывался, .NET тут не при чем. S> Так почему же в нативе все выгружается?
Не все, а там где явно Release вызван, а в случае delphi неявно вызовы втакются, но это не сильно помогает в сложных сценариях.
S>>А в большинстве случаев нужно, что бы выгрузился сразу. G>С чего ты взял?
Очень много вариантов. G>>>>>Приведи сссылку на такие проблемы, я ни разу не встречал. А>>>> Проблемы сами по себе существуют т.к. в Net нет подсчета ссылок либо ручками через Marshal.ReleaseComObject. А>>>>Первая попавшаяся ссылка http://www.relib.com/forums/Topic861992-25-1.aspx#bm868682 G>>>Там первый ответ — правильный. При ошибке в excel, например при открытии или сохранении, дальнешие команды не обрабатываются, в том числе и Quit. G>>>Сам на такое напарывался, .NET тут не при чем. S>> Так почему же в нативе все выгружается? G>Не все, а там где явно Release вызван, а в случае delphi неявно вызовы втакются, но это не сильно помогает в сложных сценариях.
Циклические ссылки?
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
S>>>А в большинстве случаев нужно, что бы выгрузился сразу. G>>С чего ты взял? S> Очень много вариантов.
Конекретнее.
G>>>>>>Приведи сссылку на такие проблемы, я ни разу не встречал. А>>>>> Проблемы сами по себе существуют т.к. в Net нет подсчета ссылок либо ручками через Marshal.ReleaseComObject. А>>>>>Первая попавшаяся ссылка http://www.relib.com/forums/Topic861992-25-1.aspx#bm868682 G>>>>Там первый ответ — правильный. При ошибке в excel, например при открытии или сохранении, дальнешие команды не обрабатываются, в том числе и Quit. G>>>>Сам на такое напарывался, .NET тут не при чем. S>>> Так почему же в нативе все выгружается? G>>Не все, а там где явно Release вызван, а в случае delphi неявно вызовы втакются, но это не сильно помогает в сложных сценариях. S>Циклические ссылки?
Дон Бокс написал книгу по разработке COM, там четко описал когда и как вызывать addref и release. Делфи половину сценариев затыкает автогенерным кодом, а половину нет. Мне даже пришлось некоторое время переучиваться работать с COM в делфи после С++.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, gandjustas, Вы писали:
S>>>>А в большинстве случаев нужно, что бы выгрузился сразу. G>>>С чего ты взял? S>> Очень много вариантов. G>Конекретнее.
Паять (свопинг),ресурсы G>>>>>>>Приведи сссылку на такие проблемы, я ни разу не встречал. А>>>>>> Проблемы сами по себе существуют т.к. в Net нет подсчета ссылок либо ручками через Marshal.ReleaseComObject. А>>>>>>Первая попавшаяся ссылка http://www.relib.com/forums/Topic861992-25-1.aspx#bm868682 G>>>>>Там первый ответ — правильный. При ошибке в excel, например при открытии или сохранении, дальнешие команды не обрабатываются, в том числе и Quit. G>>>>>Сам на такое напарывался, .NET тут не при чем. S>>>> Так почему же в нативе все выгружается? G>>>Не все, а там где явно Release вызван, а в случае delphi неявно вызовы втакются, но это не сильно помогает в сложных сценариях. S>>Циклические ссылки? G>Дон Бокс написал книгу по разработке COM, там четко описал когда и как вызывать addref и release. Делфи половину сценариев затыкает автогенерным кодом, а половину нет. Мне даже пришлось некоторое время переучиваться работать с COM в делфи после С++.
А вот насчет наполовину нет можно поподробнее. И как тебе нравится ручное addref и release? Кстати много библиотек на С++ где по умолчанию не нужно делать release и неправильно работает подсчет ссылок. Но это проблема разработчика СОМ. А поведение СОМ должно соответствовать поведению Васика для которого все это было придумано, чему соответствует Delphi. А вот Net под это не приспособлен. При этом если Delphi работает с объектом напрямую,то Net через обертку, что не добавляет ни скорости ни надежности. Поэтому натив лучше работает с нативом чем манагед с нативом. А вообще то и в Net могли бы ввести автоматический подсчет ссылок для объектов поддерживающих IUnknown или наследники специально созданного класса , о чем народ говорит долго и упорно.
Но это уже другая песня.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, Serginio1, Вы писали:
S>>>Здравствуйте, gandjustas, Вы писали:
S>>>>>А в большинстве случаев нужно, что бы выгрузился сразу. G>>>>С чего ты взял? S>>> Очень много вариантов. G>>Конекретнее. S> Паять (свопинг),ресурсы
Еще конкретнее.
Это вообще общая болезнь при переходе от ручного управления памятью к автоамтическому. Хочется сначала все сразу освобоить, выгрузить и прочее. Со временем отпускает.
G>>Дон Бокс написал книгу по разработке COM, там четко описал когда и как вызывать addref и release. Делфи половину сценариев затыкает автогенерным кодом, а половину нет. Мне даже пришлось некоторое время переучиваться работать с COM в делфи после С++. S> А вот насчет наполовину нет можно поподробнее.
Вряд ли, сейчас уже не помню, а компилятора под рукой нет.
S>И как тебе нравится ручное addref и release?
Вполне устраивало когда на С++ писал. Особенно завернутое в com-смарт-поинтеры.
S>Кстати много библиотек на С++ где по умолчанию не нужно делать release и неправильно работает подсчет ссылок. Но это проблема разработчика СОМ. А поведение СОМ должно соответствовать поведению Васика для которого все это было придумано, чему соответствует Delphi. А вот Net под это не приспособлен. При этом если Delphi работает с объектом напрямую,то Net через обертку, что не добавляет ни скорости ни надежности. Поэтому натив лучше работает с нативом чем манагед с нативом. А вообще то и в Net могли бы ввести автоматический подсчет ссылок для объектов поддерживающих IUnknown или наследники специально созданного класса , о чем народ говорит долго и упорно.
Смысл этого высказывания остался мне непонятен.
Re[32]: Умирает ли Delphi?
От:
Аноним
Дата:
11.11.09 08:12
Оценка:
Здравствуйте, gandjustas, Вы писали:
S>>>>>>А в большинстве случаев нужно, что бы выгрузился сразу. G>>>>>С чего ты взял? S>>>> Очень много вариантов. G>>>Конекретнее. S>> Паять (свопинг),ресурсы G>Еще конкретнее.
G>Это вообще общая болезнь при переходе от ручного управления памятью к автоамтическому. Хочется сначала все сразу освобоить, выгрузить и прочее. Со временем отпускает.
Как раз переход от автоматического освобождения ресурсов к ручному. Юсинг не зря придумали. G>>>Дон Бокс написал книгу по разработке COM, там четко описал когда и как вызывать addref и release. Делфи половину сценариев затыкает автогенерным кодом, а половину нет. Мне даже пришлось некоторое время переучиваться работать с COM в делфи после С++. S>> А вот насчет наполовину нет можно поподробнее. G>Вряд ли, сейчас уже не помню, а компилятора под рукой нет.
S>>И как тебе нравится ручное addref и release? G>Вполне устраивало когда на С++ писал. Особенно завернутое в com-смарт-поинтеры.
С++ это натив. Мы сейчас о манагеде говорим. S>>Кстати много библиотек на С++ где по умолчанию не нужно делать release и неправильно работает подсчет ссылок. Но это проблема разработчика СОМ. А поведение СОМ должно соответствовать поведению Васика для которого все это было придумано, чему соответствует Delphi. А вот Net под это не приспособлен. При этом если Delphi работает с объектом напрямую,то Net через обертку, что не добавляет ни скорости ни надежности. Поэтому натив лучше работает с нативом чем манагед с нативом. А вообще то и в Net могли бы ввести автоматический подсчет ссылок для объектов поддерживающих IUnknown или наследники специально созданного класса , о чем народ говорит долго и упорно. G>Смысл этого высказывания остался мне непонятен.
1. Натив лучше справляется с нативом, а Delphi наравне с Basic с IDispatch
2. Ввести в Net автоматический подсчет ссылок для объектов реализующих интерфейс IUnknown или аналог приведенного тобой com-смарт-поинтеры
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, gandjustas, Вы писали:
S>>>>>>>А в большинстве случаев нужно, что бы выгрузился сразу. G>>>>>>С чего ты взял? S>>>>> Очень много вариантов. G>>>>Конекретнее. S>>> Паять (свопинг),ресурсы G>>Еще конкретнее.
G>>Это вообще общая болезнь при переходе от ручного управления памятью к автоамтическому. Хочется сначала все сразу освобоить, выгрузить и прочее. Со временем отпускает. А> Как раз переход от автоматического освобождения ресурсов к ручному. Юсинг не зря придумали.
Неверно.
От недетерминированного к детерминированному, ресурсы все равно освобождаются рано или поздно. Только "поздно" — не всегда подходит.
А>1. Натив лучше справляется с нативом, а Delphi наравне с Basic с IDispatch
Разверни мысль, желательно с примерами. А то покачто голословное утверждение. Которое в случае COM даже неверно. На .NET c комом работать проще, также проще работать с WinAPI_шными callback_ами.
А>2. Ввести в Net автоматический подсчет ссылок для объектов реализующих интерфейс IUnknown или аналог приведенного тобой com-смарт-поинтеры
Зачем подсчет ссылок если есть GC? Если хочется вызывать addref и release, то для этого есть Marshal.
Re[34]: Умирает ли Delphi?
От:
Аноним
Дата:
11.11.09 12:02
Оценка:
Здравствуйте, gandjustas, Вы писали:
А>>1. Натив лучше справляется с нативом, а Delphi наравне с Basic с IDispatch G>Разверни мысль, желательно с примерами. А то покачто голословное утверждение. Которое в случае COM даже неверно. На .NET c комом работать проще, также проще работать с WinAPI_шными callback_ами.
Особенно с голым IDispatch А>>2. Ввести в Net автоматический подсчет ссылок для объектов реализующих интерфейс IUnknown или аналог приведенного тобой com-смарт-поинтеры G>Зачем подсчет ссылок если есть GC? Если хочется вызывать addref и release, то для этого есть Marshal.
Цитирую тебя. А вот ручками ничего делать не хочется
От недетерминированного к детерминированному, ресурсы все равно освобождаются рано или поздно. Только "поздно" — не всегда подходит.
А введение автоматического подсчета ссылок для определенного класа не непосильная задача.
Есть статическая типизация а для динамиков можно использовать и статическую. правда не знаю как сейчас в C# 4 дела обстоят
Здравствуйте, gandjustas, Вы писали:
G>В .NET 4 появилась еще одна монада — Continuation, реализуемая классами IObservable\IObserver, которая позволяет писать линейно код, который требует асинхроноого взаимодействия (ожидания событий, асинхронный IO)
А можно по-подробней каким боком IObservable\IObserver связано с continuation?
Здравствуйте, Denom, Вы писали:
D>Здравствуйте, gandjustas, Вы писали:
G>>В .NET 4 появилась еще одна монада — Continuation, реализуемая классами IObservable\IObserver, которая позволяет писать линейно код, который требует асинхроноого взаимодействия (ожидания событий, асинхронный IO)
D>А можно по-подробней каким боком IObservable\IObserver связано с continuation?
Ну это собственно оно и есть. Только в отличии от боычной реализации, как тут, IObservable\IObserver рассчитаны на обработку асинхронной последовательности входящих значений, а не на обычные значения.
Причем IObservable\IObserver можно свести к варианту из примера.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Denom, Вы писали:
D>>Здравствуйте, gandjustas, Вы писали:
G>>>В .NET 4 появилась еще одна монада — Continuation, реализуемая классами IObservable\IObserver, которая позволяет писать линейно код, который требует асинхроноого взаимодействия (ожидания событий, асинхронный IO)
D>>А можно по-подробней каким боком IObservable\IObserver связано с continuation?
G>Ну это собственно оно и есть. Только в отличии от боычной реализации, как тут, IObservable\IObserver рассчитаны на обработку асинхронной последовательности входящих значений, а не на обычные значения.
G>Причем IObservable\IObserver можно свести к варианту из примера.
Но ведь это не те продолжения которые есть скажем в Scheme или в Scala 2.8?
Здравствуйте, Denom, Вы писали:
H>>Delphi.NET уже давно закопали, ибо нах никому не нужен. Сейчас ориентир на гетерогенность: MacOS и Linux.
D>Вместо него есть Delphi Prism — со всеми фишками .NET Framework 4.0
Я в курсе, только ее развитием занимается RemObjects, и к собственно Delphi (т.е. к тому, чем была Delphi.NET) она имеет весьма опосредованное отношение.
Здравствуйте, Denom, Вы писали:
D>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, Denom, Вы писали:
D>>>Здравствуйте, gandjustas, Вы писали:
G>>>>В .NET 4 появилась еще одна монада — Continuation, реализуемая классами IObservable\IObserver, которая позволяет писать линейно код, который требует асинхроноого взаимодействия (ожидания событий, асинхронный IO)
D>>>А можно по-подробней каким боком IObservable\IObserver связано с continuation?
G>>Ну это собственно оно и есть. Только в отличии от боычной реализации, как тут, IObservable\IObserver рассчитаны на обработку асинхронной последовательности входящих значений, а не на обычные значения.
G>>Причем IObservable\IObserver можно свести к варианту из примера. D>Но ведь это не те продолжения которые есть скажем в Scheme или в Scala 2.8?