Re[11]: Отличие Visual C++ от Builder C++
От: rebus  
Дата: 13.03.03 17:29
Оценка:
Здравствуйте, WolfHound, Вы писали:

R>>На счет шаблонов, что-то странное, у меня особых проблем как раз в BCB с ними небыло. Может хоть покажешь в чем эти проблемы заключались?

WH>http://www.rsdn.ru/File/620/Ref.h
WH>Попробуй портируй этот фаил.

У меня сейчас нет BCB под рукой, но я увидел в твоем коде некоторые странности (да простят меня местные гуру, если я глупости начну говорить):

class C_RefWeakBase
{
    friend class T_RefCOMBase;
//...
};


В то время, как T_RefCOMBase — шаблон — что ни есть правильно... при определение как friend должно быть указание что это шаблон, например написать:

class C_RefWeakBase
{
    template<class C> friend class T_RefCOMBase;
//...
};


либо:

class C_RefWeakBase
{
    friend class T_RefCOMBase<void**>;
//...
};

etc...
И так по всему тексту..
Посмотри стандарт, помоему — 14.5.x — x не помню, но название — Friends.
... << RSDN@Home 1.0 beta 6a >>
Re[12]: Отличие Visual C++ от Builder C++
От: WolfHound  
Дата: 13.03.03 20:17
Оценка:
Здравствуйте, rebus, Вы писали:
BCB просит так
    template<class P_Type>friend class T_RefWeak<P_Type>;

Но это мелочи...там еще куча проблем которые не получается решить...разве что сносом защиты что есть очень плохо.

А как тебе такой перл
    T_RefStrong<I_FactorysContainer>    container;
...
    bool isReady()const {return container!=0;}

говорит не могу выбрать между
    operator const P_Type*()    const{return m_ptr;}
    operator P_Type*()            {return m_ptr;}

А вызов неконстантных функций внутри константных считает варнингом и на том спасибо хорошо что совсем не игнорирует.
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: Отличие Visual C++ от Builder C++
От: rebus  
Дата: 13.03.03 22:03
Оценка:
Здравствуйте, WolfHound, Вы писали:

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

WH>BCB просит так
WH>
WH>    template<class P_Type>friend class T_RefWeak<P_Type>;
WH>

WH>Но это мелочи...

Стандарт — это мелочи???

WH>А как тебе такой перл

WH>
WH>    T_RefStrong<I_FactorysContainer>    container;
WH>...
WH>    bool isReady()const {return container!=0;}
WH>

WH>говорит не могу выбрать между
WH>
WH>    operator const P_Type*()    const{return m_ptr;}
WH>    operator P_Type*()            {return m_ptr;}
WH>


Правильно говорит — тут ведь неоднозначность на лицо, т.к. возвращаемые типы не участвуют в разрешении неоднозначности, при перегрузке функций и операторов...

WH>А вызов неконстантных функций внутри константных считает варнингом и на том спасибо хорошо что совсем не игнорирует.

Да, это точно, он такое делает Ворнинги отрубаешь на время и думаешь что все правильно, а потом на тебе
Вот код (кстати тоже константность), на который он тоже ворнингом отругался:
#include <iostream>
class Sample
{
mutable int x;
mutable int y;
public:
    Sample():x(0),y(0){};
    void Add_x();
    void Add_y() const;
};

void Sample::Add_x()
{
    x++;
}
void Sample::Add_y() const
{
    y++;
}

int main(int argc, char* argv[])
{

    const Sample D2;
    Sample D1;
    D1.Add_y();
    D2.Add_x();// <---- Ошибка в VC++ 6,7 и ворнинг в Builder 6
    return 0;
}

В реальном коде я догло пытался понять почему не работает в VC, после переноса из Билдера...
... << RSDN@Home 1.0 beta 6a >>
Re[14]: Отличие Visual C++ от Builder C++
От: WolfHound  
Дата: 14.03.03 05:55
Оценка:
Здравствуйте, rebus, Вы писали:

WH>>
WH>>    template<class P_Type>friend class T_RefWeak<P_Type>;
WH>>

WH>>Но это мелочи...
R>Стандарт — это мелочи???
Нет но в данном случае это скорее расширение со стороны вижула.

WH>>
WH>>    operator const P_Type*()    const{return m_ptr;}
WH>>    operator P_Type*()            {return m_ptr;}
WH>>


R>Правильно говорит — тут ведь неоднозначность на лицо, т.к. возвращаемые типы не участвуют в разрешении неоднозначности, при перегрузке функций и операторов...

Разве? Обрати внимание на const.


R>В реальном коде я догло пытался понять почему не работает в VC, после переноса из Билдера...

Во во а когда переносишь из VC в BCB там тАкое начинается
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[15]: Отличие Visual C++ от Builder C++
От: rebus  
Дата: 14.03.03 17:11
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


WH>>>
WH>>>    template<class P_Type>friend class T_RefWeak<P_Type>;
WH>>>

WH>>>Но это мелочи...
R>>Стандарт — это мелочи???
WH>Нет но в данном случае это скорее расширение со стороны вижула.

— одна из причин сложности переноса приложений... Так что не только билдер во всем виноват
Будим считать ворнинги, вместо ошибок у билдера — тоже его расширением

WH>>>
WH>>>    operator const P_Type*()    const{return m_ptr;}
WH>>>    operator P_Type*()            {return m_ptr;}
WH>>>


WH>Разве? Обрати внимание на const.


Ну вобщем надо смотреть на всесь твой код, чтоб иметь все представление об объектах их их возможностях, а то выводов можно сделать кучу, но только все это неправильно будет

Всеже попробую поразмышлять, как я все понял...

Я тут у Страуструпа посмотрел, так у него написано:

"Константную функцию-член можно вызвать как для константного, так и неконстантного объекта, в то время, как неконстантную функцию-член, можно вызвать только для объекта, не являющегося константой" 10.2.6


Отсюда, можно сделать вывод (беря в расчет твой код), что VC, считает все объекты внутри константной функции (в твое случае —
bool isReady()const;
)- константами (именно по этому в VC сработает константное преобразование), а билдер считает, что внутри фукции объеты имеют тот тип, который имеют, просто функция не может их менять... если так думать, то билдер прав...

З.Ы. Все это может иметь смысл, если для операторов преобразования не существует неких "особых" правил, при разрешении неодназначностей, imho их нет (по крайне мере ничего "особого" я не нашел), и их можно принять как за обычные функции...


"Как правило, лучше не переусердствовать при создании операторов преобразования, При чрезмерном использовании они приводят к неодназначности..."

(с) Б.Страуструп
Re: Отличие Visual C++ от Builder C++
От: dr-Wicked  
Дата: 16.03.03 10:44
Оценка:
Здравствуйте, Lexus,
Я борландовские продукты не использую с С++ 3
Судя по уровню понимания работы винды лучше уточнить в такой формулировке:

Кто знает, чем отличается среда Visual Basic от Builder C++.

Общие места — компонентное программирование
Разница Язык
Re: Отличие Visual C++ от Builder C++
От: S@ndro  
Дата: 16.03.03 13:50
Оценка:
Здравствуйте, Lexus, Вы писали:

L>Кто знает, чем отличается среда Visual C++ от Builder C++.

А что в них общего
L>В книжках по Builder'у пишется, что некоторые вещи практически
L>невозможно сделать в Visual C++. Наверняка, верно и обратное.
L>Я не видел Visual C++ и программирую в Builder'е и Delphi
L>(и не напрягаюсь, что интересно). Но уж как-то много народу
L>пишет в VC++. Хотелось бы знать, есть ли принципиальные отличия?
В билдере 5.0 можно установить библиотеку MFC. Вот с ее помощью и создают GUI приложения в VisualC++. И это действительно долго и муторно, зато производительность при определленных обстаятельствах гораздо выше, и возможностей для разного рода извращений больше. Короче имеем дело с более низкоуровнивым програмированием. А слово Visual в название это рекламный трюк, и ничего общего с другими Visual подобными средствами нету.
А вот Visual C#.Net это совсем другое дело, это дествительно похоже на Дельфи. При создании пользовательского интерфейса отличии не велики (правдо поддержка различнных нововведений Windowsа типа GDI+ появляются у microsoft быстрее, странно почему ). И с доступом к БД или созданием Web приложений VisualC#.Net явно на высоте. Да и среда удобней.
Re[10]: Отличие Visual C++ от Builder C++
От: Аноним  
Дата: 17.03.03 11:00
Оценка:
Здравствуйте, rebus, Вы писали:

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


R>

R>>>а легкость и скорость применения различных технологий в одной программе —
WH>> Вот у меня есть маленькая библиотечка которая выполняет очень много грязной работы...Написана она под VC7 я ее несколько часов под BCB6 переносил...перенес но какой ценой.

R>А ты не пробовал обратоное (из BCB в VC)? Не думаю, что ты потратил бы только несколько часов...


WH>>Этот урод практически не дружит с шаблонами(они там даже до VC7 недотягивают) страшно глючат const...Вобщем функциональность покоцана защиты вобще нет... Ну и кому такая библиотека нужна?

R>На счет шаблонов, что-то странное, у меня особых проблем как раз в BCB с ними небыло.
Может хоть покажешь в чем эти проблемы заключались?

WH>> !!!БОРМАН МАЗДАЙ!!!

R>Разбавлять с IMHO не забывай

Обсуждение не имеет смысла... Поскольку, вы когда-нибудь портировали программы на С++ из\в VC++,BC++,gcc,workshop,intel c++? Так вот с ответсвенностью говорю, у них все С++ — РАЗНЫЕ и НЕСОВМЕСТИМЫЕ и ОСНОВАННЫ на РАЗНЫХ ПОДМНОЖЕСТВАХ\НАДМНОЖЕСТВАХ С++. Совершенно коректный и простой код на одном не компилица на другом! Каждый из ни оптимизирован под свои задачи и плохо подходит для других.
Re[11]: Отличие Visual C++ от Builder C++
От: rebus  
Дата: 17.03.03 21:54
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Обсуждение не имеет смысла...


Имеет, хотя бы со стороны СТАНДАРТА. А так же, чтобы узнать о граблях компиляторов, чтоб потом на них не наступать...

А>Поскольку, вы когда-нибудь портировали программы на С++ из\в VC++,BC++,gcc,workshop,intel c++?

Будем считать, что это не наезд. Сабж только о первом и втором, могу сказать, что портировал...

А>Так вот с ответсвенностью говорю, у них все С++ — РАЗНЫЕ и НЕСОВМЕСТИМЫЕ и ОСНОВАННЫ на РАЗНЫХ ПОДМНОЖЕСТВАХ\НАДМНОЖЕСТВАХ С++.


С++ не может быть разным, он один! Это говорит только об их недостатках, с точки зрения СТАНДАРТА.
А те "расширения" и "улучшения", которые применяются в компиляторах создают лишь иллюзию преимущества кода написанного с помощью них, над стандартным С++, т.к. трудно переносимы. А раз у Вас есть, как Вы говорите, большой опыт переноса программ на разные компиляторы, то Вы и должны в первую очередь это понимать.
... << RSDN@Home 1.0 beta 6a >>
Re[16]: Отличие Visual C++ от Builder C++
От: WolfHound  
Дата: 18.03.03 18:28
Оценка:
Здравствуйте, rebus, Вы писали:
]
R>- одна из причин сложности переноса приложений... Так что не только билдер во всем виноват
R>Будим считать ворнинги, вместо ошибок у билдера — тоже его расширением
НЕТ это грубейшая ошибка не позволяющея писать безопасный код.

R>Отсюда, можно сделать вывод (беря в расчет твой код), что VC, считает все объекты внутри константной функции (в твое случае —
bool isReady()const;
)- константами (именно по этому в VC сработает константное преобразование),

Он считает this const'антным со всеми вытекающами.
R>а билдер считает, что внутри фукции объеты имеют тот тип, который имеют, просто функция не может их менять...
И вижул так считает просто this const'антный.
R>если так думать, то билдер прав...
Абсолютно не прав.

R>

R>"Как правило, лучше не переусердствовать при создании операторов преобразования, При чрезмерном использовании они приводят к неодназначности..."

(с) Б.Страуструп

Правильно говорит однако здась это не имеет места.

ЗЫ Я тут доработал свои шаблоны и ввел продержку констант.
    T_RefStrong<I_Object> obj;
    T_RefStrong<const I_Object> cobj;
    cobj=obj//так можно
    obj=cobj//а так нельзя

Под билдером так не сделаешь.
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: По поводу, что лучше, а что хуже
От: Аноним  
Дата: 15.06.03 03:13
Оценка: +1
Здравствуйте, Lexus, Вы писали:

Весь этот флейм чистой воды фидошничество! Говно глючное можно написать как на VC, так и на BCB, да и на VB, Perl, Pascal, Delphi и даже на ассемблере. Да на чем угодно. Вы думаете в MFC глюков нет? Есть! И в VCL они тоже есть. Глюки есть практически в любом софте. А качество софта измеряется не языком программирования, а программистом, который его ваяет. Так что не занимайтель словоблудием. Каждый выбирает то, что ему нравится!

Lexx
Re[2]: Отличие Visual C++ от Builder C++
От: ForestLabs Россия  
Дата: 15.06.03 11:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте Lexus:


VD>Вопрос очень... нет, ОЧЕНЬ плохой. На iXBT он тотчас же привел бы к тремстам постингам флэйма. Если Вы действительно хотите понять разницу между некоторыми продуктами, то:

VD>а) Вам это должно быть Оооочень нужно!
VD>б) Вам (лично) нужно освоить оба продукта и не на тестах, а на реальных по возможности больших проектах.

Настроение такое... Хочется вспомнить историю более чем 10ти-летней давности.
Тогда мы в конторе писали под DOS и, есссесссно, на Turbo C. Потом и ++.
Смог я уговорить контору перелезть на Windows, что далось мне тяжеловато. Само собой, востребовался только Borland. В то время графический GUI для разработки был только у него. MS поставлял консольный.
И тут появляется первый C++ от MS и с ним MFC первой версии.
За пол-дня портирую библиотеку по Borland (не без проблем) и мы реализуем проект на этой смеси.
Но! Раз в недельку я компилил весь проект на MS C. И получал кучу варнингов и ошибок. Настроен-то Borland всегда на легкий уровень... Про производительность кода Borland в то время вообще молчу. Но процесс компиляции у борланда был махом. Это уж точно. Код сыроватый, к культуре программирования продукт нас не ведет. Отношение на всю жизнь сформировалось — УЧЕБНЫЙ ПРОДУКТ.
Говорю только про C++ и сопутствующее. Про дельфина пока молчу. У нас на серваке приложений работает процентов 10 кода на Delphi. Качество отличное, видим только интерфейсы и довольны ими.
А вообще, как заметил один из участвующих в эточ флейме, все зависит от самого программера. На Forhte никто не пишет?

С уважением и пожеланиями успехов.
Re[4]: Отличие Visual C++ от Builder C++
От: RuSV  
Дата: 15.06.03 14:19
Оценка:
Здравствуйте, snoman, Вы писали:

А>>Уже год мы трахаемся на BCB 5 (это 9 программистов), и пришли к выводу, что Билдер был создан не для людей.


S>Наш проект мы тоже начинали на 5-ом билдере и пришли к похожему выводу

S>В первую очередь не устраивало быстродействие получаемого кода.
S>В итоге сделали так: всю математику вынесли в длл-ки и откомпиляли в VC, а гуйню на билдере..
S>Получилось вполне неплохо

Интересный результат, посмотрел сравнительный тест (http://rsdn.ru/article/?devtools/perftest.xml
Автор(ы): Владислав Чистяков
)производительности для математических операций, говорит что скорость исполнения почти одинаковая .
Re[12]: Отличие Visual C++ от Builder C++
От: Аноним  
Дата: 18.10.03 18:16
Оценка:
Здравствуйте, rebus, Вы писали:

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


А>>Обсуждение не имеет смысла...


R>Имеет, хотя бы со стороны СТАНДАРТА. А так же, чтобы узнать о граблях компиляторов, чтоб потом на них не наступать...


А>>Поскольку, вы когда-нибудь портировали программы на С++ из\в VC++,BC++,gcc,workshop,intel c++?

R>Будем считать, что это не наезд. Сабж только о первом и втором, могу сказать, что портировал...

А>>Так вот с ответсвенностью говорю, у них все С++ — РАЗНЫЕ и НЕСОВМЕСТИМЫЕ и ОСНОВАННЫ на РАЗНЫХ ПОДМНОЖЕСТВАХ\НАДМНОЖЕСТВАХ С++.


R>С++ не может быть разным, он один! Это говорит только об их недостатках, с точки зрения СТАНДАРТА.

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

C++ как раз и не один, существует множество стандартов.
Re[13]: Отличие Visual C++ от Builder C++
От: CrystaX Россия https://crystax.me/
Дата: 19.10.03 00:19
Оценка:
Здравствуйте, <Аноним>, Вы писали:

R>>С++ не может быть разным, он один! Это говорит только об их недостатках, с точки зрения СТАНДАРТА.

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

А>C++ как раз и не один, существует множество стандартов.



Поподробнее, плз. Что-то я не слыхал до сих пор о множестве стандартов C++
... << RSDN@Home 1.1 beta 2 >>
Re[4]: Отличие Visual C++ от Builder C++
От: Offsider Украина  
Дата: 27.10.03 21:37
Оценка:
Здравствуйте, grs, Вы писали:

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



А>>Уже год мы трахаемся на BCB 5 (это 9 программистов), и пришли к выводу, что Билдер был создан не для людей.


grs>Ох, золотые слова! У нас к сожалению большинство клиенских приложений пишутся на BCB5, но некоторые счастливчики кое-что иногда пишут на VC (есть проекты, где клиенты поставили условие — только VC). Так всегда можно отследить переход с VC на BCB. Человек вдруг ни с того ни с сего начинает просто материться...

grs>В приципе BCB создавался может быть и для людей, но похоже совсем не тестировался. Какой-то он недоделанный, причем от версии к версии. Сразу видно, что для Борланда это побочный продукт. Про среду разработки я уж вообще молчу. А уж про BDE-линки без мата просто невозможно...
grs>Хотя сама идея очень даже неплохая.

Вот та фраза котрую я ждал...

На самом деле... У билдера неплохая идея!!! но эту идею, разработчики, по-видимому, не смогли реализовать до конца (в плане, без ошибок)... Возможно, это вызвано громоздкостью идеи...

Кто, что думает по этому поводу?
__________________________________________________________ :)
Compiling...
message.cpp(4):error C2059: Can't understand russian mat :'@#$^& '
Re[5]: Отличие Visual C++ от Builder C++
От: Воронков Василий Россия  
Дата: 27.10.03 21:42
Оценка:
Здравствуйте, Offsider, Вы писали:

O>Вот та фраза котрую я ждал...


O>На самом деле... У билдера неплохая идея!!! но эту идею, разработчики, по-видимому, не смогли реализовать до конца (в плане, без ошибок)... Возможно, это вызвано громоздкостью идеи...


O>Кто, что думает по этому поводу?


Гм, как человек ни разу не видевший билдера, решусь спросить, что же собственно это за идея?
... << RSDN@Home 1.1 beta 1 >>
Re[6]: Отличие Visual C++ от Builder C++
От: Offsider Украина  
Дата: 27.10.03 23:05
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

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


O>>Вот та фраза котрую я ждал...


O>>На самом деле... У билдера неплохая идея!!! но эту идею, разработчики, по-видимому, не смогли реализовать до конца (в плане, без ошибок)... Возможно, это вызвано громоздкостью идеи...


O>>Кто, что думает по этому поводу?


ВВ>Гм, как человек ни разу не видевший билдера, решусь спросить, что же собственно это за идея?


в 2х словах: напичкать примочками... и максимально абстрагироваться от их реализации...
__________________________________________________________ :)
Compiling...
message.cpp(4):error C2059: Can't understand russian mat :'@#$^& '
Re[7]: Отличие Visual C++ от Builder C++
От: Воронков Василий Россия  
Дата: 28.10.03 07:25
Оценка:
Здравствуйте, Offsider, Вы писали:

O> в 2х словах: напичкать примочками... и максимально абстрагироваться от их реализации...


Мать моя, дык это ж дотнет!
... << RSDN@Home 1.1 beta 1 >>
Re[4]: Отличие Visual C++ от Builder C++
От: Аноним  
Дата: 28.10.03 07:37
Оценка:
Здравствуйте, kaziboba, Вы писали:

K>Здравствуйте IT, вы писали:


IT>>Здравствуйте kaziboba, вы писали:


K>>>Здравствуйте Lexus, вы писали:


K>>>Единственное, что мне нравиться в Builder, так это то, что там запрещено множественное наследование.


IT>>Ну это напрасно. Например, концепция ATL базируется на шаблонах и множественном наследовании.


K>Может быть меня обвинят в консерватизме, но я считаю, что программисты стали заложниками тех. прогресса, и нам по долгу службы приходится изучать всякие глупости типа COM и ATL. Конечно, не спорю, всё эти технологии были созданы с целью облегчения жизни программеру, но за это облегчение надо платить. Я видел много проектов написанных по компонентной технологии, и всё они отличались чрезмерной глючностью и тормознутостью. Ну ладно, чего-то я разошёлся. Боясь породить гневную критику в свой адрес — заканчиваю



А по-моему, заложниками стали те, кто отказался понять сложное и воспользовался готовым
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.