Re[5]: За что я не люблю С++
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.05.09 14:01
Оценка: :)
Здравствуйте, criosray, Вы писали:

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

C>С мира по нитке..

И будет гора ниток.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: За что я не люблю С++
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 26.05.09 14:04
Оценка:
Здравствуйте, March_rabbit, Вы писали:

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


M>>Объект с циклическими ссылками и членами — указателями на другие объекты. Плюс является наследником другого объекта так, чтобы не надо было явно указывать:

M>>
M>>ar & boost::serialization::base_object<bus_stop>(*this) & name;
M>>


M>>Ведь в С++ тонны метаинформации! © Он что, не может сам узнать, что там сериализовывать из родительского класса?

M_>а что, какой-нибудь мегаумный мегаязык способен провести сериализацию объекта с циклическими ссылками?
M_>здорово, если так.

Ты удиишься.
Re[6]: За что я не люблю С++
От: criosray  
Дата: 26.05.09 14:12
Оценка: +2 :)))
Здравствуйте, Геннадий Васильев, Вы писали:

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

C>>С мира по нитке..

ГВ>И будет гора ниток.


Гора ниток — очень точная характеристика с++.
Re[4]: За что я не люблю С++
От: criosray  
Дата: 26.05.09 14:17
Оценка: -1 :))
Здравствуйте, Геннадий Васильев, Вы писали:

C>>В статье почти все правда. Просто преподнесена она так, чтоб сильно задеть программистов С++ и местами немного искажена.


ГВ>Угу, искажена вплоть до своей противоположности.


Нет.

C>>А некоторые языки (а именно С++) не имеют таких базовых понятий как: свойства, атрибуты, события, делегаты, лямбда-выражения, замыкания, duck typing, интерфейсы, covariance и contravariance, и много другого.


ГВ>свойства — синтезируется;

Нет.
ГВ>атрибуты (в смысле сопоставляемых метаданных) — синтезируется;
Нет.
ГВ>события — синтезируется;
Нет.
ГВ>делегаты — синтезируется;
Нет.
ГВ>лямбда-выражения — есть в C++0x;
Не есть, а будет. В данном топике речь вроде как не о C++0x вовсе.
ГВ>замыкания — есть в C++0x;
Не есть, а будет. В данном топике речь вроде как не о C++0x вовсе.
ГВ>duck typing — статический (и это очень хорошо);
Может Вы для начала узнаете для себя что такое утятина?
ГВ>интерфейсы — полностью выражается средствами pure virtual;
Костыль.
ГВ>covariance/contravariance — где именно их нет (ковариантные возвращаемые значения есть)?
Нигде их нет.

MX>>>13) "средств получить информацию о типе-параметре в языке просто нет" . Язык С++ на столько крут, что "в языке" это и не нужно — можно написать библиотеку. boost::is_abstract, is_arithmetic, is_array, is_base_and_derived, is_base_of, is_class, is_complex, is_compound, is_const...

C>>О, ужас.
ГВ>А что не так?
А Вы сами не видете?

MX>>>После слов "Это конечно здорово, но вот как узнать является ли этот тип каким-либо из элементарных типов, указателем или ссылкой ? Является ли он const или нет ?" этого профана сил осиливать его поток у меня не осталось.

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

ГВ>Глупость он сказал. Элементарных типов очень мало, указатели и ссылочные типы определяются на раз. И таких натяжек полна статья.

Нет.
Re[6]: За что я не люблю С++
От: criosray  
Дата: 26.05.09 14:19
Оценка: +1
Здравствуйте, March_rabbit, Вы писали:

M>>Ведь в С++ тонны метаинформации! © Он что, не может сам узнать, что там сериализовывать из родительского класса?

M_>а что, какой-нибудь мегаумный мегаязык способен провести сериализацию объекта с циклическими ссылками?
M_>здорово, если так.

Конечно есть. Только этим не язык занимается.
Re[6]: За что я не люблю С++
От: Mamut Швеция http://dmitriid.com
Дата: 26.05.09 14:22
Оценка: +1
MX> M>Объект с циклическими ссылками и членами — указателями на другие объекты.

MX> libs\serialization\test\test_cyclic_ptrs.cpp


MX> M>Плюс является наследником другого объекта так, чтобы не надо было явно указывать:

MX> M>
MX> M>ar & boost::serialization::base_object<bus_stop>(*this) & name;
MX> M>


MX> Думаю, что от этого можно избавиться.


Можно быо бы, в boost:serialize избавились бы

MX> Библиотека знает обо всех типах — могла бы сложить их в список типов, а при сериализации — найти все базы данного типа. Не думаю, что бывают случаи, когда (де)сериализовать наследника надо, на базу — нет. Хотя, с другой стороны, базЫ можно ситать такими же полямИ, и библиотека сама никак не может догадаться — сериализовать ли базу, или нет (если данная база не сериализуется, то понятно, что не надо, а если сериализуется?)


Все она может догадаться. Не в С++, естественно
avalon 1.0rc1 rev 239, zlib 1.2.3


dmitriid.comGitHubLinkedIn
Re[4]: За что я не люблю С++
От: LaptevVV Россия  
Дата: 26.05.09 14:29
Оценка: +1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>свойства — синтезируется;

ГВ>атрибуты (в смысле сопоставляемых метаданных) — синтезируется;
ГВ>события — синтезируется;
ГВ>делегаты — синтезируется;
Это говорит только о том, что в языке их не хватает.
ГВ>лямбда-выражения — есть в C++0x;
ГВ>замыкания — есть в C++0x;
Ага... Не прошло и 0х лет, как...
ГВ>duck typing — статический (и это очень хорошо);
Ну, нормально... Но не так строго, как в Виртовских языках...
ГВ>интерфейсы — полностью выражается средствами pure virtual;
Нормально. Но почему-то в других языках сочли необходимым такую конструкцию явно определить
ГВ>covariance/contravariance — где именно их нет (ковариантные возвращаемые значения есть)?
А ковариантные — это какие?
MX>>>13) "средств получить информацию о типе-параметре в языке просто нет" . Язык С++ на столько крут, что "в языке" это и не нужно — можно написать библиотеку. boost::is_abstract, is_arithmetic, is_array, is_base_and_derived, is_base_of, is_class, is_complex, is_compound, is_const...
C>>О, ужас.
ГВ>А что не так?
Дык ПИСАТЬ НАДО... А в других языках писать НЕ НАДО...
А челу требуется задачу решать, а не писать библиотеку...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: За что я не люблю С++
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.05.09 14:30
Оценка:
Здравствуйте, criosray, Вы писали:

ГВ>>Угу, искажена вплоть до своей противоположности.

C>Нет.

Да ну? А как же RTTI, за который автору почему-то всегда приходится платить? Определение типов данных — из той же оперы.

C>>>А некоторые языки (а именно С++) не имеют таких базовых понятий как: свойства, атрибуты, события, делегаты, лямбда-выражения, замыкания, duck typing, интерфейсы, covariance и contravariance, и много другого.

ГВ>>свойства — синтезируется;
C>Нет.

Поиск тебе в помощь.

ГВ>>атрибуты (в смысле сопоставляемых метаданных) — синтезируется;

C>Нет.

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

ГВ>>события — синтезируется;

C>Нет.
ГВ>>делегаты — синтезируется;
C>Нет.

Этому топику
Автор: Геннадий Васильев
Дата: 28.08.02
больше шести лет.

ГВ>>лямбда-выражения — есть в C++0x;

C>Не есть, а будет. В данном топике речь вроде как не о C++0x вовсе.
ГВ>>замыкания — есть в C++0x;
C>Не есть, а будет. В данном топике речь вроде как не о C++0x вовсе.

Уже есть. Что там когда было — не суть.

ГВ>>duck typing — статический (и это очень хорошо);

C>Может Вы для начала узнаете для себя что такое утятина?

Раньше предлагали устрицы. Снижается классность, снижается.

ГВ>>интерфейсы — полностью выражается средствами pure virtual;

C>Костыль.

Понятно. "Толстенькая — скоро лопнет с жиру." (c)

ГВ>>covariance/contravariance — где именно их нет (ковариантные возвращаемые значения есть)?

C>Нигде их нет.

А в документации есть. Дока врёт?

C>>>О, ужас.

ГВ>>А что не так?
C>А Вы сами не видете?

А по сути?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[7]: За что я не люблю С++
От: March_rabbit  
Дата: 26.05.09 14:36
Оценка:
Здравствуйте, gandjustas, Вы писали:

M>>>Ведь в С++ тонны метаинформации! © Он что, не может сам узнать, что там сериализовывать из родительского класса?

M_>>а что, какой-нибудь мегаумный мегаязык способен провести сериализацию объекта с циклическими ссылками?
M_>>здорово, если так.

G>Ты удиишься.

и где?
Re[7]: За что я не люблю С++
От: March_rabbit  
Дата: 26.05.09 14:37
Оценка:
Здравствуйте, criosray, Вы писали:

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


M>>>Ведь в С++ тонны метаинформации! © Он что, не может сам узнать, что там сериализовывать из родительского класса?

M_>>а что, какой-нибудь мегаумный мегаязык способен провести сериализацию объекта с циклическими ссылками?
M_>>здорово, если так.

C>Конечно есть. Только этим не язык занимается.

ТОгда вопрос: при чем тут С++?
Re[5]: За что я не люблю С++
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.05.09 14:43
Оценка: -1
Здравствуйте, LaptevVV, Вы писали:

ГВ>>свойства — синтезируется;

ГВ>>атрибуты (в смысле сопоставляемых метаданных) — синтезируется;
ГВ>>события — синтезируется;
ГВ>>делегаты — синтезируется;
LVV>Это говорит только о том, что в языке их не хватает.

Ну вот, теперь твоя очередь. ИМХО, если фича синтезируется, то и рассуждать не о чем.

ГВ>>лямбда-выражения — есть в C++0x;

ГВ>>замыкания — есть в C++0x;
LVV>Ага... Не прошло и 0х лет, как...

Ну, тем не менее.

ГВ>>duck typing — статический (и это очень хорошо);

LVV>Ну, нормально... Но не так строго, как в Виртовских языках...

Так и способ использования другой, AFAIK.

ГВ>>интерфейсы — полностью выражается средствами pure virtual;

LVV>Нормально. Но почему-то в других языках сочли необходимым такую конструкцию явно определить

Видимо, из-за отсутствия множественного наследования.

ГВ>>covariance/contravariance — где именно их нет (ковариантные возвращаемые значения есть)?

LVV>А ковариантные — это какие?

class A {
  public:
    virtual A *f(){ ... }
};

class B : public A {
  public:
    virtual B *f(){ ... }
};



MX>>>>13) "средств получить информацию о типе-параметре в языке просто нет" . Язык С++ на столько крут, что "в языке" это и не нужно — можно написать библиотеку. boost::is_abstract, is_arithmetic, is_array, is_base_and_derived, is_base_of, is_class, is_complex, is_compound, is_const...

C>>>О, ужас.
ГВ>>А что не так?
LVV>Дык ПИСАТЬ НАДО... А в других языках писать НЕ НАДО...
LVV>А челу требуется задачу решать, а не писать библиотеку...

Дык — не надо ж. Он там в качестве контраргумента всё время рассуждает о непонятности внутреннего устройства буста.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: За что я не люблю С++
От: blackhearted Украина  
Дата: 26.05.09 14:47
Оценка: +1
Здравствуйте, dmitry_npi, Вы писали:

_>Да нет, я-то сам его люблю. Случайно наткнулся на статью здесь.

_>Он не просто его, не любит, он его ненавидит. И других заразить пытается.
_>Вот, думаю, тролль Отличная приманка для священной войны.

Это чё еще за фигня?


Однако в случае многонитевых приложений подобная политика запросто приводит к возникновению т.н. raise condition, например, одна нить может уничтожить одну переменную, а другая — что-то записать в нее.

Re[8]: За что я не люблю С++
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 26.05.09 14:48
Оценка: +1
Здравствуйте, March_rabbit, Вы писали:

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


M>>>>Ведь в С++ тонны метаинформации! © Он что, не может сам узнать, что там сериализовывать из родительского класса?

M_>>>а что, какой-нибудь мегаумный мегаязык способен провести сериализацию объекта с циклическими ссылками?
M_>>>здорово, если так.

G>>Ты удиишься.

M_>и где?
Везде. java и .NET точно умеет, в остальных не проверял.
Вообще говоря в основе такой сериализации лежит алгоритм нахождения связных кусков на графе.
Если есть нормальные метаданные в языке, то с объектами такое выполняется элементарно.
Re[6]: За что я не люблю С++
От: criosray  
Дата: 26.05.09 14:50
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>>>Угу, искажена вплоть до своей противоположности.

C>>Нет.

ГВ>Да ну? А как же RTTI, за который автору почему-то всегда приходится платить? Определение типов данных — из той же оперы.

Ну и где тут противоположность?

C>>>>А некоторые языки (а именно С++) не имеют таких базовых понятий как: свойства, атрибуты, события, делегаты, лямбда-выражения, замыкания, duck typing, интерфейсы, covariance и contravariance, и много другого.

ГВ>>>свойства — синтезируется;
C>>Нет.

ГВ>Поиск тебе в помощь.


Открываем стандарт С++, смотрим, не находим, извиняемся?

ГВ>>>атрибуты (в смысле сопоставляемых метаданных) — синтезируется;

C>>Нет.
ГВ>Как так? Неужто нельзя приклеить к объекту никаких данных? Ни указателем, ни базовым классом?
Это не атрибуты. Почитайте чтоли что такое атрибуты.

public  class TraceAttribute : OnMethodBoundaryAspect
{
  public override void OnEntry( MethodExecutionEventArgs eventArgs)
  {
    Trace.TraceInformation("Entering {0}.", eventArgs.Method);
    Trace.Indent();
  }
  public override void OnExit( MethodExecutionEventArgs eventArgs)
  {
    Trace.Unindent();
    Trace.TraceInformation("Leaving {0}.", eventArgs.Method);
  }
}



    [Trace( "MyCategory" )]
    private static void SayHello()
    {
        Console.WriteLine("Hello, world." );
    }
 
    [Trace("MyCategory")]
    private static void SayGoodBye()
    {
        Console.WriteLine("Good bye, world.");
    }




MyCategory: Entering Program.SayHello.
Hello world.
MyCategory: Leaving Program.SayHello.
MyCategory: Entering Program.SayGoodBye.
Good bye, world.
MyCategory: Leaving Program.SayGoodBye.




ГВ>>>события — синтезируется;

C>>Нет.
ГВ>>>делегаты — синтезируется;
C>>Нет.

ГВ>Этому топику
Автор: Геннадий Васильев
Дата: 28.08.02
больше шести лет.


Это костыли, пытающиеся их эмулировать. В языке их НЕТ.

ГВ>>>лямбда-выражения — есть в C++0x;

C>>Не есть, а будет. В данном топике речь вроде как не о C++0x вовсе.
ГВ>>>замыкания — есть в C++0x;
C>>Не есть, а будет. В данном топике речь вроде как не о C++0x вовсе.
ГВ>Уже есть. Что там когда было — не суть.
Не уже есть, а будет тогда, когда будет выпущен релиз компилятора языка С++0x.
И повторяю С++0x != C++, о котором речь.

ГВ>>>duck typing — статический (и это очень хорошо);

C>>Может Вы для начала узнаете для себя что такое утятина?
ГВ>Раньше предлагали устрицы. Снижается классность, снижается.
Ликбез: утятина не может быть статической. По определению. Не пишите больше таких глупостей, ок?


ГВ>>>covariance/contravariance — где именно их нет (ковариантные возвращаемые значения есть)?

C>>Нигде их нет.
ГВ>А в документации есть. Дока врёт?
Ссылку на соответствующий раздел документации в студию.

C>>>>О, ужас.

ГВ>>>А что не так?
C>>А Вы сами не видете?
ГВ>А по сути?
А по сути — О, ужас. Других слов нет.
Re[6]: За что я не люблю С++
От: LaptevVV Россия  
Дата: 26.05.09 15:08
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

LVV>>Это говорит только о том, что в языке их не хватает.

ГВ>Ну вот, теперь твоя очередь. ИМХО, если фича синтезируется, то и рассуждать не о чем.
Не... Есть... Синтезируется — это не стандарт определения языка, а реализация конкретного разработчика интегрированной среды...
При переходе со среды на среду — придется разбираться, как там эти фичи синтезированы.
ГВ>>>лямбда-выражения — есть в C++0x;
ГВ>>>замыкания — есть в C++0x;
LVV>>Ага... Не прошло и 0х лет, как...
ГВ>Ну, тем не менее.
Ну так еще и нет жиж...
ГВ>>>duck typing — статический (и это очень хорошо);
LVV>>Ну, нормально... Но не так строго, как в Виртовских языках...
ГВ>Так и способ использования другой, AFAIK.
Ну, в этом вопросе более-менее нормально.
ГВ>>>интерфейсы — полностью выражается средствами pure virtual;
LVV>>Нормально. Но почему-то в других языках сочли необходимым такую конструкцию явно определить
ГВ>Видимо, из-за отсутствия множественного наследования.
Видимо, множественное наследование ликвидировали из-за наличия озвученных проблем. И сочли за благо ввести отдельную конструкцию.
ГВ>>>covariance/contravariance — где именно их нет (ковариантные возвращаемые значения есть)?
LVV>>А ковариантные — это какие?
ГВ>
ГВ>class A {
ГВ>  public:
ГВ>    virtual A *f(){ ... }
ГВ>};
ГВ>class B : public A {
ГВ>  public:
ГВ>    virtual B *f(){ ... }
ГВ>};
ГВ>

А, ну да... Видимо противники имеют ввиду, что полноценный объект ковариантно возвратить нельзя.

ГВ>>>А что не так?

LVV>>Дык ПИСАТЬ НАДО... А в других языках писать НЕ НАДО...
LVV>>А челу требуется задачу решать, а не писать библиотеку...
ГВ>Дык — не надо ж. Он там в качестве контраргумента всё время рассуждает о непонятности внутреннего устройства буста.
Для него — действительно жуть... Меня тоже только крайняя нужда заставит буст использовать...
Но вообще статья, конечно, оставляет впечатление, что писал достаточно опытный программер, которому ПРИШЛОСЬ перейти на С++ по необходимости.
А это — действительно УЖОСССССС!!!!!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[7]: За что я не люблю С++
От: esil  
Дата: 26.05.09 15:19
Оценка: +1
Здравствуйте, criosray, Вы писали:

ГВ>>>>covariance/contravariance — где именно их нет (ковариантные возвращаемые значения есть)?
C>>>Нигде их нет.
ГВ>>А в документации есть. Дока врёт?
C>Ссылку на соответствующий раздел документации в студию.


ISO/IEC 14882, пункт 10.3.5
Re[7]: За что я не люблю С++
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.05.09 15:22
Оценка:
Здравствуйте, criosray, Вы писали:

ГВ>>Да ну? А как же RTTI, за который автору почему-то всегда приходится платить? Определение типов данных — из той же оперы.

C>Ну и где тут противоположность?

Дык, отключается же RTTI даже в одиозном MSVC6. Определить типы данных — опять таки можно.

ГВ>>Поиск тебе в помощь.

C>Открываем стандарт С++, смотрим, не находим, извиняемся?

Нет, в смысле — в гугль. Слова C++ и property.

ГВ>>>>атрибуты (в смысле сопоставляемых метаданных) — синтезируется;

C>>>Нет.
ГВ>>Как так? Неужто нельзя приклеить к объекту никаких данных? Ни указателем, ни базовым классом?
C>Это не атрибуты. Почитайте чтоли что такое атрибуты.

Нет, ну в смысле взаимодействия с компилятором — да, такого нет. А вообще сопоставить данные с классом совсем не сложно.

ГВ>>Этому топику
Автор: Геннадий Васильев
Дата: 28.08.02
больше шести лет.

C>Это костыли, пытающиеся их эмулировать. В языке их НЕТ.

О-о-о... Это повод для большого флейма — какими должны быть делегаты.

C>Не уже есть, а будет тогда, когда будет выпущен релиз компилятора языка С++0x.

C>И повторяю С++0x != C++, о котором речь.

Я тебе скажу больше MSVC6 != MSVC2K5, MSVC2K5 != MSVC2K10 и т.п. Что теперь, ругаться на C++, оперируя глюками MSVC6? И кроме того, внимательно смотрим на дату сообщения.

ГВ>>>>duck typing — статический (и это очень хорошо);

C>>>Может Вы для начала узнаете для себя что такое утятина?
ГВ>>Раньше предлагали устрицы. Снижается классность, снижается.
C>Ликбез: утятина не может быть статической. По определению. Не пишите больше таких глупостей, ок?

Что-то ничего не понимаю
Автор: VladD2
Дата: 25.05.09
.

ГВ>>>>covariance/contravariance — где именно их нет (ковариантные возвращаемые значения есть)?

C>>>Нигде их нет.
ГВ>>А в документации есть. Дока врёт?
C>Ссылку на соответствующий раздел документации в студию.

ISO/ANSI 14882:1998, Раздел 10.3.5.

ГВ>>А по сути?

C>А по сути — О, ужас. Других слов нет.

Понятно. Нет, так нет.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[8]: За что я не люблю С++
От: criosray  
Дата: 26.05.09 15:25
Оценка:
Здравствуйте, esil, Вы писали:

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


E>

ГВ>>>>>covariance/contravariance — где именно их нет (ковариантные возвращаемые значения есть)?
C>>>>Нигде их нет.
ГВ>>>А в документации есть. Дока врёт?
C>>Ссылку на соответствующий раздел документации в студию.


E>ISO/IEC 14882, пункт 10.3.5


Нету contravariance. Нету.


The return type of an overriding function shall be either identical to the return type of the overridden func-
tion or covariant
with the classes of the functions.

Re[8]: За что я не люблю С++
От: criosray  
Дата: 26.05.09 15:33
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>>Поиск тебе в помощь.

C>>Открываем стандарт С++, смотрим, не находим, извиняемся?

ГВ>Нет, в смысле — в гугль. Слова C++ и property.


Еще раз для тех, кто читать не умеет: открываем стандарт С++, смотрим, не находим, извиняемся.

ГВ>>>>>атрибуты (в смысле сопоставляемых метаданных) — синтезируется;

C>>>>Нет.
ГВ>>>Как так? Неужто нельзя приклеить к объекту никаких данных? Ни указателем, ни базовым классом?
C>>Это не атрибуты. Почитайте чтоли что такое атрибуты.

ГВ>Нет, ну в смысле взаимодействия с компилятором — да, такого нет. А вообще сопоставить данные с классом совсем не сложно.


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

ГВ>>>Этому топику
Автор: Геннадий Васильев
Дата: 28.08.02
больше шести лет.

C>>Это костыли, пытающиеся их эмулировать. В языке их НЕТ.
ГВ>О-о-о... Это повод для большого флейма — какими должны быть делегаты.
Какого флейма? Они либо есть, либо их нет. В С++ их нет. О чем тут флеймить? Аналогично linq, lambda, events, attributes, properties, implicit typing, duck typing и многое другое.

C>>Не уже есть, а будет тогда, когда будет выпущен релиз компилятора языка С++0x.

C>>И повторяю С++0x != C++, о котором речь.
ГВ>Я тебе скажу больше MSVC6 != MSVC2K5, MSVC2K5 != MSVC2K10 и т.п. Что теперь, ругаться на C++, оперируя глюками MSVC6? И кроме того, внимательно смотрим на дату сообщения.
Замечательно. "Все смешалось в доме Облонских". Вы разницу между языком программирования и средой разработки не видите совсем?

ГВ>>>>>duck typing — статический (и это очень хорошо);

C>>>>Может Вы для начала узнаете для себя что такое утятина?
ГВ>>>Раньше предлагали устрицы. Снижается классность, снижается.
C>>Ликбез: утятина не может быть статической. По определению. Не пишите больше таких глупостей, ок?
ГВ>Что-то ничего не понимаю
Автор: VladD2
Дата: 25.05.09
.

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

ГВ>>>>>covariance/contravariance — где именно их нет (ковариантные возвращаемые значения есть)?

C>>>>Нигде их нет.
ГВ>>>А в документации есть. Дока врёт?
C>>Ссылку на соответствующий раздел документации в студию.

ГВ>ISO/ANSI 14882:1998, Раздел 10.3.5.


Нету там contravariance.
Re[3]: За что я не люблю С++
От: -MyXa- Россия  
Дата: 26.05.09 15:33
Оценка: 2 (1) +1
Здравствуйте, criosray, Вы писали:

C>В статье почти все правда. Просто преподнесена она так, чтоб сильно задеть программистов С++ и местами немного искажена.


Почти всё? Примеры?

C>Отлично. Напишите универсальный сериализатор в XML/Json.


Жду списка недостатков следующих библиотек:

TinyJSON
jsoncpp
zoolib
Jaula
JOST
JSON Spirit
CAJUN

C>RTTI очень слабое подобие метаинформации в управляемых языках.


Я пишу веб-сервисы на С++, биндинг одному малоизвестному языку программирования, библиотеку seamless integration для написания хранимых процедур на С++ для MS-SQL и много ещё чего, но НИГДЕ мне не нужен был RTTI. А Вы для чего RTTI использовали?

MX>>2) "Много ли Вы знаете простых и удобных persistence-библиотек". Ды, уж знаем, несколько.


C>Простых? Удобных?

C>"Огласите весь список пжалуста!"

"Всего даже я не знаю". Я пользовлся Boost.Serialization, SF из RCF и одной собственного изготовления.
А по поводу простоты, расскажите нам на пальцах — как в Яве не сериализовать какое-нубудь поле в сериализуемом классе? И ещё хотелось бы про версионизацию тоже узнать.

MX>>8) "А как же исключения (exceptions), а как же RTII ?. За них то я всегда плачу всегда !!!". Караул! Заявляю — RTII в С++ никогда не было,

C>RTTI, а не RTII в С++ было, есть и будет.

У аффтара — RTII. Вообще, у него в тексте вагон опечаток. У него, наверное, ко всему такой подход.

MX>>и не предвидится следующие лет 10 точно.

C>Какой кошмар...

Зато — правда.

MX>>9) "будет изменена лишь копия объекта, которая сразу же после этого будет разрушена. Здорово, а ?". А некоторые языки, например, не позвляют выразить тот факт, что переданный в метод объект не будет изменён методом, которые принимает этот объект в качестве параметра.


А на это есть что ответить?

C>А некоторые языки (а именно С++) не имеют таких базовых понятий как: свойства, атрибуты, события, делегаты, лямбда-выражения, замыкания, duck typing, интерфейсы, covariance и contravariance, и много другого.


Вы считает это _базовыми_ понятиями? Очень интересно. А Вы знаете, что даже цикл — не базовое понятие?
свойств в языке нет, но это не значит, что нельзя написать window.visible = true, чтобы лучше разглядеть окно.
атрибуты? простите, за безграмотность.
события, делегаты? они в каком-то есть языке? круто. а мы, опять-таки — библиотеками обходимся.
лямбда-выражения, замыкания? в старом стандерте-таки да — нет. Но это не мешает нам написать std::for_each(c.begin(), c.end(), std::cout << _1 * _1 << std::endl);
duck typing? покажите пример на Яве, скажу спасибо. А template в С++ — это не оно? Точно? А почему?
интерфейсы? тоже отсутствуют. Покажите пример кода на С++, который будет красивее, будь в нём интерфейсы.
covariance и contravariance?

This variance refers to the parameters and return types of an overridden method in a descendant class. C++ supports this for covariance of return types. Return types and out parameters may be covariant, input parameters may be contravariant, and in-out parameters must be invariant. C++ example: ...

и дальше

"Neither C#, the CLI nor Java support override variance. C++ supports return type override covariance, but not override contravariant input arguments. C++/CLI doesn't support override covariant return types for managed classes. It gives this error:

error C2392: 'Dog ^Dog::GetValue(void)' : covariant returns types are
not supported in managed types, otherwise 'Mammal ^Mammal::GetValue(void)' would be overridden



MX>>13) "средств получить информацию о типе-параметре в языке просто нет" . Язык С++ на столько крут, что "в языке" это и не нужно — можно написать библиотеку. boost::is_abstract, is_arithmetic, is_array, is_base_and_derived, is_base_of, is_class, is_complex, is_compound, is_const...

C>О, ужас.

Подробности будут?

MX>>После слов "Это конечно здорово, но вот как узнать является ли этот тип каким-либо из элементарных типов, указателем или ссылкой ? Является ли он const или нет ?" этого профана сил осиливать его поток у меня не осталось.

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

Таки-да, отвечать на весь текст мне не захотелось. Если-б у него было достаточно ума, чтобы обсуждать дефекты стандарта С++ — другое дело. "аргументированно ответить", говорите? Среди моих ответов нет таких — "О, ужас.". А про "как узнать является ли этот тип каким-либо из элементарных типов, указателем или ссылкой ? Является ли он const или нет ?" я ответил выше.
Если не поможет, будем действовать током... 600 Вольт (C)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.