Re[25]: Предложения по улучшению
От: Cyberax Марс  
Дата: 15.06.05 10:00
Оценка: +1
FDSC wrote:

> C>Врет. Строковые команды еще с 486 процессора работают медленнее.

> Минуточку. Медленнее чего? Приведи asm код, который работает быстрее,
> или хотя бы (если лень) опиши его. Впрочем, я посмотрю VC 7, может
> найду там что-нибудь интересное.

Медленнее явного цикла.

> C>В VC7.1 (и тем более в VC8.0) компилятор намного лучше, чем в VC6.

> C>Больше оптимизаций, лучше качество работы, меньше глюков. Ну и
> поддержка
> C>Стандарта С++ почти полная.
> И что из этого?

Ничего, просто работать с ним в разы удобнее, чем с древним VC6.

> Там что, появилась поддержка VCL? Я же говорю не про компилятор.

> Delphi позволяет разрабатывать приложения быстрее.

Это г. под названием VCL давно пора отправить на свалку. Есть нормальные
решения: QT или хотя бы WTL.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[9]: Частота ошибок в зависимости от языка: что делать?
От: Cyberax Марс  
Дата: 15.06.05 10:05
Оценка:
tarkil wrote

> C>У меня копия из CVS. У BOOST_STRONG_TYPEDEF есть один недостаток — в

> нем
> C>определен оператор присваивания из исходного типа.
> И конструктор. И оператор приведения к исходному типу. Ай-яй-яй...

Еще и операторы сравнения, кстати

У них там в CVS еще библиотека физических констант развивается
(медленно), там еще все с поддержкой размерностей сделано было
То есть примерно так:
Force f;
Mass m(12);
Acceleration a(11);
f=m*a; //OK
f=m; //Error


> C>Выглядит он так:

> C>
>
>C>template<class T> struct strong_typedef : boost::totally_ordered1<
>C>strong_typedef<T> > ...
>C>
>
> У этого класса есть большой минус — больше одного псевдонима int не
> сделаешь.

Кстати да, хотя там где он использовался это было ненужно.

> Наверное, лучше из BOOST_STRONG_TYPEDEF изъять левые методы.


С этим никаких проблем нет

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[8]: Частота ошибок в зависимости от языка: что делать?
От: Cyberax Марс  
Дата: 15.06.05 10:05
Оценка: 1 (1) +4
Сергей Губанов wrote:

> C>Когда же прекратят издеваться над школьниками....

> Что Вы имеете в виду?

Использовать мертвые, неудобные и никому ненужные языки. Уж лучше бы
Питон изучали — от него хоть польза есть.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[24]: Предложения по улучшению
От: tarkil Россия http://5209.copi.ru/
Дата: 15.06.05 10:11
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>На дельфе хорошо только формочки клепать. А как язык дельфи отстает от С++ по всем параметрам.


Ой-ёй, а Вы Delphi Pascal точно хорошо знаете? Я на нём не писал уже года четыре, но воспоминания самые хорошие. Например, там есть полноценная поддержка RTTI, именованные конструкторы, удобные списки аргументов переменной длины... это что в голову сходу пришло.
--
wbr, Peter Taran
Re[25]: Предложения по улучшению
От: Cyberax Марс  
Дата: 15.06.05 10:17
Оценка:
tarkil wrote:

> WH>На дельфе хорошо только формочки клепать. А как язык дельфи отстает

> от С++ по всем параметрам.
> Ой-ёй, а Вы Delphi Pascal точно хорошо знаете? Я на нём не писал уже
> года четыре, но воспоминания самые хорошие. Например, там есть
> полноценная поддержка RTTI

RTTI есть в С++ уже лет 10. Reflection'а нет — это недостаток, но он и
не нужен.

> именованные конструкторы, удобные списки аргументов переменной

> длины... это что в голову сходу пришло.

Именованые конструкторы — это фабрики, только интегрированные в язык
(уродство). Аргументы переменной длины в С++ не нужны — есть другие
средства (перегрузка операторов).

Зато в Дельфи нет: умных указателей, автоматических объектов,
темплейтов. Дальше можно не продолжать.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[25]: Предложения по улучшению
От: WolfHound  
Дата: 15.06.05 10:32
Оценка:
Здравствуйте, tarkil, Вы писали:

WH>>На дельфе хорошо только формочки клепать. А как язык дельфи отстает от С++ по всем параметрам.

T>Ой-ёй, а Вы Delphi Pascal точно хорошо знаете?
Я с него начинал.
T>Я на нём не писал уже года четыре, но воспоминания самые хорошие.
У меня тоже были хорошие пока С++ не выучил.
T>Например, там есть полноценная поддержка RTTI,
В С++ тоже есть RTTI. Несколько скромнее чем в дельфе но есть.
Что касается полноценности дельфевого RTTI то у меня язык не повернется назвать его полноценным после того как я поработал с reflection'о в .NET.
T>именованные конструкторы,
В дельфе нет конструкторов. В дельфе есть фабрики на уровне языка.
Уродство еще то.
Ктомуже в С++ это делается на раз. Помнится я както развлекался и достиг синтаксиса почти как в дельфе.
T>удобные списки аргументов переменной длины... это что в голову сходу пришло.
В С++ оно тоже есть... вот только никто этим не пользуется ибо нафиг не упало.

За то в С++ есть:
1)Шаблоны.
2)Автоматические деструкторы.
3)Перегрузка операторов.

И как следствие мы можем создавать умные указатели, типизированые коллекции, универсальные алгоритмы которые работают для любых типов причем с такойже скоростью как еслибы их писали для каждого типа отдельно...
Короче дельфе такие возможности и не снились.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Частота ошибок в зависимости от языка: что делать?
От: WolfHound  
Дата: 15.06.05 10:40
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> У этого класса есть большой минус — больше одного псевдонима int не сделаешь.

C>Кстати да, хотя там где он использовался это было ненужно.
Это раешается добавлением еще одного параметра шаблона.
class strong_typedef_tag{};//Чтобы не поломать старый код
//Хотя я бы поломал ибо работы по починке не много да и компилятор носом ткнет.
template<class T, class TAG = strong_typedef_tag> struct strong_typedef : boost::totally_ordered1< 
strong_typedef<T> >
{
...
};

class NumberOfSymbolInStringTag{};
typedef boost::strong_typedef<int, NumberOfSymbolInStringTag> NumberOfSymbolInString;

class NumberOfSymbolInTextTag{};
typedef boost::strong_typedef<int, NumberOfSymbolInTextTag> NumberOfSymbolInText;

А лишние операторы это они зря
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[26]: Предложения по улучшению
От: tarkil Россия http://5209.copi.ru/
Дата: 15.06.05 11:10
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>RTTI есть в С++ уже лет 10. Reflection'а нет — это недостаток, но он и

C>не нужен.

Чую назревание священной войны... RTTI в C++ это убогая тачанка по сравнению с Дельфийским. Там даже поля и методы класса перебрать нельзя. Reflection это типа сериализации — сохранение/восстановление из потока? Ну кому как... Мне — нужен.

C>Именованые конструкторы — это фабрики, только интегрированные в язык

C>(уродство).

Обосновать бы... Вот мне лично кажется что конструктор и фабрика выполняют одни и те же функции и уродским является как раз их разделение (ибо избыточно оно).

C>Аргументы переменной длины в С++ не нужны — есть другие

C>средства (перегрузка операторов).

А с переменные аргументами всё равно часто удобнее. Классика это, конечно, форматирование строк.

// C++ - подобный (оно не скомпилируется, но важна идея!) :-)
string s;
s
  << "Фигня на постном масле = " << obj.getX() << endl
  << width(8) << precision(2) << "Она же, но на сливочном = " << obj.getX();
foo( s );

Кому как, а мне следующий вариант кажется куда как более простым и наглядным:

// C# - подобный
s = new String;
s.Format(
  "Фигня на постном масле = {0}\n"
  "Она же, но на сливочном = {0,8:p2}",
  [obj.getX()]
);
foo( s );

C>Зато в Дельфи нет: умных указателей, автоматических объектов,
C>темплейтов. Дальше можно не продолжать.

Да, там много чего нету, кто б спорил. Темплитами, кстати, почти никто похвастаться не может, кроме C++. А что подразумевается под автоматическими объектами? Которые не через new, а на стеке? Да, пожалуй, их не хватало, как и возможности определить переменную в произвольной точке. Зато в C++ не хватает вложенных функций... Вот, буквально полчаса назад жалел об этом.
--
wbr, Peter Taran
Re[9]: Частота ошибок в зависимости от языка: что делать?
От: Трурль  
Дата: 15.06.05 11:15
Оценка: 2 (1)
Здравствуйте, tarkil, Вы писали:

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


Т>>
Т>>type MyType is INTEGER;
Т>>

Подзабыл я Аду. Надо было бы
type MyType is new INTEGER;


T>А может быть ещё можно как-то расширить поведение или наоборот — урезать?

Кое-что мoжно
type  SmallInt is range -1..13;
type  Byte  is mod 2 ** 8; 
type  IntMod35  is mod 35;
Re[27]: Предложения по улучшению
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 15.06.05 11:20
Оценка:
Здравствуйте, tarkil, Вы писали:

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


C>>RTTI есть в С++ уже лет 10. Reflection'а нет — это недостаток, но он и

C>>не нужен.

T>Чую назревание священной войны... RTTI в C++ это убогая тачанка по сравнению с Дельфийским. Там даже поля и методы класса перебрать нельзя. Reflection это типа сериализации — сохранение/восстановление из потока? Ну кому как... Мне — нужен.


Reflection — это как раз и есть возможность перебрать поля и методы класса.

C>>Именованые конструкторы — это фабрики, только интегрированные в язык

C>>(уродство).

T>Обосновать бы... Вот мне лично кажется что конструктор и фабрика выполняют одни и те же функции и уродским является как раз их разделение (ибо избыточно оно).


А зачем они, если вы всегда можете объвить статическую функцию в классе, которая будет создавать вам объект? По сути тоже самое

C>>Аргументы переменной длины в С++ не нужны — есть другие

C>>средства (перегрузка операторов).

T>А с переменные аргументами всё равно часто удобнее. Классика это, конечно, форматирование строк.


Не нравится не кури... или кури strintf ...

T>Да, там много чего нету, кто б спорил. Темплитами, кстати, почти никто похвастаться не может, кроме C++.

Зато шарп может ими постыдиться...

T>А что подразумевается под автоматическими объектами? Которые не через new, а на стеке?

Да — которые на стеке, причём в любом месте локальной области видимости и содержат в себе те, которые создаются динамически, причём доступ к динамическим прозрачный и они уничтожаются вместе со статическими... Имеется в виду auto_ptr...

T>Зато в C++ не хватает вложенных функций... Вот, буквально полчаса назад жалел об этом.

Зато в C++ есть локальные классы, что суть есть тоже самое, только круче, потому что они могут быть даже шаблонами и быть вложены в шаблоны...
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[26]: Предложения по улучшению
От: tarkil Россия http://5209.copi.ru/
Дата: 15.06.05 11:20
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

T>>Например, там есть полноценная поддержка RTTI,

WH>В С++ тоже есть RTTI. Несколько скромнее чем в дельфе но есть.

Ага, несколько. "Москвич-412" он тоже несколько хуже, чем Toyota Mark II.

WH>Что касается полноценности дельфевого RTTI то у меня язык не повернется назвать его полноценным после того как я поработал с reflection'о в .NET.


Sure. Всё течёт, всё развивается, Дельфи уже устаревший язык. Но в C++ нету reflection, мы ж о нём, не о .NET?

T>>именованные конструкторы,

WH>В дельфе нет конструкторов. В дельфе есть фабрики на уровне языка.

Второй раз слышу этот тезис. Кто-нибудь мне расскажет о том, в чём концептуальной отличие фабрики от конструктора?! Вроде б и та и тот задачей ставят создание целостного объекта (банду четырёх я читал, не помогло).

T>>удобные списки аргументов переменной длины... это что в голову сходу пришло.

WH>В С++ оно тоже есть... вот только никто этим не пользуется ибо нафиг не упало.

Форматирование строк. Поточный вывод не слишком-то удобен на практике оказался, хотя концепция и реализация очень изящны. Ещё пару применений можно придумать.

WH>1)Шаблоны.

WH>2)Автоматические деструкторы.
WH>3)Перегрузка операторов.

Ага. Это здорово. Только исходное сообщение было в том духе, что "Дельфи вчистую проигрывает C++". Я и привёл пару примеров, где он выигрывает. Не заявляя об идеальности. А C++ в целом на порядок мощнее, кто б спорил — это ж целый огромный полигон для экспериментов.
--
wbr, Peter Taran
Re[15]: Частота ошибок в зависимости от языка: что делать?
От: vdimas Россия  
Дата: 15.06.05 12:20
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>И что самое поскудное — это же совершенно корректный код .


Да, использование С-подобных приведений типов позволяет произвольно интерпретировать память.

Поэтому в С++ ввели дополнительные "почти безопасные" static_cast<>. Если в твоем примере использовать его, то пример не скомпилируется.
Re[16]: Частота ошибок в зависимости от языка: что делать?
От: vdimas Россия  
Дата: 15.06.05 12:21
Оценка: 3 (1) :))
Здравствуйте, Denis2005, Вы писали:

D>P.S. Явный вызов деструктора это клиника, я бы не назвал это корректным кодом.


Да нет, не клиника, весь STL на этом держится.
Re[26]: Предложения по улучшению
От: FDSC Россия consp11.github.io блог
Дата: 15.06.05 12:37
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>FDSC wrote:


>> C>Врет. Строковые команды еще с 486 процессора работают медленнее.

>> Минуточку. Медленнее чего? Приведи asm код, который работает быстрее,
>> или хотя бы (если лень) опиши его. Впрочем, я посмотрю VC 7, может
>> найду там что-нибудь интересное.

C>Медленнее явного цикла.



Беру свои слова по поводу строковых команд назад... Но не совсем. Не всё получается как ты говоришь.


// Vinogradov S.V. 2005 jun.
// TestAsm.cpp. For RSDN Forum.
// Сравнение производительности цикла поиска в целочисленном массиве для C++ и asm кода.
// MS VS 7.1.3088

// Результаты (с обычным while):
//1: VC compiler: 2407 (33554431); asm: 2328 (33554431)
//2: VC compiler: 2344 (33554431); asm: 2328 (33554431)
//3: VC compiler: 2359 (33554431); asm: 2313 (33554431)
//4: VC compiler: 2359 (33554431); asm: 2312 (33554431)
//5: VC compiler: 2360 (33554431); asm: 2328 (33554431)

// Результаты (с модифицированным while):
//1: VC compiler: 1734 (33554431); asm: 2328 (33554431)
//2: VC compiler: 1656 (33554431); asm: 2329 (33554431)
//3: VC compiler: 1656 (33554431); asm: 2312 (33554431)
//4: VC compiler: 1672 (33554431); asm: 2313 (33554431)
//5: VC compiler: 1672 (33554431); asm: 2312 (33554431)


#include "stdafx.h"
#include <windows.h>
#include <conio.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    const K = 1024*1024 * 32 /* *4 = 128 Мб */;
    const MaxTestIteration = 5, MaxRepeat = 10;
    int A;
    int B = 7;
    int * C;

    int LC = 0, LA = 0;

    C = (int *) ::LocalAlloc( LPTR, K * sizeof(int) );

    if (NULL == C) return 1;
    
    C[K - 1] = B;


    SYSTEMTIME ST, ST2, ST3;
    int RepeatCount, E = 0;

    for (int iTestIteration = 0; iTestIteration++ < MaxTestIteration;)
    {

        GetSystemTime(&ST);

        // Обычный while
        /*for (RepeatCount = 0; RepeatCount++ < MaxRepeat;)
        {
            A = 0;
            while (C[A++] != B && A < K);
        }*/

            
        // Модифицированный while
        int I, T;
        for (RepeatCount = 0; RepeatCount++ < MaxRepeat;)
        {
            A = 0;
            while (C[A] != B  &&  A < K - 1023)
            {                
                for (T = 16; T < 1024; T += 16) 
                {
                    E += C[A + T];
                }
                
                I = 1;
                while (C[A + I++] != B && I < 1024);
                A += I;
                if (I < 1024 ) break;
            }
        }

        LC = A - 1;

        GetSystemTime(&ST2);

        for (RepeatCount = 0; RepeatCount++ < MaxRepeat;)
        __asm{
                pushad
                push    es                

                mov        ax,        ds
                mov        es,        ax

                mov        edi,    [C]
                mov        eax,    [B]
                CLD
                mov        edx,    edi

                mov        ecx,    [K]

                repne    scasd

                sub        edi,    edx
                shr        edi,    2
                dec        edi
                mov        [LA],    edi

                pop        es
                popad
        }

        GetSystemTime(&ST3);

        const hk = 3600*1000, mk = 60*1000, sk = 1000;
    
        int R1 = ST2.wHour * hk + ST2.wMinute * mk + ST2.wSecond * sk + ST2.wMilliseconds -
                 ST .wHour * hk - ST .wMinute * mk - ST .wSecond * sk - ST .wMilliseconds;

        int R2 = ST3.wHour * hk + ST3.wMinute * mk + ST3.wSecond * sk + ST3.wMilliseconds -
                 ST2.wHour * hk - ST2.wMinute * mk - ST2.wSecond * sk - ST2.wMilliseconds;


        printf("%i: VC compiler: %i (%i); asm: %i (%i) \n", iTestIteration, R1, LC, R2, LA);
    }

    ::LocalFree(C);
    
    printf("E = %i", E);

    getch();

    return 0;
}


Получается, что компилятор всё же не оптимизирует код как надо. См. отладчик:

A = 0;

00401070  xor         eax,eax 
            while (C[A++] != B && A < K);
00401072  mov         edx,dword ptr [esi+eax*4] 
00401075  inc         eax  
00401076  cmp         edx,7 
00401079  je          main+82h (401082h) 
0040107B  cmp         eax,2000000h 
00401080  jl          main+72h (401072h)



Стандартный код: хуже трудно сделать. Может настройки не те:
«/O2 /Ot /G6 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /EHsc /ML /GS /Yu"stdafx.h" /Fp"Release/TestAsm.pch" /Fo"Release/" /Fd"Release/vc70.pdb" /W3 /nologo /c /Wp64 /Zi /TP»?
Re[24]: Предложения по улучшению
От: FDSC Россия consp11.github.io блог
Дата: 15.06.05 12:42
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


FDS>>Нет. Компилятор должен мне вывести граф возможных ситуаций в программе, а я сам посмотрю, что можно, что нельзя.

WH>В проекте на 10 метров кода будет тАкой граф...

Чушь. Это смотря как его представить.


WH> На gamedev.ru бал здоровый флейм на эту тему. Толпа народа пыталась обогнать интеловский

компилятор. Ни у кого не получилось даже догнать. Делай выводы.

Сделал.

FDS>>А, вот о чём! Согласен. Но в C++ нет некоторых возможностей Delphi — вот я и не могу перейти на него. Иначе бы все уже давно на Delphi плюнули.

WH>На дельфе хорошо только формочки клепать. А как язык дельфи отстает от С++ по всем параметрам.

Нет.

WH>В принципе есть тандартная связка формочки на VB6 + inproc COM cerver на С++.

WH>В место VB6 можно взять дельфи.

Жуть. Что ты предлагаешь, !

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

FDS>>Может напишу ответ... через месяцок так...
WH>Попробуй, попробуй...

Уже. Где-то тут есть, э-э-э, чёрт, не могу найти, но точно есть ответ.

WH>А сейчас в недрах мелкософта создается очень интересный оптимизатор который можно будет расширять своими правилами.


Откуда знаешь?

S>>>Код, сгенерированный компилятором Intel, ты будешь догонять месяцами. А изучая дизассемблернуый код, будешь периодически всплескивать руками и говорить "не может быть! Это должно работать медленнее, чем у меня".

FDS>>Где это я его буду догонять, на своём AMD Athlon?
WH>Ну код интеловского компилятори и на атлонах работает не плохо...

Это было язвительно замечание.

FDS>>Много нового, насколько я помню, случилось в .NET. А в VS for Windows, если только мастера изменились. В прочем, может я что-то важное упустил?!

WH>Ну да так по мелочи... довили язык до 98%ного соответствия стандарту, улучшели оптимизатор...

А мне то что от этого. Мне наплевать... Мне не то нужно.
Re[26]: Предложения по улучшению
От: FDSC Россия consp11.github.io блог
Дата: 15.06.05 12:47
Оценка:
Здравствуйте, WolfHound.

ЧУШЬ. ЧУШь. ЧУшь. Чушь. чушь....


Умные указатели в Delphi есть, прада только в строковых типах.
Re[9]: Частота ошибок в зависимости от языка: что делать?
От: FDSC Россия consp11.github.io блог
Дата: 15.06.05 12:49
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Сергей Губанов wrote:


>> C>Когда же прекратят издеваться над школьниками....

>> Что Вы имеете в виду?

C>Использовать мертвые, неудобные и никому ненужные языки. Уж лучше бы

C>Питон изучали — от него хоть польза есть.

По моему над школьниками совсем не так издеваются — заставляют их делать всякую чушь.
Эта тема отдельного форума, и не на RSDN.
Re[27]: Предложения по улучшению
От: Cyberax Марс  
Дата: 15.06.05 13:25
Оценка:
FDSC wrote:

>00401070 xor eax,eax

> while (C[A++] != B && A < K);
>00401072 mov edx,dword ptr [esi+eax*4]
>00401075 inc eax
>00401076 cmp edx,7
>00401079 je main+82h (401082h)
>0040107B cmp eax,2000000h
>00401080 jl main+72h (401072h)
>
> Стандартный код: хуже трудно сделать. Может настройки не те:
> «/O2 /Ot /G6 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /EHsc
> /ML /GS /Yu"stdafx.h" /Fp"Release/TestAsm.pch" /Fo"Release/"
> /Fd"Release/vc70.pdb" /W3 /nologo /c /Wp64 /Zi /TP»?

C:\temp\test\release>test.exe
1: VC compiler: 1253 (33554431); asm: 1001 (33554431)
2: VC compiler: 1002 (33554431); asm: 1012 (33554431)
3: VC compiler: 1008 (33554431); asm: 1002 (33554431)
4: VC compiler: 1002 (33554431); asm: 1012 (33554431)
5: VC compiler: 1055 (33554431); asm: 1041 (33554431)
E = 0

Ассемблерный код писать не буду — они там циклы раскатал. Компилятор:
Intel 8.1, процессор: Intel Pentium M 1.8GHz.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[27]: Предложения по улучшению
От: WolfHound  
Дата: 15.06.05 13:25
Оценка: 1 (1)
Здравствуйте, tarkil, Вы писали:

WH>>В С++ тоже есть RTTI. Несколько скромнее чем в дельфе но есть.

T>Ага, несколько. "Москвич-412" он тоже несколько хуже, чем Toyota Mark II.
А что такого крутого в дельфийском RTTI? Возможность перебрать свойства в published секции?
Вот только толку от этого мало.
А учитывая что в следующем стандарте наверняка появится compile time reflection то дельфя будет мягко говоря нервно курить в углу.
Хотя скорее всего она не доживет ибо ее убъет .НЕТ

T>Второй раз слышу этот тезис. Кто-нибудь мне расскажет о том, в чём концептуальной отличие фабрики от конструктора?! Вроде б и та и тот задачей ставят создание целостного объекта (банду четырёх я читал, не помогло).

Ты вобще понимаешь механику работы конструкторов/деструкторов в С++?

T>Форматирование строк. Поточный вывод не слишком-то удобен на практике оказался, хотя концепция и реализация очень изящны. Ещё пару применений можно придумать.

Смотри boost::format
    cout << format("%1% %2% %3% %2% %1% \n") % "o" % "oo" % "O";
    //          prints  "o oo O oo o \n"


T>Ага. Это здорово. Только исходное сообщение было в том духе, что "Дельфи вчистую проигрывает C++". Я и привёл пару примеров, где он выигрывает. Не заявляя об идеальности. А C++ в целом на порядок мощнее, кто б спорил — это ж целый огромный полигон для экспериментов.

Угу. Вот только на дельфевем RTTI далеко не уедешь, фабрики нужны гораздо реже чем полноценные конструкторы к томуже фабрику легко написать, а вот сэмулировать конструктор на дельфе , переменное число параметров нафиг не упало см выше.
ИТОГО: Отсутствие необходимых инструментов компенсируется парой сомнительных фичек
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[27]: Предложения по улучшению
От: WolfHound  
Дата: 15.06.05 13:25
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>ЧУШЬ. ЧУШь. ЧУшь. Чушь. чушь....

Аргументы будут?

FDS>Умные указатели в Delphi есть, прада только в строковых типах.

А толку? Умные указатели нужны везде. Только строки меня не устраивают.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.