Re[18]: наши менеджеры памяти самые менеджеристые менеджеры
От: Mamut Швеция http://dmitriid.com
Дата: 15.05.08 06:26
Оценка:
H>>>Главное, решение-то есть.

M>>Что будем делать, когда стоит ограничение на использование сторонних компонентов?


H>Заказчик с такими претензиями пойдет туда, где солнце не светит (ибо это обостренный дибилизм в тяжелой форме) Для кого, спрашивается существует рынок компонентов/библиотек? Единственное требование к сторонним библиотеками -- это наличие исходников.


Есть, например, гос. заказы, где существует строгое ограничение на использование сторонних компонент (это, конечно, не про Россию, но все же)
... << RSDN@Home 1.2.0 alpha 4 rev. 1084>>


dmitriid.comGitHubLinkedIn
Re[76]: Чем вам всем не угодил Delphi?
От: Mamut Швеция http://dmitriid.com
Дата: 15.05.08 06:26
Оценка:
H>>>MyInterface расширяется декларацией IUnknown. MyInterface можно приводить к IUnknown. Это понятно?

H>>>Жаль, что ты так и не понял... Реализуешь ты тут только MyInterface полученый путем расширения декларации от IUnknown.


M>>Так кто кого расширяет?


H>Декларация IMyInterface расширяется декларацией IUnknown.


То есть IUnknown никуда не девается?

Или дай свое определение понятия расширяется


M>>Давай еще раз, ок?


M>>
M>>MyInterface : Interface(IUnknown)
M>>    someMethod()
M>>end

M>>MyClass : Class(MyInterface)
M>>


M>>Какие классы обязан реализовать класс MyClass?


H>MyClass должен реализовать интерфейс MyInterface.


H>з.ы. Это только у меня дежа вю?


То есть все методы MyInterface плюс все методы IUnknown?
... << RSDN@Home 1.2.0 alpha 4 rev. 1084>>


dmitriid.comGitHubLinkedIn
Re[76]: Чем вам всем не угодил Delphi?
От: Mamut Швеция http://dmitriid.com
Дата: 15.05.08 06:26
Оценка:
S>А вот Страуструп вовсе разрешает делать приватное наследование от абстрактного класса, и что? Ты точно так же можешь сделать
S>
S>class IMyInterface: private IUnknown
S>{
S>}

S>class myClass: public IMyInterface
S>{
S>  ...
S>}
S>

S>И обломишься на приведении myСlass к IUnknown, хотя все методы будешь обязан реализовать. Делов-то.

Кстати, смысла такого кода не понимаю
... << RSDN@Home 1.2.0 alpha 4 rev. 1084>>


dmitriid.comGitHubLinkedIn
Re[77]: Чем вам всем не угодил Delphi?
От: Sinclair Россия https://github.com/evilguest/
Дата: 15.05.08 06:57
Оценка: 1 (1) +1
Здравствуйте, Mamut, Вы писали:
M>Кстати, смысла такого кода не понимаю
Теперь уже мало кто понимает. Это побочная ветвь развития языков программирования — всякие штуки, которые казались крутыми в начале девяностых, оказались малопригодными на практике.
Ну вот как перегрузка операторов в C++ по отдельности: когда можно сделать так, что (a+=1) !== (a = a + 1). Спрашивается, нахрена?
Или отсутствие явной поддержки интерфейсов, и использование вместо этого абстрактных классов.
Или умение задавать тело для pure virtual method.

Сейчас ведущие языководы придерживаются мнения, что вместо могучих инструментов, побочные возможности которых пригодны для построения полезных эффектов, лучше давать программистам менее мощные, но удобные инструменты, у которых полезные эффекты являются основным назначением.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[13]: присутствие стека
От: WolfHound  
Дата: 15.05.08 10:41
Оценка:
Здравствуйте, Sinclair, Вы писали:

WH>>Я бы не сказал что наличие goto способствует скорости, простоте и надежности верификации кода.

S>Он там ограниченный
Я в курсе.
В любом случае полное его отсутствие сделало бы все проще.

Да и вобще байткод и метаданные что жабы что .NET'а на редкость хреново спроектированны.

S>Дай ссылку на описание этой проблемы, чтоб я впечатлился на досуге.

Ты тут гдето рядом ворчал что народ гуглить не умеет...
http://www.google.com/search?q=funarg+problem
Первая ссылка http://en.wikipedia.org/wiki/Funarg_problem
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[14]: присутствие стека
От: Sinclair Россия https://github.com/evilguest/
Дата: 15.05.08 11:05
Оценка:
Здравствуйте, 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>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[15]: присутствие стека
От: WolfHound  
Дата: 15.05.08 11:42
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>На первый взгляд, шарп делает именно это: при конструировании замыканий захваченные переменные переезжают из стека в хип.

Именно это он и делает.
Другое дело что по уму этим должен заниматься не компилятор шарпа, а JIT.
Дабы компиляторы не изобретали эту оптимизацию каждый раз.

S>Не представляю, чем бы переписывание CLR смогло бы помочь решению funarg problem.

А где я говорил что поможет при решении funarg problem?
Другое дело что это может помочь сделать болие правильные корутины вместо костыля по имени yield return

Хотя чтоб решить этот вопрос совсем капитально и за компанию выкинуть на свалку костыль IDisposable нужно конкретно надругаться над системой типов.
Я сечас думаю несколько вариантов.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[78]: Чем вам всем не угодил Delphi?
От: WolfHound  
Дата: 15.05.08 16:35
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ну почему же. Компилятор будет со страшной силой настаивать, что IMyInterface не имеет никакого отношения к IUnknown. Для того и сделан private, чтобы дети могли скрывать своих родителей. Я не вполне уверен, что есть надежный способ зафорсить приведение не рискуя нарваться на проход по памяти —

Можно (сюрприз) сишным кастом.

S>с множественным наследованием вроде были какие-то хитрости насчет реинтерпрет_каст, но это я просто плюсы очень плохо знаю.

reinterpret_cast просто тупо говорит о том что нужно сменить тип и ничего больше не делать. И ему начхать на последствия.
Полезен этот каст разве что при реализации чегото совсем низкоуровневого.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[78]: Чем вам всем не угодил Delphi?
От: WolfHound  
Дата: 15.05.08 17:07
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

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

Ага. И потом у этих собаководов получаются генерики .NET... нука реализуй Point3D<T> где T любой тип включая int, float,... и пользовательские типы.
Что? Не можешь?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Чем вам всем не угодил Delphi?
От: WolfHound  
Дата: 15.05.08 17:23
Оценка:
Здравствуйте, OCTAGRAM, Вы писали:

OCT>К слову о веб, там не только reflection, там и call/cc бы ещё

У call/cc и его менее кровавого собрата shift/reset есть один фатальный недостаток: Они полностью уничтожают возможность анализа потока исполнения. Те совсем.
И как следствие ни о какой автоматической детерминированной финализации в их присутствии говорить не приходится.
Даже костыль типа IDisposable/using не сделать.

Про мелочи типа тормозного спагетти стека я вобще молчу.

Таким образом приходим к выводу что если нам таки нужна (а на практике она очень нужна) автоматическая детерминированная финализация то на континюэшены придется забить.
Впрочем корутин и исключений вполне достаточно для подавляющего большинства практических задач.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: наши менеджеры памяти самые менеджеристые менеджеры
От: hattab  
Дата: 15.05.08 17:54
Оценка:
Здравствуйте, gandjustas, Вы писали:

M>>>Что будем делать, когда стоит ограничение на использование сторонних компонентов?

H>>Заказчик с такими претензиями пойдет туда, где солнце не светит (ибо это обостренный дибилизм в тяжелой форме) Для кого, спрашивается существует рынок компонентов/библиотек? Единственное требование к сторонним библиотеками -- это наличие исходников.

G>Рынок существет как раз потому что стнадартная библиотека не покрывает необходимости разработки.


Да ни одна библиотека не в состоянии покрыть все потребности...

G>А требование использования только стандартных компонент вполне часто встречается.


Статистика есть, или это очередное бла-бла-бла?

G>Короче устарел твой делфи. После выхода версии 2008 года можно будет подумать.


А что, если контролы получат Юникод, это значит уже модерн попер да?
Re[79]: Чем вам всем не угодил Delphi?
От: hattab  
Дата: 15.05.08 17:56
Оценка:
Здравствуйте, gandjustas, Вы писали:

H>>>>Нет, он не является совместимым с IUnknown т.к. IUnknown не продекларирован в списке реализуемых интерфейсов и реализуешь ты методы не IUnknown, а MyInterface. Я это повторил уже раз десять.


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

G>>>Слава богу в других языках такого бреда нет.

H>>Ты в очередной раз доказываешь свое непонимание Только и всего.


G>Я-то очень хорошо понимаю, а ты — нет. Тебе не с чем сравнивать


Re[81]: Чем вам всем не угодил Delphi?
От: hattab  
Дата: 15.05.08 18:01
Оценка:
Здравствуйте, gandjustas, Вы писали:

H>>>>И еще раз напишу, чтоб ты понял: Наследование, инкапсуляция и полиморфизм, вот фундамент ООП. Интерфейсы, да приятная штука снимающая зависимости кода, не более того.

G>>>Интерфейсы не имеют отношения к наследованию и полиморфизму?

H>>Иметь отношение и являться фундаментальным, есть разница?

G>Это словоблудие. Таким же образом классы "не являются фундаментом ООП".
G>Классы и интерфейсы являются реализацией принципов ООП.

Классы, и только они, являют собой реализацию фундаментальных принципов (давай еще свойства выдели отдельно ). Если ты разницы не видишь, это не моя проблема.
Re[16]: Препроцессоры для Delphi
От: hattab  
Дата: 15.05.08 18:10
Оценка:
Здравствуйте, 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]: наши менеджеры памяти самые менеджеристые менеджеры
От: hattab  
Дата: 15.05.08 18:16
Оценка:
Здравствуйте, Mamut, Вы писали:

H>>>>Главное, решение-то есть.


M>>>Что будем делать, когда стоит ограничение на использование сторонних компонентов?


H>>Заказчик с такими претензиями пойдет туда, где солнце не светит (ибо это обостренный дибилизм в тяжелой форме) Для кого, спрашивается существует рынок компонентов/библиотек? Единственное требование к сторонним библиотеками -- это наличие исходников.


M>Есть, например, гос. заказы, где существует строгое ограничение на использование сторонних компонент (это, конечно, не про Россию, но все же)


Много чего вообще есть... Есть, например, запрет на использование MS Trident (кажется так оно называется), ибо внутренняя секьюрити не позволяет. Будешь лисапед писать? Удачи.
Re[77]: Чем вам всем не угодил Delphi?
От: hattab  
Дата: 15.05.08 18:25
Оценка:
Здравствуйте, Mamut, Вы писали:

H>>>>MyInterface расширяется декларацией IUnknown. MyInterface можно приводить к IUnknown. Это понятно?


H>>>>Жаль, что ты так и не понял... Реализуешь ты тут только MyInterface полученый путем расширения декларации от IUnknown.


M>>>Так кто кого расширяет?


H>>Декларация IMyInterface расширяется декларацией IUnknown.


M>То есть IUnknown никуда не девается?


M>Или дай свое определение понятия расширяется


MyInterface будет содержать декларации методов от IUnknown (но эти декларации будут его декларациями), плюс свои собственные. Мамут, тебе не надоело? Я уже сто раз это написал...

M>>>Давай еще раз, ок?


M>>>
M>>>MyInterface : Interface(IUnknown)
M>>>    someMethod()
M>>>end

M>>>MyClass : Class(MyInterface)
M>>>


M>>>Какие классы обязан реализовать класс MyClass?


H>>MyClass должен реализовать интерфейс MyInterface.


H>>з.ы. Это только у меня дежа вю?


M>То есть все методы MyInterface плюс все методы IUnknown?


Только методы MyInterface (имеется ввиду, что MyInterface это уже расширеная декларация). Вообще, вопрос реализации отношение имеет только ко классам. Это классу решать, какие интерфейсы он реализует. Вообще, возможен вариант, когда класс будет реализовать и IUnknown и MyInterface, но при этом реализация как-бы-общих-методов будет разной.
Re[20]: наши менеджеры памяти самые менеджеристые менеджеры
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 15.05.08 19:24
Оценка: -1
Здравствуйте, hattab, Вы писали:

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


M>>>>Что будем делать, когда стоит ограничение на использование сторонних компонентов?

H>>>Заказчик с такими претензиями пойдет туда, где солнце не светит (ибо это обостренный дибилизм в тяжелой форме) Для кого, спрашивается существует рынок компонентов/библиотек? Единственное требование к сторонним библиотеками -- это наличие исходников.

G>>Рынок существет как раз потому что стнадартная библиотека не покрывает необходимости разработки.

H>Да ни одна библиотека не в состоянии покрыть все потребности...
Только .NET и Java почему-то покрывает. Есть конечно некоторые нестандартные решения, о рынке говорить не приходится.

G>>А требование использования только стандартных компонент вполне часто встречается.

H>Статистика есть, или это очередное бла-бла-бла?
Я работал на проекте для газпрома, было требование использования только стандартных компонент.
Пара моих знакомых пишут на делфях для военных, требование — не использовать нестандартные компоненты.

G>>Короче устарел твой делфи. После выхода версии 2008 года можно будет подумать.

H>А что, если контролы получат Юникод, это значит уже модерн попер да?
Не показывай свое невежество.
Re[17]: Препроцессоры для Delphi
От: squid  
Дата: 15.05.08 19:30
Оценка:
Здравствуйте, 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  
Дата: 15.05.08 20:00
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Пара моих знакомых пишут на делфях для военных...


ты меня только-что здорово напугал!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[22]: наши менеджеры памяти самые менеджеристые менеджеры
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 15.05.08 20:30
Оценка:
Здравствуйте, squid, Вы писали:

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


G>>Пара моих знакомых пишут на делфях для военных...


S>ты меня только-что здорово напугал!


Не бойся, не системы наведения ракет они пишут.
Какие-то учетные программы всего лишь
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.