Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Крис Касперски по поводу С++ 
:(
    Опции темы
Alexeis
Дата 26.10.2007, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



Цитата(archimed7592 @  26.10.2007,  21:54 Найти цитируемый пост)
Почему? Хочешь сказать в Builder'е невозможно создавать пользовательские контролы? 

  Лезем на Torry.net качаем первый попавшийся компонент, берем даже невизуальный, чтобы не было соблазна использовать классы высокого уровня, смотрим в объявление класса
Код

class PACKAGE TAnimTimer : public TComponent
{
public:
  __fastcall TAnimTimer(TComponent* Owner);
  virtual __fastcall ~TAnimTimer();

__published:
  __property bool Enabled = {read=FEnabled,write=SetEnabled,default=true};
  __property unsigned int Interval = {read=FInterval,write=SetInterval,default=10};
  __property TNotifyEvent OnTimer = {read=FOnTimer,write=SetOnTimer};



  Хм... с чего бы тут нужен был наследник TComponent?

Смотрим ниже, секция __published !!! епрст, как же мы увидим свойства Enabled, Interval и OnTimer в object inspector, если их не будет в RTTI метакласса? Их же извлекают по названию.

Все это на 100% повторяет объявление класса в Delphi. Очевидно, что и для TAnimTimer будет создан метакласс. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
archimed7592
Дата 26.10.2007, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Alexeis @  26.10.2007,  22:19 Найти цитируемый пост)
Все это на 100% повторяет объявление класса в Delphi. Очевидно, что и для TAnimTimer будет создан метакласс.  

Гхм... Да я не спорю... Я лишь говорю, что bcc32 расширяет язык С++, добавляя к нему рефлексию(чтобы было видно в object inspector'е, чтобы можно было делать метаклассы, и т. д.).


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
powerfox
Дата 27.10.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Цитата

Основная разница между С++ и Basic'ом вовсе не в том, что трансляторы Basic'а генерируют тормозной код. Главное отличие С++ в том, что он никому не принадлежит. Есть открытый стандарт и десятки аттестованных компиляторов, которые генерируют стандартный промежуточный код, легко интегрируемый в любой проект, написанный, например, на Паскале или Ассемблере.

Не объясните, что это значит? Стандартный промежуточный код - понятие и .NET. Если не ошибаюсь, то в "чистом" С++ такого нет. А вызывать API программ на других языках -- не проблема. Вставлять код... Компановка объектных файлов -- это не промежуточный код. И тут надо юзать связки, наподобие g++ + gpc, и то... Это не всегда просто (если сравнивать с .NET).


--------------------
user posted image
PM WWW   Вверх
MAKCim
Дата 28.10.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



powerfox
тот же GCC генерирует промежуточный код с целью дополнительной оптимизации
т. е сначала код на ЯВУ преобразуется во внутреннее представление компилятора, далее идет его оптимизация, (архитектуро-независимая (основное назначение промежуточного кода))
потом из оптимизированного внутреннего представления идет генерация кода целевой машины, далее его архитектуро-зависимая оптимизация и наконец на последнем шаге - формиование объектного файла

Это сообщение отредактировал(а) MAKCim - 28.10.2007, 10:15


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 28.10.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(powerfox @  27.10.2007,  21:24 Найти цитируемый пост)
десятки аттестованных компиляторов, которые генерируют стандартный промежуточный код

Я не очень хорошо знаком с вопросом кодогенерации современными компиляторами, но, если учесть, существование name mangling и кучу других не специфицированных стандартом ньюансов, то, осмелюсь предположить, что, даже при наличии промышленных стандартов на объектники, склеивание объектников от разных компиляторов - весьма не тривиальная задача.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
ksili
Дата 28.10.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Цитата(archimed7592 @  28.10.2007,  15:23 Найти цитируемый пост)
склеивание объектников от разных компиляторов - весьма не тривиальная задача

В свете всего этого Крис Касперски хвалит (не в этой статье) линкер ulink от Юрия Харона,  smile  даже вроде говорит, что он единственный может делать это нормально


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
MAKCim
Дата 28.10.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(archimed7592 @  28.10.2007,  10:23 Найти цитируемый пост)
что, даже при наличии промышленных стандартов на объектники, склеивание объектников от разных компиляторов - весьма не тривиальная задача. 

не вижу ничего нетривиального  smile 


Это сообщение отредактировал(а) MAKCim - 28.10.2007, 10:35


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 28.10.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Думаю, проблема больше не в нормальном линкере а в том, что делая это ты накладываешь множество ограничений на свой код. В частности:
1) нельзя выпускать исключения за пределы модуля
2) нельзя освобождать память в модуле, отличном от того, в котором она была выделена.
3) нужно заставлять компилятор какие-нибудь распространённые правила вызова ф-ций(calling conventions), т.о. связывая руки оптимизатору.
4) список думаю можно продолжить - если бы я сталкивался с этим на практике, то скорее всего что-нибудь добавил бы.

Добавлено @ 10:41
MAKCim, я же сказал "осмелюсь предположить" smile. Если ты имел с этим дело на практике, то тебе виднее.
В частности, я не представляю как можно "нетривиально" решить проблему с name mangling.

Это сообщение отредактировал(а) archimed7592 - 28.10.2007, 10:54


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
MAKCim
Дата 28.10.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(archimed7592 @  28.10.2007,  10:40 Найти цитируемый пост)
В частности, я не представляю как можно "нетривиально" решить проблему с name mangling. 

с объектниками, которые были сгенерировали С компиляторами, проблем нет, согласен?
в случае с С++ компиляторами
можно сравнивать имена символов и находить одинаковые подстроки в них (связано с тем, что С++ компиляторы добавляют суффиксы и/или префиксы к именам символов)


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 28.10.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(MAKCim @  28.10.2007,  11:18 Найти цитируемый пост)
в случае с С++ компиляторами

Ну дык статья то про С++ smile.

foo(int, char);
foo(const A &, int);
...
Как выбрать сравнениями выбрать одну из нужных? ;-)
С шаблонами вообще труба.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
powerfox
Дата 28.10.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



MAKCim, спасибо. Понял.


--------------------
user posted image
PM WWW   Вверх
Mayk
Дата 28.10.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(archimed7592 @  28.10.2007,  14:40 Найти цитируемый пост)
В частности, я не представляю как можно "нетривиально" решить проблему с name mangling.

Это достаточно  легко.  Нужен стандарт mangling'а и   ......................... extern "C++"[та да!], который можно вставлять перед определенными классами/ф-циями[как справделиво заметили в C++ FQA Lite,  свзяать си и си++ легче, чем с++ и с++].


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
archimed7592
Дата 28.10.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Mayk @  28.10.2007,  14:55 Найти цитируемый пост)
extern "C++"

Вообще говоря, стандарт не оговаривает даже то, что может указываться после extern в кавычках smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Mayk
Дата 28.10.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(archimed7592 @  28.10.2007,  21:30 Найти цитируемый пост)

Вообще говоря, стандарт не оговаривает даже то, что может указываться после extern в кавычках

ну вот, значит будет  smile Ставлю десятку, что когда-нибудь extern "cpp" или extern "c++"  станет стандартным.  smile 
лет так через 50.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
archimed7592
Дата 28.10.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



А в чём предполагаемая разница между extern "c++" и обыкновенными c++ объявлениями? smile


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0730 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.