Здравствуйте, kuj, Вы писали:
kuj>Здравствуйте, iyura, Вы писали:
kuj>>>Еще и как имеет. Java и .NET позволяют бОльшую часть кода покрыть юнит-тестами, и позволяют применять более высокоуровневые техники: IoC, AOP, O/RM ect
I>>Юнит тестами и С++ покрывается.
kuj>Пример interaction testing на C++ в студию.
Ты и в правду считаешь технологии тестирования прерогативой управляемых сред?
I>>IoC, AOP — не знаю, что это. ORM и С++ живет.
kuj>Пример O/RM для C++ (native) в студию.
Погугли
I>>И в чем уникальность .Net и Java?
kuj>Странный вопрос, учитывая, что ты банально их не знаешь.
Здравствуйте, iyura, Вы писали:
kuj>>>>Еще и как имеет. Java и .NET позволяют бОльшую часть кода покрыть юнит-тестами, и позволяют применять более высокоуровневые техники: IoC, AOP, O/RM ect
I>>>Юнит тестами и С++ покрывается.
kuj>>Пример interaction testing на C++ в студию.
I>Ты и в правду считаешь технологии тестирования прерогативой управляемых сред?
Я тебя попросил пример. Покажи мне аналог Moq`а, но для C++.
I>>>IoC, AOP — не знаю, что это. ORM и С++ живет.
kuj>>Пример O/RM для C++ (native) в студию.
I>Погугли
Значит сам не знаешь? Все ясно.
I>>>И в чем уникальность .Net и Java?
kuj>>Странный вопрос, учитывая, что ты банально их не знаешь.
I>Хамишь
Констатирую факт. Чего только стоит твой вопрос про try finally.
Здравствуйте, iyura, Вы писали:
I>Юнит тестами и С++ покрывается.
Так можно говорить только с большой натяжкой.
I>IoC, AOP — не знаю, что это.
Неудивительно
I>ORM и С++ живет.
Не живет.
Покажи ORM хотябы издалека похожий на Linq2SQL
I>И в чем уникальность .Net и Java?
Может сам немного почитаешь?
Здравствуйте, iyura, Вы писали:
I>Здравствуйте, _d_m_, Вы писали:
___>>Не надо путать память и workset. Воспользуйся поиском хотя бы по местному форуму дотнет. Вопрос этот уже набил аскомину.
I>Мнэ.....А в двух словах? Ну искать и вправду долго.
Workset — количество страниц, находящихся в оперативной памяти. Именно эту величину показывает TaskManager. Эта величина никак не коррелирует с общим объемом COMMITED памяти процесса.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, iyura, Вы писали:
I>>Юнит тестами и С++ покрывается. G>Так можно говорить только с большой натяжкой.
Unit testing + C++ в гугле выдает 2 450 000 ссылок. Я не могу и не хочу заниматься анализом всего этого
I>>IoC, AOP — не знаю, что это. G>Неудивительно
Давай так — Aspect-oriented programming.
Тогда так, например, получается http://www.aspectc.org/
Здравствуйте, iyura, Вы писали:
I>>>Юнит тестами и С++ покрывается. G>>Так можно говорить только с большой натяжкой.
I>Unit testing + C++ в гугле выдает 2 450 000 ссылок. Я не могу и не хочу заниматься анализом всего этого
Можешь не стараться. Полноценный unit testing (interaction testing в частности) без reflection не возможен.
I>>>IoC, AOP — не знаю, что это. G>>Неудивительно
I>Давай так — Aspect-oriented programming. I>Тогда так, например, получается http://www.aspectc.org/
Базируется на генерации прокси для эмуляции reflection — костыль.
I>>>ORM и С++ живет. G>>Не живет. G>>Покажи ORM хотябы издалека похожий на Linq2SQL
I>MS не позиционирует LINQ как ORM
Здравствуйте, iyura, Вы писали:
I>Здравствуйте, gandjustas, Вы писали:
I>Unit testing + C++ в гугле выдает 2 450 000 ссылок. Я не могу и не хочу заниматься анализом всего этого
В unit-тестировании немаловажная часть — mock объекты. При отсутствии метаданных придется все писать ручками. Это очень большой оверхед.
I>Давай так — Aspect-oriented programming. I>Тогда так, например, получается http://www.aspectc.org/
Это статическая кодогенерация, при изменении некторых параметров надо перекомпилировать приложение.
В Java и .NET можно обойтись изменением конфига.
I>IoC I>http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8F
Тут имелся ввиду не сам принцип IoC, а т.н. IoC-контейнеры. Для них верно тоже, что и для AOP.
I>>>ORM и С++ живет. G>>Не живет. G>>Покажи ORM хотябы издалека похожий на Linq2SQL I>MS не позиционирует LINQ как ORM
А какая разница? C++ные варианты даже близко не валались к не-до-ORM Linq2sql
I>>>И в чем уникальность .Net и Java? G>>Может сам немного почитаешь? I>Может и ты напряжешься?
Я вроде как на .NET пишу, Java знаю, да и C++ немного понимаю
Здравствуйте, kuj, Вы писали:
kuj>Здравствуйте, _d_m_, Вы писали:
___>>Не курю, глупник. Тебе уже сто раз сказано и на пальцах показано, что тебе еще не понятно? Что, кроме документации по Visual Studio (ака MSDN) ты больше ничего не знаешь и знать не хочешь?
kuj>Есть конкретный документ — спецификация языка C# 3.0, в котором четко написано что такое деструкторы в C#. Если до тебя так туго доходит, то извини — ничем больше помочь не могу.
Тебе уже конкретно пояснили, что этот документ по Visual C# 3.0 составлен из документов ранних версий. Тебе дать ссылку на конкретный документ, стандарт языка ECMA C# 2.0 где слова деструктор нет вообще, а есть слово Finalizer? На вот, если уж с использованием гугля у тебя трудности.
Здравствуйте, Mamut, Вы писали:
H>>MyInterface расширяется декларацией IUnknown. Расширение ни есть наследование. Идеология.
M>Обьясни, что значит расширяется.
M>
M>РАСШИРЯТЬ несов. перех.
M>1. Делать большим по площади.
M>2. Увеличивать в количестве, в объеме.
M>3. перен. Делать более обширным, распространять круг действия чего-л.
M>В любом нормальном понимании (даже не ЯП — а просто понимании) расширение это: M>- мы сохраняем все свойства предыдущей сущности M>- мы добавляем к предыдущей сущности новые свойства
M>И ООП здесь не причем.
Правильно, ООП тут ни при чем.
M>>>То есть AddRef, Release и QueryInterface в нем все равно будут присутствовать? Тогда любой класс, преализующий любой интерфейс будет COM-объектом, потому что в нем есть три необходимых и достаточных для COM метода — AddRef, Release и QueryInterface
H>>Все верно. С чем ты споришь? Класс будет COM-объектом (если таки продекларирует реализацию IUnknown), а MyInterface не будет COM-интерфейсом. Я это уже несколько раз написал.
M>Так как объект, реализующий MyInterface все равно обязан реализовать COM-методы AddRef, Release и QueryInterface, то MyInterface все равно является COM-интерфейсом, в котором есть три COM-совместимых метода
Мамут, ты не прав Для тебя, зебра черная или белая? (она полосатая)
Re[13]: наши менеджеры памяти самые менеджеристые менеджеры
Здравствуйте, Mamut, Вы писали:
H>>Во всех 32-битных версиях AnsiStrings используется по умолчанию.
M>Они уже научились Юникод содержать и выводить на экран?
Юникод присутствует очень давно. В VCL поддержки юникода нет. Есть сторонние компоненты, тот же TNT, с поддержкой юникода. Юникод в VCL будет в Тибуроне (Delphi 2008).
Здравствуйте, gandjustas, Вы писали:
H>>Ни с чем она не расходится и не конфликтует. Интерфейсы, вообще, не являются фундаментальной единицей идеологии ООП. G>Само понятие расширения однозначно соответствует наследованию в ООП. Во многих языках наследование обозначается ключевым словом extends — "расширяет". G>Только в делфи как-то неправильно сделано.
Все правильно сделано. Ты просто понять не можешь.
G>Интерфейсы кстати имеют немалое значение в ООП.
Здравствуйте, Mamut, Вы писали:
H>>>>MyInterface расширяется декларацией IUnknown. Расширение ни есть наследование. Идеология. G>>>Эта идеология расходится с ООП. При том, что COM сам по себе никак с ООП не конфликтует. G>>>Это еще раз доказывает что делфи — плохой язык.
H>>Ни с чем она не расходится и не конфликтует. Интерфейсы, вообще, не являются фундаментальной единицей идеологии ООП.
M>Кто это такое сказал? M>Интерфейс (объектно-ориентированное программирование)
Здравствуйте, kuj, Вы писали:
H>>>>RTTI как раз таки позволяет (и много чего еще позволяет)
kuj>>>Что в таком случае мешает неявно добавить всех предков в таблицу COM (или что там в Delphi в этой роли)?
H>>Мешает неявность. Язык требует явного указания реализуемых интерфейсов. Кстати, этот вопрос (иерархию) вполне можно разруливать в момент компиляции и без всякой RTTI.
kuj>Вот я и говорю, что язык кривой, раз требует явно перечислять всех предков интерфейса... Это ж надо было додуматься
Ну так наследуйся от классов реализующих требуемые интерфейсы, в чем проблема?
Здравствуйте, kuj, Вы писали:
H>>>>MyInterface расширяется декларацией IUnknown. Расширение ни есть наследование. Идеология. G>>>Эта идеология расходится с ООП. При том, что COM сам по себе никак с ООП не конфликтует. G>>>Это еще раз доказывает что делфи — плохой язык.
H>>Ни с чем она не расходится и не конфликтует. Интерфейсы, вообще, не являются фундаментальной единицей идеологии ООП.
kuj>Слышал про одну из основных/фундаментальных техник ОО, называемой инкапсуляцией? Похоже, что нет...
Прикол в том, что инкапсуляция достигается на уровне классов, а ни как не интерфейсов. Инкапсуляция относится к реализации, в то время, как интерфейсы есть суть чистейшая абстракция. Контракт. Интерфейсы повышают степень инкапсуляции? Как посмотреть. Свойства, в данном контексте, куда более значимы для увеличения степени инкапсуляции, но ни кто же не говорит, что они есть фундаментальная единица ООП.
Здравствуйте, Mamut, Вы писали:
kuj>>>>Что в таком случае мешает неявно добавить всех предков в таблицу COM (или что там в Delphi в этой роли)?
H>>>Мешает неявность. Язык требует явного указания реализуемых интерфейсов. Кстати, этот вопрос (иерархию) вполне можно разруливать в момент компиляции и без всякой RTTI.
kuj>>Вот я и говорю, что язык кривой, раз требует явно перечислять всех предков интерфейса... Это ж надо было додуматься
M>Там все гораздо хуже: M>
M>В обоих классах мы обязаны реализовать методы _AddRef, _Release и QueryInterface, потому что так требует их наличие в IUnknown, но MyClass мы не сможем привести к IUnknown. Несмотря на то, что он является наследником IUnknown
Мамут, класс не может являться наследником интерфейса.
M>И эта кривизна называется "идеологией"
Как ты можешь рассуждать об идеологии, в то время как, позволяешь себе подобные высказывания (выделено)
Здравствуйте, AndrewJD, Вы писали:
H>>Передай, пожалуйста, по DCOM, динамический массив из анси-строк. Если при этом у тебя проблем с маршалингом не возникнет, я съем свои носки, а ты сможешь сказать, что в Delphi все интерфейсы COM-совместимы.
AJD>Думаю, с custom маршалером можно будет передать без проблем.
Да. Только после этого называть такой интерфейс COM-совместимым, это все равно, что назвать танк летающим только потому, что он в транспортном самолете находится.
Здравствуйте, squid, Вы писали:
H>> ...CodeGear сообщает о намерениях вести разработки для гетерогенных платформ (пойдем на Linux, MacOS?)
S>они бы хидеры из Windows SDK хоть перевели на Delphi...
Это давно не проблема... У джедаев давно есть полный комплект (JWA), есть конверторы C2Pas.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
H>>>Ни с чем она не расходится и не конфликтует. Интерфейсы, вообще, не являются фундаментальной единицей идеологии ООП. G>>Само понятие расширения однозначно соответствует наследованию в ООП. Во многих языках наследование обозначается ключевым словом extends — "расширяет". G>>Только в делфи как-то неправильно сделано.
H>Все правильно сделано. Ты просто понять не можешь.
Это ты понять не можешь в силу ограниченности кругозора.
G>>Интерфейсы кстати имеют немалое значение в ООП. H>Конечно имеют, кто же спорит.
Ты споришь
Re[14]: наши менеджеры памяти самые менеджеристые менеджеры
H>>>Во всех 32-битных версиях AnsiStrings используется по умолчанию.
M>>Они уже научились Юникод содержать и выводить на экран?
H>Юникод присутствует очень давно. В VCL поддержки юникода нет.
Все. На этом на Дельфи можно ставить крест. Если они за нцать лет так и не удосужились в Юникодном мире в свои собственные стандартные компоненты не вставить Юникод
H> Есть сторонние компоненты, тот же TNT, с поддержкой юникода. Юникод в VCL будет в Тибуроне (Delphi 2008).
Внимательно смотри отличие:
Java — поддержка Юникода нативно
.NET — поддержка Юникода нативно
Qt — поддержка Юникода нативно
Delphi- а вот есть сторонние компоненты...
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, squid, Вы писали:
H>>> ...CodeGear сообщает о намерениях вести разработки для гетерогенных платформ (пойдем на Linux, MacOS?)
S>>они бы хидеры из Windows SDK хоть перевели на Delphi...
H>Это давно не проблема... У джедаев давно есть полный комплект (JWA), есть конверторы C2Pas.
простой пример — DirectShow. Видел 3 варианта, во всех куча багов и нет Вистовских фич вроде EVR в нормальном виде.
начнешь плотно работать — видно сколь криво это сделано. а чтото более бажное и громоздкое чем JVCL вообще сложно представить.