По просьбам трудящихся: Delphi vs C++(VS)
От: DOOM Россия  
Дата: 27.08.03 04:23
Оценка: 4 (2) +1 -9
Сразу некоторые ответы на вопросы, возникшие в этом
Автор: DOOM
Дата: 26.08.03
топике.

Дельфи действительно швыряет EAbstractError при попытке создания экземпляра абстрактного класса, и это правильно, что в именно в run-time, поскольку пусть у меня следующая иерархия классов:
TAbstractClass = class ....
TClass1 = class(TAbstractClass)...
TClass2 = class(TAbstractClass)...
Я хочу создать массив, в котором будут и TClass1 и TClass2 — понятно, что надо создать массив TAbstractClass. В С это можно решить только используя указатели на класс, а в Дельфи есть только указатели на класс, просто это все неявно. И при их организации ООП это единственный способ. Поэтому-то мне и интересно как это сделано в С. К сожалению сейчас у меня нет времени покопаться в VS-ке и погладет как на asm'е все это выглядит.

По поводу того, что у Дельфи меньше возможностей... Приведите хоть один пример, который нельзя реализовать на Дельфи, но можно на C++. Примечание: сразу говорю, что в Дельфи нет макросов, перегрузки операторов и шаблонов, но это все очень, на мой взгляд, сомнительные вещи без которых вполне можно обойтись(макрос меняется inline функцией и результат одинаковый, шаблон вообще автоматизированный Ctrl+Ins,Shift+Ins, а потому плох в использовании, поскольку увеличивает размер конечного продукта).


По поводу IDE — тут по-моему вопросов нет. В дельфи оно факт удобнее.

По поводу библиотек — MFC vs VCL. VCL — действительно объектная библиотека, в которой обработка событий инкапсулированна в объект, а не реализуется посредством вставляемых куда-то макросов и т.п.

Теперь ваща очередь...

15.12.03 10:55: Перенесено из 'Философия программирования'
Re: По просьбам трудящихся: Delphi vs C++(VS)
От: WolfHound  
Дата: 27.08.03 05:01
Оценка: +1
Здравствуйте, DOOM, Вы писали:

DOO>Дельфи действительно швыряет EAbstractError при попытке создания экземпляра абстрактного класса, и это правильно, что в именно в run-time, поскольку пусть у меня следующая иерархия классов:

Не в ту степь занесло...
procedure some
var
  ptr:SomeAbstractClass
begin
  ptr:=SomeAbstractClass.Create;
end

Вопрос: Почему во время КОМПИЛЯЦИИ не происходит ошибки? С++ компилятор при попытке СОЗДАТЬ абстрактный класс будет громко ругаться во время компиляции.

DOO>По поводу того, что у Дельфи меньше возможностей... Приведите хоть один пример, который нельзя реализовать на Дельфи, но можно на C++.

DOO>Примечание: сразу говорю, что в Дельфи нет макросов, перегрузки операторов и шаблонов,
Если без этого то язики почти эквивалентны
DOO>но это все очень, на мой взгляд, сомнительные вещи без которых вполне можно обойтись
А вот это ооочень напрасно
DOO>(макрос меняется inline функцией и результат одинаковый,
Макросы в место инлайн функций спользуют только [censured]...
DOO>шаблон вообще автоматизированный Ctrl+Ins,Shift+Ins, а потому плох в использовании, поскольку увеличивает размер конечного продукта).
Ты спутал с макросами. Шаболы в С++ дают тАкие преймущества что по сравнению с ними некоторое разбухание ехешника это ничто.
Одни смартпоинтеры чего стоят... я давно забыл что существует оператор delete.
А STL это вобще чудо света на дельфях низачно так просто не создашь строго типизированый список ассациотивных массивов
std::list<std::map<std::string, boost::shared_ptr<object> > >
Только не спрашиавй зачем это надо я не знаю но когда понадобится то...

DOO>По поводу IDE — тут по-моему вопросов нет. В дельфи оно факт удобнее.

Ну это дело привычки. По мне вижуловский IDE (когда дело не касается GUI) моного лучше. А если мне понадобится GUI то есть C#, а есть так приспичило анменеджет то можно и на VB6 нарисовать. Да и вконце концов использовать WTL не на много сложнее чем в делфе рисовать.

DOO>По поводу библиотек — MFC vs VCL. VCL — действительно объектная библиотека, в которой обработка событий инкапсулированна в объект, а не реализуется посредством вставляемых куда-то макросов и т.п.

Вот про MFC не надо. Этого динозавра давно пора пристрелить чтобы ни кто не мучался. Все прогрессивное человечество либо уже переползло на WTL либо собирается.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: По просьбам трудящихся: Delphi vs C++(VS)
От: Jenyay http://jenyay.net
Дата: 27.08.03 05:05
Оценка:
Здравствуйте, DOOM, Вы писали:

Надеюсь не дойдет со стадии (Win мы Lin)?

DOO>Дельфи действительно швыряет EAbstractError при попытке создания экземпляра абстрактного класса, и это правильно, что в именно в run-time, поскольку пусть у меня следующая иерархия классов:

DOO>TAbstractClass = class ....
DOO>TClass1 = class(TAbstractClass)...
DOO>TClass2 = class(TAbstractClass)...
DOO>Я хочу создать массив, в котором будут и TClass1 и TClass2 — понятно, что надо создать массив TAbstractClass. В С это можно решить только используя указатели на класс, а в Дельфи есть только указатели на класс, просто это все неявно. И при их организации ООП это единственный способ. Поэтому-то мне и интересно как это сделано в С. К сожалению сейчас у меня нет времени покопаться в VS-ке и погладет как на asm'е все это выглядит.

В С++ компилятор не дает сделать экземпляр абстрактного класса, т.е. ошибка найдется еще при компиляции.

DOO>По поводу того, что у Дельфи меньше возможностей... Приведите хоть один пример, который нельзя реализовать на Дельфи, но можно на C++.

DOO>Примечание: сразу говорю, что в Дельфи нет макросов, перегрузки операторов и шаблонов, но это все очень, на мой взгляд, сомнительные вещи без которых вполне можно обойтись(макрос меняется inline функцией и результат одинаковый, шаблон вообще автоматизированный Ctrl+Ins,Shift+Ins, а потому плох в использовании, поскольку увеличивает размер конечного продукта).

С перегрузкой как-то красивее будет.

DOO>По поводу IDE — тут по-моему вопросов нет. В дельфи оно факт удобнее.


А вот здесь совсем не согласен (пишу по впечатлениям от Билдера):
1. В Дельфях/Билдере тормозят подсказки (метода класса), когда в VC все быстро.
2. В студии сами ставятся закрывающиеся } (Или это уже VA?)

Что-то не нравилось еще, но это было давно, поэтому не помню. А если поставить VisualAssist, то после него не то что с Дельфей невозможно работать, со студией без этого Assist.
... << RSDN@Home 1.1 beta 1 >>
Софт, исходники и фото
Re[2]: По просьбам трудящихся: Delphi vs C++(VS)
От: DOOM Россия  
Дата: 27.08.03 05:19
Оценка:
Здравствуйте, Jenyay, Вы писали:

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


J>Надеюсь не дойдет со стадии (Win мы Lin)?


Кстати, совсем забыл!!! Библиотеки Дельфи кросс-платформенные!

J>В С++ компилятор не дает сделать экземпляр абстрактного класса, т.е. ошибка

найдется еще при компиляции.

Сейчас не помню, но по-моему при компиляции дельфи warning выдаст.

J>С перегрузкой как-то красивее будет.


Да перегрузка операторов это хорошо. Но, когда я увидел, что у _bstr_t перегружен char * — меня это возмутило, ведь это в корне не верно!

DOO>>По поводу IDE — тут по-моему вопросов нет. В дельфи оно факт удобнее.


J>А вот здесь совсем не согласен (пишу по впечатлениям от Билдера):

J>1. В Дельфях/Билдере тормозят подсказки (метода класса), когда в VC все быстро.

В дельфи не встречал такого. Может в Builder'e. Меня как раз возмутило, что, если в VS хочешь посмотреть объявление чего-то, то надо откомпилить поект в начале(на моем PIII 600 это долго(!)). А в дельфи навел мышью и уже пишут в каком файле, в какой строке. А если нажел Ctrl и щелкнул мышью, то моментально перейдешь туда.


J>2. В студии сами ставятся закрывающиеся } (Или это уже VA?)


Это VA и эту вещь я вырубил. Больше мешает.

J>Что-то не нравилось еще, но это было давно, поэтому не помню. А если поставить VisualAssist, то после него не то что с Дельфей невозможно работать, со студией без этого Assist.


Да VA сильно улучшает VS, но у моего коллеги после VA полностью заглючил ClassWizard...
Re[2]: По просьбам трудящихся: Delphi vs C++(VS)
От: DOOM Россия  
Дата: 27.08.03 05:33
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


WH>
WH>procedure some
WH>var
WH>  ptr:SomeAbstractClass
WH>begin
WH>  ptr:=SomeAbstractClass.Create;
WH>end
WH>

WH>Вопрос: Почему во время КОМПИЛЯЦИИ не происходит ошибки? С++ компилятор при попытке СОЗДАТЬ абстрактный класс будет громко ругаться во время компиляции.

По-моему есть warning. Но сейчас сказать точно не могу.
А по поводу exception — в Дельфи базовый класс TException позволяет видеть что же случилось, даже если ты его не ловишь.


DOO>>По поводу того, что у Дельфи меньше возможностей... Приведите хоть один пример, который нельзя реализовать на Дельфи, но можно на C++.

DOO>>Примечание: сразу говорю, что в Дельфи нет макросов, перегрузки операторов и шаблонов,
WH>Если без этого то язики почти эквивалентны

DOO>>(макрос меняется inline функцией и результат одинаковый,

WH>Макросы в место инлайн функций спользуют только [censured]...
Конкретнее. В чем разница?


DOO>>шаблон вообще автоматизированный Ctrl+Ins,Shift+Ins, а потому плох в использовании, поскольку увеличивает размер конечного продукта).

WH>Ты спутал с макросами. Шаболы в С++ дают тАкие преймущества что по сравнению с ними некоторое разбухание ехешника это ничто.

В одной книжке я встретил правильную фразу, дословно не помню, что-то вроде, что существует объектно ориентированное пргораммирование и шаблонное программирование.
Очень разные вещи, поскольку в STL нет никакого наследования, например.

WH>Одни смартпоинтеры чего стоят... я давно забыл что существует оператор delete.

WH>А STL это вобще чудо света на дельфях низачно так просто не создашь строго типизированый список ассациотивных массивов
WH>std::list<std::map<std::string, boost::shared_ptr<object> > >
WH>Только не спрашиавй зачем это надо я не знаю но когда понадобится то...

А указатели-то никто не отменял. Все можно творить используя их. И логика программы по-моему тогда на порядок понятнее.
Мне просто это больше нравится(ну просто псле программирования на asm'е появились такие привычки)




WH>Вот про MFC не надо. Этого динозавра давно пора пристрелить чтобы ни кто не мучался. Все прогрессивное человечество либо уже переползло на WTL либо собирается.


Видимо MS это не прогрессивное человечество . Все ведь говорят, что WTL больше не поддерживается и не документируется.
Re[3]: По просьбам трудящихся: Delphi vs C++(VS)
От: Jenyay http://jenyay.net
Дата: 27.08.03 05:55
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Кстати, совсем забыл!!! Библиотеки Дельфи кросс-платформенные!


Ну к Сям тоже можно найти кроссплатформенные.

J>>С перегрузкой как-то красивее будет.


DOO>Да перегрузка операторов это хорошо. Но, когда я увидел, что у _bstr_t перегружен char * — меня это возмутило, ведь это в корне не верно!


А что за _bstr_t? А вообще испахабить все можно.

DOO>В дельфи не встречал такого. Может в Builder'e. Меня как раз возмутило, что, если в VS хочешь посмотреть объявление чего-то, то надо откомпилить поект в начале(на моем PIII 600 это долго(!)). А в дельфи навел мышью и уже пишут в каком файле, в какой строке. А если нажел Ctrl и щелкнул мышью, то моментально перейдешь туда.


А зачем компилить? Или я этим не пользовался. VA вверху вроде бы пишет объявление (я этим как-то редко пользуюсь).

J>>2. В студии сами ставятся закрывающиеся } (Или это уже VA?)


DOO>Это VA и эту вещь я вырубил. Больше мешает.


Впранципе, про IDE спорить вообще бесполезно — слишком субъективно, а при желании можно найти другой редактор.

J>>Что-то не нравилось еще, но это было давно, поэтому не помню. А если поставить VisualAssist, то после него не то что с Дельфей невозможно работать, со студией без этого Assist.


DOO>Да VA сильно улучшает VS, но у моего коллеги после VA полностью заглючил ClassWizard...


У меня вроде бы нет.
... << RSDN@Home 1.1 beta 1 >>
Софт, исходники и фото
Re[3]: По просьбам трудящихся: Delphi vs C++(VS)
От: Jenyay http://jenyay.net
Дата: 27.08.03 05:55
Оценка: +1
Здравствуйте, DOOM, Вы писали:

DOO>>>(макрос меняется inline функцией и результат одинаковый,

WH>>Макросы в место инлайн функций спользуют только [censured]...
DOO>Конкретнее. В чем разница?

Да потому что макросы заменяются до компиляции и можно долго смотреть на одну строчку с ошибками компиляции, а она окажется в макросе. Где-то был хороший пример с max, сейчас уже некогда — если до вечера не напишут — попытаюсь найти.

DOO>>>шаблон вообще автоматизированный Ctrl+Ins,Shift+Ins, а потому плох в использовании, поскольку увеличивает размер конечного продукта).

WH>>Ты спутал с макросами. Шаболы в С++ дают тАкие преймущества что по сравнению с ними некоторое разбухание ехешника это ничто.

DOO>В одной книжке я встретил правильную фразу, дословно не помню, что-то вроде, что существует объектно ориентированное пргораммирование и шаблонное программирование.

DOO>Очень разные вещи, поскольку в STL нет никакого наследования, например.

Насчет STL не знаю — как то не приходилось от них ничего наследовать (хотя, вроде бы можно), но никто не мешает сувать шаблоны в свои классы и наследовать от них.

WH>>Одни смартпоинтеры чего стоят... я давно забыл что существует оператор delete.

WH>>А STL это вобще чудо света на дельфях низачно так просто не создашь строго типизированый список ассациотивных массивов
WH>>std::list<std::map<std::string, boost::shared_ptr<object> > >
WH>>Только не спрашиавй зачем это надо я не знаю но когда понадобится то...

DOO>А указатели-то никто не отменял. Все можно творить используя их. И логика программы по-моему тогда на порядок понятнее.

DOO>Мне просто это больше нравится(ну просто псле программирования на asm'е появились такие привычки)

Так со смартпоинтерами можно не бояться, что забудешь освободить память.

WH>>Вот про MFC не надо. Этого динозавра давно пора пристрелить чтобы ни кто не мучался. Все прогрессивное человечество либо уже переползло на WTL либо собирается.


DOO>Видимо MS это не прогрессивное человечество . Все ведь говорят, что WTL больше не поддерживается и не документируется.


А зачем на м MS
... << RSDN@Home 1.1 beta 1 >>
Софт, исходники и фото
Re[3]: По просьбам трудящихся: Delphi vs C++(VS)
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 27.08.03 06:02
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Видимо MS это не прогрессивное человечество . Все ведь говорят, что WTL больше не поддерживается и не документируется.


что значит "больше"? разве WTL когда поддерживалась или документировалась MS официально?
Re[4]: По просьбам трудящихся: Delphi vs C++(VS)
От: DOOM Россия  
Дата: 27.08.03 06:10
Оценка: -3
Здравствуйте, Jenyay, Вы писали:

J>Да потому что макросы заменяются до компиляции и можно долго смотреть на одну строчку с ошибками компиляции, а она окажется в макросе. Где-то был хороший пример с max, сейчас уже некогда — если до вечера не напишут — попытаюсь найти.


Дак это плюсы макросов что ли? По-моему Вы не ту точку зрения стали отстаивать
И вообще — макром наворот текстового редактора, а не языка.

DOO>>>>шаблон вообще автоматизированный Ctrl+Ins,Shift+Ins, а потому плох в использовании, поскольку увеличивает размер конечного продукта).

WH>>>Ты спутал с макросами. Шаболы в С++ дают тАкие преймущества что по сравнению с ними некоторое разбухание ехешника это ничто.

DOO>>В одной книжке я встретил правильную фразу, дословно не помню, что-то вроде, что существует объектно ориентированное пргораммирование и шаблонное программирование.

DOO>>Очень разные вещи, поскольку в STL нет никакого наследования, например.

J>Насчет STL не знаю — как то не приходилось от них ничего наследовать (хотя, вроде бы можно), но никто не мешает сувать шаблоны в свои классы и наследовать от них.


Получается очень странный малопонятный гибрид. Пример:

template <class T>
class CTemplateClass
{
  T member;
}
class CSon1 : public CTemplateClass<class1>
{
}
class CSon2 : public CTemplateClass<class2>

И что в итоге получается? CSon1 и CSon2 сложно называть детьми CTemplateClass.




J>Так со смартпоинтерами можно не бояться, что забудешь освободить память.


Волков бояться в лес не ходить
В JScript и выделять-тоо память не обязательно, но это не плюс по-моему.

Я предпочитаю и сам конструктор вызвать и деструктор. И как-то использование owner у TComponent прозрачнее и понятнее.


J>А зачем нам MS


Мне на работе сказали WTL — хорошо, но MS не поддерживает. Поэтому пиши на MFC.
Re[4]: По просьбам трудящихся: Delphi vs C++(VS)
От: DOOM Россия  
Дата: 27.08.03 06:18
Оценка: -1
Здравствуйте, Jenyay, Вы писали:

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


DOO>>Кстати, совсем забыл!!! Библиотеки Дельфи кросс-платформенные!


J>Ну к Сям тоже можно найти кроссплатформенные.


J>>>С перегрузкой как-то красивее будет.


DOO>>Да перегрузка операторов это хорошо. Но, когда я увидел, что у _bstr_t перегружен char * — меня это возмутило, ведь это в корне не верно!


J>А что за _bstr_t? А вообще испахабить все можно.


_bstr_t это из той же серии, что _com_ptr(смарт пойнтер кстати), _variant_t — и т.д. Какие-то MSовские типы данных для поддержки COM, но не ATL.
Ну ладно, отвлечемся, а как еще удобно BSTR'ами работать?

DOO>>В дельфи не встречал такого. Может в Builder'e. Меня как раз возмутило, что, если в VS хочешь посмотреть объявление чего-то, то надо откомпилить поект в начале(на моем PIII 600 это долго(!)). А в дельфи навел мышью и уже пишут в каком файле, в какой строке. А если нажел Ctrl и щелкнул мышью, то моментально перейдешь туда.


J>А зачем компилить? Или я этим не пользовался. VA вверху вроде бы пишет объявление (я этим как-то редко пользуюсь).


Елси я хочу, например, посмотреть что такое AFX_INLINE я нажимаю правую кнопку и вызываю Go to definition.

J>>>2. В студии сами ставятся закрывающиеся } (Или это уже VA?)


DOO>>Это VA и эту вещь я вырубил. Больше мешает.


J>Впранципе, про IDE спорить вообще бесполезно — слишком субъективно, а при желании можно найти другой редактор.


В принципе да.
Но языка Дельфи нет. Есть слегка расширенный object pascal и IDE.
J>>>Что-то не нравилось еще, но это было давно, поэтому не помню. А если поставить VisualAssist, то после него не то что с Дельфей невозможно работать, со студией без этого Assist.

DOO>>Да VA сильно улучшает VS, но у моего коллеги после VA полностью заглючил ClassWizard...


J>У меня вроде бы нет.


У меня тоже вроде нет. Но VS вообще довольно глючная...
Re[5]: По просьбам трудящихся: Delphi vs C++(VS)
От: centurn Россия  
Дата: 27.08.03 08:19
Оценка: +1
J>>Да потому что макросы заменяются до компиляции и можно долго смотреть на одну строчку с ошибками компиляции, а она окажется в макросе. Где-то был хороший пример с max, сейчас уже некогда — если до вечера не напишут — попытаюсь найти.

#define max(a,b)    (((a) > (b)) ? (a) : (b))

int a=5, b=5;
max(a++, b)

классика...

DOO>Дак это плюсы макросов что ли? По-моему Вы не ту точку зрения стали отстаивать

DOO>И вообще — макром наворот текстового редактора, а не языка.

Да ту все... Смысл в том, что макросы плохо, но все же лучше, чем copy-paste, и у них есть гораздо более важные применения, чем inline-функции, а вот шаблонные функции гораздо лучше макросов. И опять же, шаблонные функции — только самое очевидное и примитивное применение шаблонов.
А вот что такого есть в Делфях кроме copy-paste?


J>>Насчет STL не знаю — как то не приходилось от них ничего наследовать (хотя, вроде бы можно), но никто не мешает сувать шаблоны в свои классы и наследовать от них.

DOO>Получается очень странный малопонятный гибрид. Пример:
...

DOO>И что в итоге получается? CSon1 и CSon2 сложно называть детьми CTemplateClass.


Они дети специализированного CTemplateClass. А вообще-то может так подразумевалось?
template <class T>
class CTemplateClass
{
 T member;
}
template <class T>
class CSon : public CTemplateClass<T>
{
}

Так можно. Честно. Кстати, STL сама обычно использует наследование шаблонов налево и направо. Можно глянуть ее реализацию...

И вообще сила шаблонов в инстанциациях (то, что именно в этот момент увязываются зависимые вещи) — например, благодаря этому в вещи вроде for_each можно подать и функцию, и функтор. А главное — специализации. С их помощью можно делать действительно мощные и легко изменяемые вещи с проверкой на этапе компиляции и максимально эффективно по времени выполнения — все из-за возможности обойтись без всяких там RTTI...

DOO>Я предпочитаю и сам конструктор вызвать и деструктор. И как-то использование owner у TComponent прозрачнее и понятнее.


А забыть вызвать деструктор в случае "ветвистого" кода, например?
В C++ я могу создавать автоматические объекты, а могу, если надо, сам говорить, года ему создасться, а когда умереть. Всегда лучше, если есть выбор...

J>>А зачем нам MS


DOO>Мне на работе сказали WTL — хорошо, но MS не поддерживает. Поэтому пиши на MFC.
Re: По просьбам трудящихся: Delphi vs C++(VS)
От: Аноним  
Дата: 27.08.03 08:51
Оценка: +2
Про технические вещи спорить даже как-то не охота.
Сравнивать шаблоны с копи-пейстом — это просто не понимать, что такое шаблоны.

Мне лично вообще все равно, на чем писать.
Если задача интересная, то и на Бейсике буду,
и на Делфи и вообще на чем угодно.

Еще один факт. Число инсталляций VS значительно больше,
чем продукта от Борланда.
Это означает, что работы для того, кто владеет VS больше,
чем работы для дельфистов.
Причем не просто работы, а интересной работы.
Для меня это гораздо больше значит, чем маниакальная любовь
одной группы программеров к одному продукту и такая же нелюбовь к другому.
Re[2]: По просьбам трудящихся: Delphi vs C++(VS)
От: DOOM Россия  
Дата: 27.08.03 10:05
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>Еще один факт. Число инсталляций VS значительно больше,

А>чем продукта от Борланда.
А>Это означает, что работы для того, кто владеет VS больше,
А>чем работы для дельфистов.
А>Причем не просто работы, а интересной работы.
А>Для меня это гораздо больше значит, чем маниакальная любовь
А>одной группы программеров к одному продукту и такая же нелюбовь к другому.

Я ни разу не попадал на такую работу, чтоб мне сказали, вот тебе задача, пиши на чем хочешь. Всегда на работе говорят: пиши на том-то. К сожалению, мне нравиться(сложилось так) паскаль и все, что из него выросло, а везде заставляют писать на С. Причем видел я и такой идиолтизм как написание достаточного громоздского интерфейса средствами чистого API. Больно было смотреть как маятся люди, делая тривиальные вещи, стоит только начать использовать VCL.
Re[6]: По просьбам трудящихся: Delphi vs C++(VS)
От: DOOM Россия  
Дата: 27.08.03 10:16
Оценка:
Здравствуйте, centurn, Вы писали:

C> Да ту все... Смысл в том, что макросы плохо, но все же лучше, чем copy-paste, и у них есть гораздо более важные применения, чем inline-функции, а вот шаблонные функции гораздо лучше макросов. И опять же, шаблонные функции — только самое очевидное и примитивное применение шаблонов.

C> А вот что такого есть в Делфях кроме copy-paste?

class reference, ключевые слова is и as и т.п. Хотя, конечно, надо будет все писать самому и очень аккуратно.


J>>>Насчет STL не знаю — как то не приходилось от них ничего наследовать (хотя, вроде бы можно), но никто не мешает сувать шаблоны в свои классы и наследовать от них.

DOO>>Получается очень странный малопонятный гибрид. Пример:
C>...

DOO>>И что в итоге получается? CSon1 и CSon2 сложно называть детьми CTemplateClass.


C> Они дети специализированного CTemplateClass. А вообще-то может так подразумевалось?

C>
C>template <class T>
C>class CTemplateClass
C>{
C> T member;
C>}
C>template <class T>
C>class CSon : public CTemplateClass<T>
C>{
C>}
C>

C> Так можно. Честно. Кстати, STL сама обычно использует наследование шаблонов налево и направо. Можно глянуть ее реализацию...

Глядел... выглядит жутковато.

C> все из-за возможности обойтись без всяких там RTTI...


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

DOO>>Я предпочитаю и сам конструктор вызвать и деструктор. И как-то использование owner у TComponent прозрачнее и понятнее.


C> А забыть вызвать деструктор в случае "ветвистого" кода, например?

C> В C++ я могу создавать автоматические объекты, а могу, если надо, сам говорить, года ему создасться, а когда умереть. Всегда лучше, если есть выбор...

В дельфи есть property owner у TComponent — которое, тоже контролирует время жизни объектов, причем не зависимо от языка — это можно реализовать и в С.

И например в Дельфи я могу сделать такой юнит:
Есть некий объект, который должен быть создан, но ровно один раз, хотя сам по себе не будет использоваться(напрямую), но его будут скрыто использовать другие объекты. Это все можно написать так, что человек, использующий этот модуль не должен даже будет забивать себе голову такими премудростями.
Re[7]: По просьбам трудящихся: Delphi vs C++(VS)
От: WolfHound  
Дата: 27.08.03 10:33
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>И например в Дельфи я могу сделать такой юнит:

DOO>Есть некий объект, который должен быть создан, но ровно один раз, хотя сам по себе не будет использоваться(напрямую), но его будут скрыто использовать другие объекты. Это все можно написать так, что человек, использующий этот модуль не должен даже будет забивать себе голову такими премудростями.
Можно подумать что в С++ это нельзя сделать
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: По просьбам трудящихся: Delphi vs C++(VS)
От: centurn Россия  
Дата: 27.08.03 13:38
Оценка:
C>> Так можно. Честно. Кстати, STL сама обычно использует наследование шаблонов налево и направо. Можно глянуть ее реализацию...
DOO>Глядел... выглядит жутковато.

Эт с непривычки... Впрочем, их внутренние имена порой имхо действительно странноватые...

C>> все из-за возможности обойтись без всяких там RTTI...

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

А что обычно более важный критерий оптимизации — объем, или скорость. Уж по скорости-то шаблоны занимают _минимум_. Там, где вместо RTTI — вообще 0 на этапе выполнения.
А если критичен объем... Что ж, можно писАть и так, чтобы объем был минимален...

DOO>И например в Дельфи я могу сделать такой юнит:

DOO>Есть некий объект, который должен быть создан, но ровно один раз, хотя сам по себе не будет использоваться(напрямую), но его будут скрыто использовать другие объекты. Это все можно написать так, что человек, использующий этот модуль не должен даже будет забивать себе голову такими премудростями.

Интересный аргумент. Статические и anonymous namespace переменные в С++, насколько мне известно, еще никто не отменял... Как и побочные действия конструкторов (иногда бывает очень полезно).
Re: По просьбам трудящихся: Delphi vs C++(VS)
От: LaptevVV Россия  
Дата: 27.08.03 13:54
Оценка: 2 (1)
Здравствуйте, DOOM, Вы писали:

DOO>Теперь ваща очередь...

Давайте не путать язык, компилятор и IDE.
1. Язык. С++ ИМНО богаче будет. Как раз за счет перегрузки операций и шаблонов. В остальном ИМХО — совпадают.
Но!!! STL, как ни крути, стандарт С++! до чего Дельфям топать и топать.
2. IDE — ИМХО дело вкуса.
3. Компилер — тут, без сомнения, дельфи по скорости давит все с++компилеры.

Кто возразит?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: По просьбам трудящихся: Delphi vs C++(VS)
От: bkat  
Дата: 27.08.03 13:59
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Здравствуйте, Аноним, Вы писали:


А>>Еще один факт. Число инсталляций VS значительно больше,

А>>чем продукта от Борланда.
А>>Это означает, что работы для того, кто владеет VS больше,
А>>чем работы для дельфистов.
А>>Причем не просто работы, а интересной работы.
А>>Для меня это гораздо больше значит, чем маниакальная любовь
А>>одной группы программеров к одному продукту и такая же нелюбовь к другому.

DOO>Я ни разу не попадал на такую работу, чтоб мне сказали, вот тебе задача, пиши на чем хочешь. Всегда на работе говорят: пиши на том-то. К сожалению, мне нравиться(сложилось так) паскаль и все, что из него выросло, а везде заставляют писать на С. Причем видел я и такой идиолтизм как написание достаточного громоздского интерфейса средствами чистого API. Больно было смотреть как маятся люди, делая тривиальные вещи, стоит только начать использовать VCL.


Это только подверждает мои слова.
Выбор инструмента разработки — это не только твое (или мое) личное желание,
а куча других факторов, про которые ты видимо не очень то думаешь.
Например, наработанные командой библиотеки, знание средтсва разработки другими
членами команды, стоимость средтства разработки и прочее.
Так вот, по совокупности факторов на рынке сложилась такая ситуация,
что число инсталляция VS больше, чем Дельфи.
Ты думаешь это случайно?

PS Прошу прощения, что прошлое сообщение отправил как Аноним
Re: По просьбам трудящихся: Delphi vs C++(VS)
От: mihailik Украина  
Дата: 27.08.03 14:18
Оценка:
Забей. Это уже устаревший вопрос.

Все нормальные Дельфисты переезжают или уже переехали под Microsoft .NET. Архитектура — тот же Дельфи, но библиотеки поразнообразнее, поудобнее, и вообщё всё поновее.
... << RSDN@Home 1.1 beta 1 >>
Re[5]: По просьбам трудящихся: Delphi vs C++(VS)
От: Jenyay http://jenyay.net
Дата: 27.08.03 15:30
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Дак это плюсы макросов что ли? По-моему Вы не ту точку зрения стали отстаивать

DOO>И вообще — макром наворот текстового редактора, а не языка.

Так я это, наоборот про минусы.

DOO>Получается очень странный малопонятный гибрид. Пример:


DOO>
DOO>template <class T>
DOO>class CTemplateClass
DOO>{
DOO>  T member;
DOO>}
DOO>class CSon1 : public CTemplateClass<class1>
DOO>{
DOO>}
DOO>class CSon2 : public CTemplateClass<class2>
DOO>

DOO>И что в итоге получается? CSon1 и CSon2 сложно называть детьми CTemplateClass.

И, имхо, ничего особенного. В WTL наподобие такого с окнами вытворяют.

DOO>Волков бояться в лес не ходить

DOO>В JScript и выделять-тоо память не обязательно, но это не плюс по-моему.

Так тут другое дело, что память и выделяется и освобождается, когда надо, но сама. Хотя такими указателями я сам редко пользуюсь, но это не из-за глючности, а просто редко бывает запутанный код, что можно забыть освободить. Просто я стараюсь сразу после выделения памяти писать, где она освобождается.

J>>А зачем нам MS


DOO>Мне на работе сказали WTL — хорошо, но MS не поддерживает. Поэтому пиши на MFC.


Ну это уже вопрос к начальству. Хотя позиция странная.
... << RSDN@Home 1.1 beta 1 >>
Софт, исходники и фото
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.