H>>>Главное, решение-то есть.
M>>Что будем делать, когда стоит ограничение на использование сторонних компонентов?
H>Заказчик с такими претензиями пойдет туда, где солнце не светит (ибо это обостренный дибилизм в тяжелой форме) Для кого, спрашивается существует рынок компонентов/библиотек? Единственное требование к сторонним библиотеками -- это наличие исходников.
Есть, например, гос. заказы, где существует строгое ограничение на использование сторонних компонент (это, конечно, не про Россию, но все же)
H>>>MyInterface расширяется декларацией IUnknown. MyInterface можно приводить к IUnknown. Это понятно?
H>>>Жаль, что ты так и не понял... Реализуешь ты тут только MyInterface полученый путем расширения декларации от IUnknown.
M>>Так кто кого расширяет?
H>Декларация IMyInterface расширяется декларацией IUnknown.
Здравствуйте, Mamut, Вы писали: M>Кстати, смысла такого кода не понимаю
Теперь уже мало кто понимает. Это побочная ветвь развития языков программирования — всякие штуки, которые казались крутыми в начале девяностых, оказались малопригодными на практике.
Ну вот как перегрузка операторов в C++ по отдельности: когда можно сделать так, что (a+=1) !== (a = a + 1). Спрашивается, нахрена?
Или отсутствие явной поддержки интерфейсов, и использование вместо этого абстрактных классов.
Или умение задавать тело для pure virtual method.
Сейчас ведущие языководы придерживаются мнения, что вместо могучих инструментов, побочные возможности которых пригодны для построения полезных эффектов, лучше давать программистам менее мощные, но удобные инструменты, у которых полезные эффекты являются основным назначением.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
WH>>Я бы не сказал что наличие goto способствует скорости, простоте и надежности верификации кода. S>Он там ограниченный
Я в курсе.
В любом случае полное его отсутствие сделало бы все проще.
Здравствуйте, WolfHound, Вы писали: WH>Первая ссылка http://en.wikipedia.org/wiki/Funarg_problem
Спасибо. Непонятно, чем дотнетовское решение так уж узлобляет funarg problem.
В статье написано, что очевидное решение — размещать "стек фреймы" в хипе, а не в стеке.
Это понижает производительность, поэтому умные компиляторы типа анализируют программу, и если нет upwards funarg problem, то оставляют фрейм стека на стеке.
На первый взгляд, шарп делает именно это: при конструировании замыканий захваченные переменные переезжают из стека в хип.
Не представляю, чем бы переписывание CLR смогло бы помочь решению funarg problem.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>На первый взгляд, шарп делает именно это: при конструировании замыканий захваченные переменные переезжают из стека в хип.
Именно это он и делает.
Другое дело что по уму этим должен заниматься не компилятор шарпа, а JIT.
Дабы компиляторы не изобретали эту оптимизацию каждый раз.
S>Не представляю, чем бы переписывание CLR смогло бы помочь решению funarg problem.
А где я говорил что поможет при решении funarg problem?
Другое дело что это может помочь сделать болие правильные корутины вместо костыля по имени yield return
Хотя чтоб решить этот вопрос совсем капитально и за компанию выкинуть на свалку костыль IDisposable нужно конкретно надругаться над системой типов.
Я сечас думаю несколько вариантов.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Sinclair, Вы писали:
S>Ну почему же. Компилятор будет со страшной силой настаивать, что IMyInterface не имеет никакого отношения к IUnknown. Для того и сделан private, чтобы дети могли скрывать своих родителей. Я не вполне уверен, что есть надежный способ зафорсить приведение не рискуя нарваться на проход по памяти —
Можно (сюрприз) сишным кастом.
S>с множественным наследованием вроде были какие-то хитрости насчет реинтерпрет_каст, но это я просто плюсы очень плохо знаю.
reinterpret_cast просто тупо говорит о том что нужно сменить тип и ничего больше не делать. И ему начхать на последствия.
Полезен этот каст разве что при реализации чегото совсем низкоуровневого.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Sinclair, Вы писали:
S>Сейчас ведущие языководы придерживаются мнения, что вместо могучих инструментов, побочные возможности которых пригодны для построения полезных эффектов, лучше давать программистам менее мощные, но удобные инструменты, у которых полезные эффекты являются основным назначением.
Ага. И потом у этих собаководов получаются генерики .NET... нука реализуй Point3D<T> где T любой тип включая int, float,... и пользовательские типы.
Что? Не можешь?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, OCTAGRAM, Вы писали:
OCT>К слову о веб, там не только reflection, там и call/cc бы ещё
У call/cc и его менее кровавого собрата shift/reset есть один фатальный недостаток: Они полностью уничтожают возможность анализа потока исполнения. Те совсем.
И как следствие ни о какой автоматической детерминированной финализации в их присутствии говорить не приходится.
Даже костыль типа IDisposable/using не сделать.
Про мелочи типа тормозного спагетти стека я вобще молчу.
Таким образом приходим к выводу что если нам таки нужна (а на практике она очень нужна) автоматическая детерминированная финализация то на континюэшены придется забить.
Впрочем корутин и исключений вполне достаточно для подавляющего большинства практических задач.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: наши менеджеры памяти самые менеджеристые менеджеры
Здравствуйте, gandjustas, Вы писали:
M>>>Что будем делать, когда стоит ограничение на использование сторонних компонентов? H>>Заказчик с такими претензиями пойдет туда, где солнце не светит (ибо это обостренный дибилизм в тяжелой форме) Для кого, спрашивается существует рынок компонентов/библиотек? Единственное требование к сторонним библиотеками -- это наличие исходников.
G>Рынок существет как раз потому что стнадартная библиотека не покрывает необходимости разработки.
Да ни одна библиотека не в состоянии покрыть все потребности...
G>А требование использования только стандартных компонент вполне часто встречается.
Статистика есть, или это очередное бла-бла-бла?
G>Короче устарел твой делфи. После выхода версии 2008 года можно будет подумать.
А что, если контролы получат Юникод, это значит уже модерн попер да?
Здравствуйте, gandjustas, Вы писали:
H>>>>Нет, он не является совместимым с IUnknown т.к. IUnknown не продекларирован в списке реализуемых интерфейсов и реализуешь ты методы не IUnknown, а MyInterface. Я это повторил уже раз десять.
G>>>Поздравляю, ты стодвадцатьпервый раз показал кривость делфи. Хватит уже, все поняли что использование интерфейсов в делфи — огромные грабли. G>>>Слава богу в других языках такого бреда нет.
H>>Ты в очередной раз доказываешь свое непонимание Только и всего.
G>Я-то очень хорошо понимаю, а ты — нет. Тебе не с чем сравнивать
Здравствуйте, gandjustas, Вы писали:
H>>>>И еще раз напишу, чтоб ты понял: Наследование, инкапсуляция и полиморфизм, вот фундамент ООП. Интерфейсы, да приятная штука снимающая зависимости кода, не более того. G>>>Интерфейсы не имеют отношения к наследованию и полиморфизму?
H>>Иметь отношение и являться фундаментальным, есть разница? G>Это словоблудие. Таким же образом классы "не являются фундаментом ООП". G>Классы и интерфейсы являются реализацией принципов ООП.
Классы, и только они, являют собой реализацию фундаментальных принципов (давай еще свойства выдели отдельно ). Если ты разницы не видишь, это не моя проблема.
Здравствуйте, squid, Вы писали:
S>>>>>простой пример — DirectShow. Видел 3 варианта, во всех куча багов и нет Вистовских фич вроде EVR в нормальном виде.
H>>>>DSPack смотрел? Не знаю, как там на счет Вистовых плюшек, но хидеры DirectShow там есть.
S>>>да. крайне бажный и несовременный. временами постю фиксы на их форуме.
H>>Ну, со всеми бывает
S>и в итоге — нужны ОФИЦИАЛЬНЫЕ хидеры. ПОДДЕРЖИВАЕМЫЕ! а иначе — фтопку!
Кому нужны? Одной десятой процента программирующих на ObjectPascal? Нужно же понимать, на что нацелен инструмент... Вот с выходом новых версий переориентируют его немного (а ведь процесс уже пошел), и кто знает, может и будут официальные хидеры (а может и не будет ).
H>>>> В крайнем случае, можно найти подходящий конвертор.
S>>>линк?
H>>Ой, я так давно этим пользовался (помню, что конвертор был от мужика в шляпе, dr.Bob'а)... Ну, вот, что первым попалось. Недавно на delphiplus.org, что-то аналогичное проскакивало в новостях.
S>спасибо, гляну. но если брать сложные вещи вроде GDI+ он точно сольет. там моск нужен. а Борланду пофек на наши нужны. как обычно впрочем.
Разумеется, автоматический конвертор не может обеспечить 100% идейно правильный перевод, но все же лучше чем ничего. Для GDI+ у тех же прогдигов есть классовые обертки, вполне работоспособные (а лучше выкинуть GDI+, а вместо него использовать GR32 + GraphicsEx).
Re[19]: наши менеджеры памяти самые менеджеристые менеджеры
Здравствуйте, Mamut, Вы писали:
H>>>>Главное, решение-то есть.
M>>>Что будем делать, когда стоит ограничение на использование сторонних компонентов?
H>>Заказчик с такими претензиями пойдет туда, где солнце не светит (ибо это обостренный дибилизм в тяжелой форме) Для кого, спрашивается существует рынок компонентов/библиотек? Единственное требование к сторонним библиотеками -- это наличие исходников.
M>Есть, например, гос. заказы, где существует строгое ограничение на использование сторонних компонент (это, конечно, не про Россию, но все же)
Много чего вообще есть... Есть, например, запрет на использование MS Trident (кажется так оно называется), ибо внутренняя секьюрити не позволяет. Будешь лисапед писать? Удачи.
Здравствуйте, Mamut, Вы писали:
H>>>>MyInterface расширяется декларацией IUnknown. MyInterface можно приводить к IUnknown. Это понятно?
H>>>>Жаль, что ты так и не понял... Реализуешь ты тут только MyInterface полученый путем расширения декларации от IUnknown.
M>>>Так кто кого расширяет?
H>>Декларация IMyInterface расширяется декларацией IUnknown.
M>То есть IUnknown никуда не девается?
M>Или дай свое определение понятия расширяется
MyInterface будет содержать декларации методов от IUnknown (но эти декларации будут его декларациями), плюс свои собственные. Мамут, тебе не надоело? Я уже сто раз это написал...
M>>>Давай еще раз, ок?
M>>>
M>>>Какие классы обязан реализовать класс MyClass?
H>>MyClass должен реализовать интерфейс MyInterface.
H>>з.ы. Это только у меня дежа вю?
M>То есть все методы MyInterface плюс все методы IUnknown?
Только методы MyInterface (имеется ввиду, что MyInterface это уже расширеная декларация). Вообще, вопрос реализации отношение имеет только ко классам. Это классу решать, какие интерфейсы он реализует. Вообще, возможен вариант, когда класс будет реализовать и IUnknown и MyInterface, но при этом реализация как-бы-общих-методов будет разной.
Re[20]: наши менеджеры памяти самые менеджеристые менеджеры
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
M>>>>Что будем делать, когда стоит ограничение на использование сторонних компонентов? H>>>Заказчик с такими претензиями пойдет туда, где солнце не светит (ибо это обостренный дибилизм в тяжелой форме) Для кого, спрашивается существует рынок компонентов/библиотек? Единственное требование к сторонним библиотеками -- это наличие исходников.
G>>Рынок существет как раз потому что стнадартная библиотека не покрывает необходимости разработки. H>Да ни одна библиотека не в состоянии покрыть все потребности...
Только .NET и Java почему-то покрывает. Есть конечно некоторые нестандартные решения, о рынке говорить не приходится.
G>>А требование использования только стандартных компонент вполне часто встречается. H>Статистика есть, или это очередное бла-бла-бла?
Я работал на проекте для газпрома, было требование использования только стандартных компонент.
Пара моих знакомых пишут на делфях для военных, требование — не использовать нестандартные компоненты.
G>>Короче устарел твой делфи. После выхода версии 2008 года можно будет подумать. H>А что, если контролы получат Юникод, это значит уже модерн попер да?
Не показывай свое невежество.
Здравствуйте, hattab, Вы писали:
S>>и в итоге — нужны ОФИЦИАЛЬНЫЕ хидеры. ПОДДЕРЖИВАЕМЫЕ! а иначе — фтопку!
H>Кому нужны? Одной десятой процента программирующих на ObjectPascal? Нужно же понимать, на что нацелен инструмент... Вот с выходом новых версий переориентируют его немного (а ведь процесс уже пошел), и кто знает, может и будут официальные хидеры (а может и не будет ).
много кому нужны. Windows SDK посмотри скока народу скачали. хотя забей, ты просто фанатек. тока не линукса а дельфы.
H>>>>> В крайнем случае, можно найти подходящий конвертор.
S>>>>линк?
H>>>Ой, я так давно этим пользовался (помню, что конвертор был от мужика в шляпе, dr.Bob'а)... Ну, вот, что первым попалось. Недавно на delphiplus.org, что-то аналогичное проскакивало в новостях.
S>>спасибо, гляну. но если брать сложные вещи вроде GDI+ он точно сольет. там моск нужен. а Борланду пофек на наши нужны. как обычно впрочем.
H>Разумеется, автоматический конвертор не может обеспечить 100% идейно правильный перевод, но все же лучше чем ничего. Для GDI+ у тех же прогдигов есть классовые обертки, вполне работоспособные (а лучше выкинуть GDI+, а вместо него использовать GR32 + GraphicsEx).
вот-вот. в том виде в котором они выложены на сайт при создании ActiveX — косяк. regsvr32 при регистрации тупо виснет. опять пришлось кучу времени на эту неадекватность потратить.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[21]: наши менеджеры памяти самые менеджеристые менеджеры
Здравствуйте, squid, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
G>>Пара моих знакомых пишут на делфях для военных...
S>ты меня только-что здорово напугал!
Не бойся, не системы наведения ракет они пишут.
Какие-то учетные программы всего лишь