[devel] Re: alternatives

Mikhail Zabaluev =?iso-8859-1?q?mhz_=CE=C1_altlinux=2Eorg?=
Вс Мар 30 15:35:40 MSD 2003


Hello Alexey,

On Sun, Mar 30, 2003 at 11:44:31AM +0400, Alexey Voinov wrote:
>
> > > на glib2 (1207356) и

Без GObject и пр. имеем:

-rwxr-xr-x    1 root     root       435172 Фев  5 07:42 /usr/lib/libglib-2.0.so.0.200.1

Сам пакет большой, но в runtime это довольно компактная библиотека.

> > Нужно учесть ещё накладные расходы на порождение кода из шаблонов.
> > std::map<foo, bar> вряд ли даётся бесплатно.
> Всё решается во время компиляции.
> 
> Пример простого шаблона:
> template <int i>
> 	struct f { static const int r = i * f<i-1>::r; };
> 
> template <>
> 	struct f<0> { static const int r = 1; };
> 
> Так вот, f<5>::r при компиляции заменяется костантой 120, а
> f<10>::r --- 3628800. Где накладные расходы от шаблонов?
> Я не вижу.

Я говорил об std::map и других не вполне тривиальных классах.

> > > переходе на менее удобный (для того, кто это пишет)
> > > синтаксис? :)
> > Более удобно -- это там, где опасным и неинтуитивным образом
> > переопределяются операторы непонятно для чего? ;)
> Конкретный пример можно? Оператор [] у std::map переопределён
> неинтуитивно?

Класс Ing::FileSystem переопределяет * и ++ явно в целях
конспирации. Правильный operator++ должен возвращать отнюдь не bool.
Кстати, если уж переопределять ++, принято ещё и постфиксную форму
предоставлять.
Непонятно, почему вообще немудрёный итератор
по файловым деревьям назван FileSystem.
И почему у него семантика линейного итератора. Мне известны
как минимум два способа обхода дерева, см параметры утилиты
file. Файловые ссылки добавляют неопределённости.
Негибкий этот класс и в других отношениях: всегда делает fstat,
нужно это или нет (тем более что fts_* вроде бы предоставляют
и эти данные). В-общем, я не увидел здесь _полезного_
использования C++.

> > > В чём преимущество предложенного?
> > В том, что не надо думать, каким компилятором собраны
> > библиотека и приложение. У нас сейчас полно головной
> > боли из-за gcc 2.96 и gcc 3.2. А если кто-нибудь,
> > не дай бог, захочет использовать компилятор Intel?
> > Стандартный ABI уже есть, но он молод и недостаточно
> > отлажен, не говоря уж о реализациях.
> Не надо думать. У нас стандартный компилятор gcc3.2.

Разработчики GCC пока не дали гарантии, что C++ ABI версии 3.2
окончательный.

> Я скажу так: я начал делать свой вариант альтернатив на C (и без glib2),
> но потом решил, что продуктивнее будет слать патчи к тому, что уже есть.
> Постепенно это можно довести до очень неплохого состояния.

Да, вероятно.
Можно было бы постепенно сводить классы к их заменам на C.
В отсутствие наследования это будет нетрудно.

-- 
Stay tuned,
  MhZ                                     JID: mhz на altlinux.org
___________
Sinners can repent, but stupid is forever.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20030330/98a27c17/attachment-0001.bin>


Подробная информация о списке рассылки Devel