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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перегрузка оператора =, трабл 
V
    Опции темы
neutrino
Дата 20.10.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Приветствую!

Последний раз с С++ сидел очень давно. Вот настряпал код, на который компилятор начал ругаться:
Код

class A
{
public:
    A operator+(const A& a)
    {
    }

    A& operator=(const A& a)
    {
    }
};

class B : public A
{
public:
    B()
    {
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    B b1, b2;

    b1 = b1 + b2;
}


Цитата

error C2679: binary '=' : no operator found which takes a right-hand operand of type 'A' (or there is no acceptable conversion)    

Я так понимаю, оператор + возвращает объект класса А, а у В нет бинарного оператора = который берет справа объект класса А. Но ведь у предка В (А) есть оператор = который берет справа А, а по скольку объект В является всегда и объектом А, то все должно сработать. Что я не догоняю?

Необходимо, чтобы это все скомпилилось. Пока реализации нет, но это и неважно.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
azesmcar
Дата 20.10.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



neutrino

Цитата(Standard)

An assignment operator shall be implemented by a non-static member function with exactly one parameter.
Because a copy assignment operator operator= is implicitly declared for a class if not declared by the
user (12.8), a base class assignment operator is always hidden by the copy assignment operator of the
derived class.



PM   Вверх
zim22
Дата 20.10.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

Репутация: 24
Всего: 69



происходит это, потому что объекту производного класса нельзя присваивать объекты базового. Можно наоборот, но тогда произойдёт "срезка" объекта.
Код

struct Base { };
struct Derived : Base { };

Base b;
Derived d;
b = d; // OK (срезка)
d = b; // error


Это сообщение отредактировал(а) zim22 - 20.10.2009, 15:17


--------------------
PM MAIL   Вверх
neutrino
Дата 20.10.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



На самом деле, если рассматривать перегрузку оператора, как перегрузку функции, то эти аргументы не катят. Ведь я могу использовать скажем перегруженный оператор = с А для переписывания полей А, а для переписывания полей Б уже использовать оператор = перегруженный в Б. Что-то типа:

Код

class A
{
public:
    A& operator+(const A& a){}
    A& operator=(const A& a){}
}

class B : A
{
public:
    B& operator=(const B& b)
    {
        this = (A)b;
        // Copy here fields of B
    }
}


Но по аналогии с функциями это дело не компилится. Значит мне нужно перегружать в В оператор = который берет как аргумент объект класса А. Но ведь тогда получается совсем лишний и дурацкий оператор в В:
Код

class B : A
{
public:
    B& operator=(const A& a)
    {
        ((A)this) = a;
    }
}


Как правильно разрулить ситуацию???
Цитата(azesmcar @  20.10.2009,  11:39 Найти цитируемый пост)
Because a copy assignment operator operator= is implicitly declared for a class if not declared by the
user (12.8), a base class assignment operator is always hidden by the copy assignment operator of the
derived class.

То есть в потомках ВСЕГДА надо перегружать все операторы =, которые были перегружены в предке??? Что-то какашка какая-то или я опять не понял...

Добавлено через 1 минуту и 24 секунды
Цитата(zim22 @  20.10.2009,  14:16 Найти цитируемый пост)
происходит это, потому что объекту производного класса нельзя присваивать объекты базового. Можно наоборот, но тогда произойдёт "срезка" объекта.

Да, как-то об этом не подумал.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
azesmcar
Дата 20.10.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Цитата(neutrino @  20.10.2009,  15:31 Найти цитируемый пост)
То есть в потомках ВСЕГДА надо перегружать все операторы =, которые были перегружены в предке??? Что-то какашка какая-то или я опять не понял... 

Ну в принципе да. Но это нормально. Представим ситуацию.
Код

class A
{
public:
    A& operator = (int q) {
        this->a = q;
        return *this;
    }
private:
    int a;
};

class B : public A
{
public:
private:
    int b;
};

int main()
{
    B b1;
    b1 = 1; // что ожидается здесь?
}

оператор хоть и написан в классе A, он скрыт в классе B, это логично, потому-что этот оператор НЕ ЯВЛЯЕТСЯ оператором присваивания для класса B, он не присваивает члены класса B, он работает для класса A, вот и прекрасно, пусть продолжает работать smile 

Это сообщение отредактировал(а) azesmcar - 20.10.2009, 15:51
PM   Вверх
neutrino
Дата 20.10.2009, 15:56 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Спасибо за объяснения!

[офтоп]
Вот еще почему Java рулит, так это потому, что там нет перегрузки операторов и подобной хрени. Ожидал от C# того же, но оказалось, что и там такая же какашка. По моему перегрузка операторов только путает больше. Исключением может быть уж очень интенсивное программирование каких-нибудь матриц или комплексных чисел где операторы сократят код. Хотя на моей практике в 6 лет таких примеров не было. ИМХО это лишнее. 
[/офтоп]


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
maxim1000
Дата 20.10.2009, 16:14 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ещё можно написать внутри B такое:
Код

using A::operator=;

тогда дублирования кода не будет

Это сообщение отредактировал(а) maxim1000 - 20.10.2009, 16:14


--------------------
qqq
PM WWW   Вверх
neutrino
Дата 24.10.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



maxim1000, Спасибо, то что надо!


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
niXman
Дата 24.10.2009, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

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



Цитата(neutrino @  20.10.2009,  13:56 Найти цитируемый пост)
По моему перегрузка операторов только путает больше.

Не представляю языка программирования без перегрузки операторов. Это огромное удобство, навязать объекту нужное тебе поведение.

Цитата(neutrino @  20.10.2009,  13:56 Найти цитируемый пост)
Хотя на моей практике в 6 лет таких примеров не было. ИМХО это лишнее.

Было. Просто вы не знали что это можно сделать намного проще, и сократить код.
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
neutrino
Дата 25.10.2009, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



niXman, 
Цитата(niXman @  24.10.2009,  17:03 Найти цитируемый пост)
Было. Просто вы не знали что это можно сделать намного проще, и сократить код.

Нет. Не было. В основном я разрабатывал инфраструктуру.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 26.10.2009, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(niXman @  24.10.2009,  17:03 Найти цитируемый пост)
и сократить код.

I кстати, как можно сократить код с помощью перегрузки операторов? Ведь все, что можно это:

вместо:
someObject.add(anotherObject);

написать:
someObject += anotherObject;

Может быть, если кто-то интенсивно использует какую-нибудь область математики v программировании, тo ему стоит перегрузить операторы. Например в линейной алгебре может оказаться полезно писать умножение через всеm понятный оператор *, а не функцию multiply. Но поскольку я в основном разрабатывал каждый раз что-то для другой области, то мне не стоилo перегружать операторы.

И вообще интересный факт, действительно почему в Java операторы нельзя перегружать? Почему разработчики этого языка не добавили такую возможность?

Я думаю, что код, который использует перегрузку операторов менее поддерживаемый.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
zim22
Дата 26.10.2009, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

Репутация: 24
Всего: 69



Цитата(neutrino @  26.10.2009,  10:11 Найти цитируемый пост)
И вообще интересный факт, действительно почему в Java операторы нельзя перегружать? 

http://stackoverflow.com/questions/77718/j...erator-overload
и ещё миллион ссылок в гугле


--------------------
PM MAIL   Вверх
niXman
Дата 26.10.2009, 10:25 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

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



Цитата(neutrino @  26.10.2009,  08:11 Найти цитируемый пост)
почему в Java операторы нельзя перегружать?

В комментарии к твоей репутации UnrealMan ответил.
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
zim22
Дата 26.10.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

Репутация: 24
Всего: 69



 smile 
Цитата(niXman @  26.10.2009,  10:25 Найти цитируемый пост)
В комментарии к твоей репутации UnrealMan ответил.

 smile 


--------------------
PM MAIL   Вверх
Kipter
Дата 26.10.2009, 12:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 2.5.2006

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



Перегрузка операторов применяется далеко не для простоты разработчика класса, а для простоты работы с этим классом - "клиентов".
В основном перегрузку операторов делают в качестве "интерфейса" объектов, и если вы наследуете класс с интерфейсом предназначенным на конечное использование то логично было бы что придется перегружать интерфейсные функции класса.

Если вам приходится наследовать класс с перегруженными операторами и появляется желание не перегружать их в классе-потомке, то следует задуматься а правильно ли вы спроектировали класс-предок и класс потомок =) Что делает такого потомок что для него у вас нет желания перегрузить операторы вновь? Может должно быть наоборот Предок должен быть потомком а потомок предком, или потомок вообще должен быть инкапсулирован в предок и т д

Механику перегрузки операторов придумывали не идиоты, все очень логично если вы понимаете что это не просто функции члены =)

 smile 
Цитата

Вот еще почему Java рулит, так это потому, что там нет перегрузки операторов и подобной хрени.

Знаете, если вы работаете на себя и перегрузка операторов для классов у вас нигде не оговорена в контракте или в соглашении группы разработчиков - то вас С++ НЕ ЗАСТАВЛЯЕТ пользоваться перегрузкой операторов, также как и не заставляет обязательно делать многое другое! (например не заставляет обязательно перехватывать все исключения)
Вы можете также как и в Java создавать функции члены (Add, Summ, Equa или как вы там еще их называете =) ) и пользоваться ими себе на здоровье =)

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

А по поводу Java - очень глупо сказано, не в том месте сравниваете языки =)
Да и сравниванием не рекомендую заниматься для разных задач они =)
и каждый в своей сфере хороши.
PM MAIL   Вверх
xvr
Дата 26.10.2009, 14:44 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(neutrino @ 20.10.2009,  15:56)
Вот еще почему Java рулит, так это потому, что там нет перегрузки операторов и подобной хрени.

Тогда Fortran IV должен вообще конкретно рулить - в нем вообще ничего нет  smile 
PM MAIL   Вверх
neutrino
Дата 27.10.2009, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Kipter, 
Цитата(Kipter @  26.10.2009,  11:55 Найти цитируемый пост)
А по поводу Java - очень глупо сказано, не в том месте сравниваете языки =)Да и сравниванием не рекомендую заниматься для разных задач они =)и каждый в своей сфере хороши.

Согласен полностью.

Цитата(xvr @  26.10.2009,  13:44 Найти цитируемый пост)
Тогда Fortran IV должен вообще конкретно рулить - в нем вообще ничего нет

Нu не надo только переиначивать мною сказанное. Я не на столько категоричен.

ОК. Народ, я вас понял. Просто я сейчас учу курс по ООП smile Просто работать начал и преостановиl учебу. Таk вот нам лектор преподает С++. Со многими вещами могу согласиться s вами. А особенно - каждому языкu свое применение. Пo моему С++ не настолько ориентироваn нa ООП как Java или C#. Чегo только стоит множественное наследование. И вообще код на Java/C# гораздo более поддерживаемый. Тут ничего не поделать. Java как пионер в этоj области многое выкинула из C++, чтобы как раз добиться этой легкоj поддерживаемости. И одно из выкинутых оказалась перегрузка операторов. 

Цитата(zim22 @  26.10.2009,  09:18 Найти цитируемый пост)
Цитата(neutrino @  26.10.2009,  10:11 )И вообще интересный факт, действительно почему в Java операторы нельзя перегружать? http://stackoverflow.com/questions/77718/j...erator-overloadи ещё миллион ссылок в гугле

Только вот толковых там очень мало.

Цитата(Kipter @  26.10.2009,  11:55 Найти цитируемый пост)
Знаете, если вы работаете на себя и перегрузка операторов для классов у вас нигде не оговорена в контракте или в соглашении группы разработчиков - то вас С++ НЕ ЗАСТАВЛЯЕТ пользоваться перегрузкой операторов, также как и не заставляет обязательно делать многое другое! (например не заставляет обязательно перехватывать все исключения)

Правильно. РОвно также каk i ассемблер ничегo не требует. Ну таk нa нем i ООП никто не пишет (кроме маньяков конечно).

Цитата(niXman @  26.10.2009,  09:25 Найти цитируемый пост)
В комментарии к твоей репутации UnrealMan ответил.

ОК. Прокомментирую тот комментариj smile
Цитата

Java рулит потому что кто-то не осилил перегрузку операторов. Это просто гениально! 

У меня был просто вопрос касательно того как правильно в моем случае перегружать оператор. Еще раз повторюсь, чтo пример не из реальной жизни, а задание с курса ООП. И так, u класса А есть какие-тo поля. Класс Б, который наследуется от А не добавляет никакиh данных а только расширяет функционал. Именно поэтому нет смысла перегружать оператор у потомка. Такая ситуация вероятна. Так вот единственный кто ответил по делу был конечно максим1000 за что емu большой респект (я думал оn только в алгоритмах ас). А осилил ли я операторы? Думаю, что не настолько, чтобы ответить нa поставленныj мною вопрос. Нo это не имеет отношения k Java. Java действительно больше подходит для ООП и частично потому, что таm неt перегрузки операторов, как я и написал в том посте на который АнриалМэн поставил мне -.  Я вот только не понимаю какую смысловую нагрузку несет в себе егo комментарий. Треп.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
xvr
Дата 27.10.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(neutrino @ 27.10.2009,  09:38)
А осилил ли я операторы? Думаю, что не настолько, чтобы ответить нa поставленныj мною вопрос. 

Тогда посмотри в сторону template'ов и метапрограмирования. После этого перегрузка операторов покажется детским лепетом  smile У меня тут студент взялся читать Александреску. Дочитал до конструкции
Код

template<
 class <class> Code
> SomeClass ...
 - до сих пор пытается волосы причесать (а они у него все еще дыбом стоят)  smile 

Цитата

Нo это не имеет отношения k Java. Java действительно больше подходит для ООП и частично потому, что таm неt перегрузки операторов,
Вот тут я не понимаю, как может что-то подходить больше для чего то исключительно потому что в нем чего то не хватает  smile 
Если нужен 'правильный' ООП - смотрите Smalltalk или Simula

PM MAIL   Вверх
neutrino
Дата 27.10.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(xvr @  27.10.2009,  11:15 Найти цитируемый пост)
Тогда посмотри в сторону template'ов и метапрограмирования. 

Вот именно! Разве волосы на голове должны вставать дыбом от хорошего кода? Кенн называет такой код - "код с душком". Хороший код должен быть легко поддерживаем и следовательно понятен. И как раз для этого вместо темплейтов в Java/C# введены generic классы.
Цитата(xvr @  27.10.2009,  11:15 Найти цитируемый пост)
Вот тут я не понимаю, как может что-то подходить больше для чего то исключительно потому что в нем чего то не хватает 

Ладно, давайте сворачивать дискуссию. Это сейчас перейдет в религиозную войну.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
kemiisto
Дата 27.10.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



Цитата(neutrino @  27.10.2009,  14:17 Найти цитируемый пост)
Ладно, давайте сворачивать дискуссию. Это сейчас перейдет в религиозную войну. 

 smile Ну уж нет. Такая тема и сворачивать!?

Цитата(neutrino @  27.10.2009,  10:38 Найти цитируемый пост)
Просто я сейчас учу курс по ООП

Цитата(neutrino @  27.10.2009,  10:38 Найти цитируемый пост)
Таk вот нам лектор преподает С++.

Сучковатой бы шваброй за такое этого лектора. smile 

Цитата(neutrino @  27.10.2009,  10:38 Найти цитируемый пост)
И вообще код на Java/C# гораздo более поддерживаемый.

Что значит "более поддерживаемый"?

Цитата(neutrino @  27.10.2009,  14:17 Найти цитируемый пост)
Вот именно! Разве волосы на голове должны вставать дыбом от хорошего кода? Кенн называет такой код - "код с душком". Хороший код должен быть легко поддерживаем и следовательно понятен. И как раз для этого вместо темплейтов в Java/C# введены generic классы.

Не знаю, кто такой Кенн, но в этом вопросе я с ним солидарен (хоть и не совсем).

Цитата(xvr @  27.10.2009,  13:15 Найти цитируемый пост)
Если нужен 'правильный' ООП - смотрите Smalltalk или Simula

Ну, не совсем так. Всё действительно стоящее из этих языков уже взято. Только не в С++ и не в Java...


--------------------
PM MAIL WWW GTalk Jabber   Вверх
neutrino
Дата 27.10.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



kemiisto, Ну все, понеслась  smile 


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Fazil6
Дата 27.10.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 35
Всего: 60



Цитата(kemiisto @  27.10.2009,  13:28 Найти цитируемый пост)
Ну, не совсем так. Всё действительно стоящее из этих языков уже взято. Только не в С++ и не в Java... 

Не совсем как? - Не совсем так!
Какой полет мысли... прям заинтриговал... 
И так, очередной холивар объявляется открытым.
PM MAIL   Вверх
UnrealMan
Дата 27.10.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(neutrino @  26.10.2009,  10:11 Найти цитируемый пост)
Ведь все, что можно это:

вместо:
someObject.add(anotherObject);

написать:
someObject += anotherObject;

Почему add у тебя эквивалентно +=, а не +? И почему для встроенных типов я должен использовать +=, а для пользовательских - add?

Цитата(neutrino @  26.10.2009,  10:11 Найти цитируемый пост)
Может быть, если кто-то интенсивно использует какую-нибудь область математики v программировании, тo ему стоит перегрузить операторы. 

Перегруженные операторы много где используются помимо математических расчётов. В частности, перегрузка *, ->, ++, ––, +, –, () позволяет использовать пользовательские итераторы и функторы подобно сущностям встроенных типов. Единый синтаксис снимает необходимость дублировать код или использовать адаптеры для приведения одной формы синтаксиса к другой.

Цитата(neutrino @  26.10.2009,  10:11 Найти цитируемый пост)
Я думаю, что код, который использует перегрузку операторов менее поддерживаемый. 

Ты проверял что ли? Или всё твоё "я думаю" основано на самоубеждении, что жаба - идеальный ЯП, и раз там нет перегрузки операторов, то перегрузка операторов - это зло?

Цитата(neutrino @  27.10.2009,  09:38 Найти цитируемый пост)
Нo это не имеет отношения k Java.

А какое отношение Java имеет к разделу C/C++? Для фанатов с лозунгами типа "жаба рулит", "линукс рулит" и т.п. есть флеймерские разделы.

Цитата(neutrino @  27.10.2009,  09:38 Найти цитируемый пост)
Java действительно больше подходит для ООП и частично потому, что таm неt перегрузки операторов

Что за гениальный бред? Каким образом операторный синтаксис вызова функции связан с поддержкой языком ООП?

Цитата(neutrino @  26.10.2009,  10:11 Найти цитируемый пост)
Я вот только не понимаю какую смысловую нагрузку несет в себе егo комментарий. Треп. 

Трёп как раз-таки у тебя: сам едва разобрался с основами перегрузки операторов, а уже горазд делать авторитетные заявления о дизайне ЯП.
PM MAIL   Вверх
kemiisto
  Дата 27.10.2009, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



Цитата(Fazil6 @  27.10.2009,  15:23 Найти цитируемый пост)
Не совсем как? - Не совсем так!

Smalltalk действительно интересен. Эдакая игрушка, язык концепция. Всё есть объект. Концептуально просто, но практическая применимость такого подхода ограничена. Хотя ООП, не возведённое в абсолют, интерес представляет. Когда я говорил, что всё действительно стоящее взято, то подразумевался Вирт (кто-то смоневался? smile ). 

Прежде чем продолжит, следует "обелить" Страуструпа. Он в общем-то не так уж плохо поступил с С, тоже добавил только самое существенное. По началу. А потом понеслось. Да и у С++ есть огромный минус - неимоверно трудно реализовать прозрачную поддержку идей ООП в языке без модулей. smile 

Но... Вернёмся к Вирту. 

Во время своего годичного отпуска (sabbatical) в 1976-1977 Вирт был в Xerox PARC. Видел ли он Смолток? Да. Быть в конце 70-х в Xerox PARC и не видеть Смолток - это что-то из разряда фантастики. smile Уделил ли он ему (должное?) внимание? Да, конечно же.

Но об этом чуть позже. Куда больше в тот момент его заинтересовал другой язык - Mesa. Так как там было то, чего так недоставало Pascal'ю - там были модули. Mesa был наследником Pascal и поэтому Вирту не потребовалось много времени, чтобы разобраться, что к чему. Modula-2 стала результатом. Концепция модульности во всей своей красе. И ещё Виртом с коллегами была создана рабочая станция Lilith...

В 84-85 годах Вирт во второй раз приезжает в Xerox PARC. Вот теперь предметом его пристального внимания становится рабочая станция Cedar. Она сделана сотрудниками Xerox PARC и там оконная система реализована на Smalltalk. В Oberon "перетащили" только самую суть - появились расширяемые записи.
Код

T0  =  record x, y, w, h: integer end
T1  =  record (T0) t: Text end

и поля-процедуры:
Код

type viewer = pointer to record x, y, w, h: integer; 
move: procedure (v: viewer; dx, dy: integer); 
            draw: procedure (v: viewer; mode: integer); 
   end


Подробнее можно почитать в трудах HOPL III.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
neutrino
Дата 27.10.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



UnrealMan, Сбавь тон своих авторитетных постов. Что-тo от твоего поста столько пены, чтo приходится монитор протирать.
Цитата(UnrealMan @  27.10.2009,  13:31 Найти цитируемый пост)
Ты проверял что ли? Или всё твоё "я думаю" основано на самоубеждении, что жаба - идеальный ЯП, и раз там нет перегрузки операторов, то перегрузка операторов - это зло?

У нас один девелопер использовал перегрузку операторов в многопротокольной системе. Так вот теперь, когда надo разбираться в этоm фреймворке, там черт ногу сломит. Потому, что въехать когда что и где у него вызывается из-за перегрузки операторов очень не просто. Я привел аргумент, что в Java (нe Жаба) как раз был сделан упор на то, чтобы код был легко поддерживаемый.
Цитата(UnrealMan @  27.10.2009,  13:31 Найти цитируемый пост)
А какое отношение Java имеет к разделу C/C++? Для фанатов с лозунгами типа "жаба рулит", "линукс рулит" и т.п. есть флеймерские разделы.

Я не знаю. В одном из моих постов v тэгах "оффтоп" я ляпнул что-то прo Java. Видимо зря. Я был уверен, что тэг "оффтоп" в темe должен быть проигнорирован. Нo как оказалось есть некоторые сишники, которых дo глубины души задел этот оффтоп и они снесли мне репу smile Ну они могуt минусонуть еще дабы убавит' свой пыл. Мне мир нa форуме важнее моеj репы. Так чтo можешь побеситься, если тебя это успокоит.

Цитата(UnrealMan @  27.10.2009,  13:31 Найти цитируемый пост)
Что за гениальный бред? Каким образом операторный синтаксис вызова функции связан с поддержкой языком ООП?

ОК, многоуважаемый мегасуперавторитетный моСК С++, узри в постах выше, что говорится о задании по ООП...

Цитата(UnrealMan @  27.10.2009,  13:31 Найти цитируемый пост)
Трёп как раз-таки у тебя: сам едва разобрался с основами перегрузки операторов, а уже горазд делать авторитетные заявления о дизайне ЯП.

Не перевирай моих слов i не экстраполируй мое мнение. Я ни словом не заикнулся o дизайне ЯП. Я лишь сказаl свою ИМХу, что С++ менее приспособлен к ООП, нежели Java/C#. 

[оффтоп]
П.С. А линукс действительно рулит
[/оффтоп]

smile


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
azesmcar
Дата 27.10.2009, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Цитата(neutrino @  27.10.2009,  15:46 Найти цитируемый пост)
У нас один девелопер использовал перегрузку операторов в многопротокольной системе. Так вот теперь, когда надo разбираться в этоm фреймворке, там черт ногу сломит. Потому, что въехать когда что и где у него вызывается из-за перегрузки операторов очень не просто. Я привел аргумент, что в Java (нe Жаба) как раз был сделан упор на то, чтобы код был легко поддерживаемый.

Это девелопер виноват smile
Перегрузки операторов в C++ используются сплошь и рядом и дизайн библиотек, в которых их перегружали от этого ничуть не пострадал. Для примера возьмите boost.

Но вопрос и меня заинтересовал, как может наличие чего-либо испортить язык программирования? Даже если это Г. Не используйте, ради бога..кто же вас заставляет? Никто ведь не заставляет людей писать макросы. Язык дает возможности, которыми надо пользоваться с умом.
PM   Вверх
neutrino
Дата 27.10.2009, 16:02 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



[яуоте=азесмцар, 27.10.2009,  14:55, пост2006182]Но вопрос и меня заинтересовал, как может наличие чего-либо испортить язык программирования? Даже если это Г. Не используйте, ради бога..кто же вас заставляет? Никто ведь не заставляет людей писать макросы. Язык дает возможности, которыми надо пользоваться с умом.[/яуоте]
Потому что приходится производить лишний контроль над девелоперами, чтобы они этo Г. не использовали. Я не знаю как u всех, нo у нас порядочно ###кода, которыj надо поддежвать, i поверьте этo сомнительное удовольствие...


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
kemiisto
Дата 27.10.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



azesmcar, в очередной раз ты сам себе противоречишь.

Вот ты пишешь, что 
Цитата(azesmcar @  27.10.2009,  16:55 Найти цитируемый пост)
девелопер виноват

Чем же это он так провинился? Если язык позволяет писать быдлокод, 99% будут писать именно так.

Цитата(azesmcar @  27.10.2009,  16:55 Найти цитируемый пост)
как может наличие чего-либо испортить язык программирования?

Ну, во-первых, комментарий чуть выше.
А во-вторых, я не говорю, что С++ портит само наличие перегрузки операторов, обобщёного программирования и т.п. Его портит из рук вон плохая реализация принципиально полезных концепций. Перегрузка сделана через одно место, про темплейты я (в очередной раз) молчу. smile

Добавлено через 1 минуту
Цитата(neutrino @  27.10.2009,  17:02 Найти цитируемый пост)
###кода

neutrino, использую синонимы. Например, быдлокод. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
azesmcar
Дата 27.10.2009, 16:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Цитата(neutrino @  27.10.2009,  16:02 Найти цитируемый пост)
Потому что приходится производить лишний контроль над девелоперами, чтобы они этo Г. не использовали. Я не знаю как u всех, нo у нас порядочно ###кода, которыj надо поддежвать, i поверьте этo сомнительное удовольствие... 

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

Добавлено через 2 минуты и 50 секунд
Цитата(kemiisto @  27.10.2009,  16:09 Найти цитируемый пост)
azesmcar, в очередной раз ты сам себе противоречишь.

где это ты противоречие заметил? не надо голословных утверждений, пальцем покажи.

Цитата(kemiisto @  27.10.2009,  16:09 Найти цитируемый пост)
Чем же это он так провинился? Если язык позволяет писать быдлокод, 99% будут писать именно так.

Любой язык это позволяет. Хочешь быдлокод на Erlang-е или ColdFusion-е? У меня тут на работе 50 индусов день и ночь трудяться, ты только скажи на каком языке тебе быдлокод показать.

PM   Вверх
neutrino
Дата 27.10.2009, 16:20 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



[Б]азесмцар[/Б], 
[яуоте=азесмцар, 27.10.2009,  15:10, пост2006207]Ну так это во всех языках и во всех сферах так, дизайн можно испортить много чем, в том числе и обыкновенными функциями, теперь и функции запрещать?[/яуоте]
Я понимаю. Конечно я и нa C# могu такой быдлокод (спасибо, kemiisto) написать... Попробую провестi аналогию.

Ест' автомат калашникова. I вот вышлa улучшенная версия с курком, при нажатиi на который, автомат нчнает стрелять только по командирам. Вот такой хитрый автомат с распознаванием звания... И вот новая операция Цахал в секторе Газа. Наши все с теми же "веслами" (М16), а ХАМАСовцы с новыми калашами. Все бы ничего, так только ХАМАСу никто не объяснил толком как пользоваться этиm курком. А оказывается, если командиров противникa по близостi нет, тo оn начинает мочить своих командиров. Вот i все. Сионисты опять победили. 

 smile 


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
azesmcar
Дата 27.10.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Цитата(neutrino @  27.10.2009,  16:20 Найти цитируемый пост)
Ест' автомат калашникова. I вот вышлa улучшенная версия с курком, при нажатиi на который, автомат нчнает стрелять только по командирам. Вот такой хитрый автомат с распознаванием звания...

Следую этому примеру, C++ - автомат с распознаванием звания, но вы находите эту функцию никому не нужной и говорите что вот такой хитрый автомат хуже предыдущего, потому что там есть функция, которой можно застрелить и своих командиров тоже. А вы не стреляйте по своим smile По любому, старая версия от этого лучше не стала, есть курок, не хотите - не используйте. 

Цитата(neutrino @  27.10.2009,  16:20 Найти цитируемый пост)
Все бы ничего, так только ХАМАСу никто не объяснил толком как пользоваться этиm курком

Кто в этом виноват? либо читайте учебники, либо не трогайте курок, либо идите под трибунал за расстрел своих офицеров. Обыкновенным курком тоже можно своего офицера убить.

Это сообщение отредактировал(а) azesmcar - 27.10.2009, 16:30
PM   Вверх
kemiisto
Дата 27.10.2009, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



Цитата(azesmcar @  27.10.2009,  17:10 Найти цитируемый пост)
где это ты противоречие заметил? не надо голословных утверждений, пальцем покажи.

Я писал ниже. Если ты не понимаешь, я не виноват. Попробую ещё раз.

Цитата(azesmcar @  27.10.2009,  16:55 Найти цитируемый пост)
Но вопрос и меня заинтересовал, как может наличие чего-либо испортить язык программирования?

Потенциально опасная (в любом смысле этого слова) возможность рано или поздно будет кем-нибудь использована. Помнишь знаменитое ружьё, которое обязательно выстрелит? Вот тем и плох язык, в котором слишком много "граблей", на которые можно наступить. Так понятнее?

Цитата(azesmcar @  27.10.2009,  17:10 Найти цитируемый пост)
Любой язык это позволяет. Хочешь быдлокод на Erlang-е или ColdFusion-е? У меня тут на работе 50 индусов день и ночь трудяться, ты только скажи на каком языке тебе быдлокод показать.

Этот пример действительно хорош. Только он в мою пользу. smile Ещё раз прочитай, что написано чуть выше. Писать быдлокод можно на любом языке, но С++ (зачастую) прямо таки подталкивает это сделать! И вот ещё что - "индусы" (в кавычках, так как имеются в виду не жители Индии, а индокодеры) обычно учатся программировать на С++. Они развращены этим языком и, кроме как быдлокодить, мало на что способны. Я про это уже в сотый раз говорю. smile Надоело повторяться.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
azesmcar
Дата 27.10.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Цитата(kemiisto @  27.10.2009,  16:32 Найти цитируемый пост)
Если ты не понимаешь, я не виноват

Веский аргумент. Ты уверен? Давай я тебе по китайски поясню (или сделаю вид что поясню) и если ты меня не поймешь - я не виноват.

Цитата(kemiisto @  27.10.2009,  16:32 Найти цитируемый пост)
Потенциально опасная (в любом смысле этого слова) возможность рано или поздно будет кем-нибудь использована. Помнишь знаменитое ружьё, которое обязательно выстрелит? Вот тем и плох язык, в котором слишком много "граблей", на которые можно наступить. Так понятнее?

Ну и где ты тут противоречие? Я говорю то, что всегда говорил, покажи мне на какой строчке я себе противоречу.

Цитата(kemiisto @  27.10.2009,  16:32 Найти цитируемый пост)

Этот пример действительно хорош. Только он в мою пользу. smile Ещё раз прочитай, что написано чуть выше. Писать быдлокод можно на любом языке, но С++ (зачастую) прямо таки подталкивает это сделать! И вот ещё что - "индусы" (в кавычках, так как имеются в виду не жители Индии, а индокодеры) обычно учатся программировать на С++. Они развращены этим языком и, кроме как быдлокодить, мало на что способны. Я про это уже в сотый раз говорю. smile Надоело повторяться. 

это ты только хочешь чтобы он в твою пользу был. В чем же тут твоя польза? Я что, говорил что C++ к этому подталкивает? Я говорил что быдлокод можно писать на любом языке, в том числе и на C++. И поверь мне, для индусов (они кстати настоящие) нет никакой разницы на чем быдлокодить, код одинаково плох. Если человек умеет программировать - его код легко читать и сопровождать, если же нет, не важно на каком языке он писал, он все равно испоганит код.
PM   Вверх
UnrealMan
Дата 27.10.2009, 18:11 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(neutrino @  27.10.2009,  15:46 Найти цитируемый пост)
Что-тo от твоего поста столько пены, чтo приходится монитор протирать.

Что ты там вытворяешь перед монитором, меня не касается.

Цитата(neutrino @  27.10.2009,  15:46 Найти цитируемый пост)
Так чтo можешь побеситься, если тебя это успокоит.

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

Цитата(neutrino @  27.10.2009,  15:46 Найти цитируемый пост)
У нас один девелопер использовал перегрузку операторов в многопротокольной системе. Так вот теперь, когда надo разбираться в этоm фреймворке, там черт ногу сломит. Потому, что въехать когда что и где у него вызывается из-за перегрузки операторов очень не просто.

И в чём именно сложности? В незнании правил?

Цитата(neutrino @  27.10.2009,  15:46 Найти цитируемый пост)
Я привел аргумент, что в Java (нe Жаба) как раз был сделан упор на то, чтобы код был легко поддерживаемый.

Кем именно поддерживаемый? Я, например, вряд ли разберусь в коде на Java, если совсем не приложу никаких усилий для изучения этого языка.

Цитата(neutrino @  27.10.2009,  15:46 Найти цитируемый пост)
узри в постах выше, что говорится о задании по ООП...

У тебя специальная функция-член объявляется неявно и скрывает такую же функцию в базовом классе. Даже если бы в C++ вместо operator= ту же самую операцию выполняла какая-нибудь специальная неоператорная функция-член (скажем, assign), то ничего бы не изменилось. И, кстати, если тебе вдруг захочется инициализировать объект производного класса объектом базового, то инициализация копирующим конструктором базового класса, про который ты почему-то забыл, тоже не будет работать (причём в случае использования C++03 using там тебе уже не поможет).

Т.е. здесь корень проблемы кроется не в перегрузке операторов как таковой, а в спецификации специальных функций, выполняющих копирование. Ты хоть это-то понял?

Цитата(neutrino @  27.10.2009,  15:46 Найти цитируемый пост)
Я ни словом не заикнулся o дизайне ЯП

Возможность перегрузки операторов относится к дизайну ЯП. Так что всё-таки заикнулся.
PM MAIL   Вверх
neutrino
Дата 27.10.2009, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



azesmcar, 
Цитата(azesmcar @  27.10.2009,  15:24 Найти цитируемый пост)
А вы не стреляйте по своим  По любому, старая версия от этого лучше не стала, есть курок, не хотите - не используйте.

Если будет больше возможностей сделать ошибку, то это есть плохо. Особенно, когда персонал недостаточно квалифицирован. Это факт. С этим спорить я думаю ты не будешь. Теперь посмотри на сложности в темплейтах, множественное наследование и т.д. и т.п. Т.е. граблей в С++ гораздо больше, чем в Java/C#.
Конечно бы ты был прав - не хотите не используйте. Не умеете не беритесь. Но кто так делает? У меня был тим лид (его уволили год назад) дык он начитался про паттерн State и реализовал весь Error Handling через него (даже эксепшены все нафик выкинул). Его то уволили, а кто разбирал всю эту мусорку? Догадался?
UnrealMan, А вы, господин, у меня в игноре за ваше хамство, так что сосите ноги.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
firstone
Дата 27.10.2009, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 25.9.2007
Где: Кровью залитая Св ятая Земля

Репутация: нет
Всего: 7



Цитата(azesmcar @  27.10.2009,  16:37 Найти цитируемый пост)
Если человек умеет программировать - его код легко читать и сопровождать, если же нет, не важно на каком языке он писал, он все равно испоганит код.

Золотые слова. Только вот если емu возможности поурезать, быть может и меньше быдлокодить будет.
--------------------
В программировании я конфуцианец. В жизни я либерал-демократ. В душе я буддист.Добавлено через 1 минуту и 9 секундА на самом деле я лентяй.
PM MAIL   Вверх
azesmcar
Дата 27.10.2009, 22:41 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Цитата(neutrino @  27.10.2009,  22:26 Найти цитируемый пост)
Если будет больше возможностей сделать ошибку, то это есть плохо. 

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

Цитата(neutrino @  27.10.2009,  22:26 Найти цитируемый пост)
Особенно, когда персонал недостаточно квалифицирован

Неквалифицированным людям писать код ЗАПРЕЩЕНО. Не важно на чем, неквалифицированный человек испоганит код даже на бейсике. 
Цитата(neutrino @  27.10.2009,  22:26 Найти цитируемый пост)
Теперь посмотри на сложности в темплейтах, множественное наследование и т.д. и т.п. 

Ничего сложного я не замечал, есть вещи которые нужно знать, вот и все.

Цитата(neutrino @  27.10.2009,  22:26 Найти цитируемый пост)
Т.е. граблей в С++ гораздо больше, чем в Java/C#.

Не знаю как насчет Java (в глаза не видел), а с C# - согласен, только вот эти грабли совершенно не имеют отношения к шаблонам и операторам.

Цитата(neutrino @  27.10.2009,  22:26 Найти цитируемый пост)
Конечно бы ты был прав - не хотите не используйте. Не умеете не беритесь. Но кто так делает? У меня был тим лид (его уволили год назад) дык он начитался про паттерн State и реализовал весь Error Handling через него (даже эксепшены все нафик выкинул). 

Это называется антипаттерн "Золотой молот". Никакого отношения конкретно к языку программирования он не имеет, впрочем как и паттерны.
А у меня индус в оракл базе поле IS_ACTIVE создал типа varchar2(255), наверное чтобы там кроме значений Y и N можно было еще и утвердительное YES OF COURSE написать, не знаю, прикажете отменить тип varchar2? Я же говорю, человек который стремиться нагадить в код полюбому нагадит, неважно на каком языке.

Цитата(firstone @  27.10.2009,  22:36 Найти цитируемый пост)
Золотые слова. Только вот если емu возможности поурезать, быть может и меньше быдлокодить будет. 

вполне возможно, но тогда знающие люди не смогут восползоваться этими возможностями во благо общества  smile 

Это сообщение отредактировал(а) azesmcar - 27.10.2009, 22:43
PM   Вверх
neutrino
Дата 27.10.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(azesmcar @  27.10.2009,  21:41 Найти цитируемый пост)
Профессиональный аппарат дает больше возможностей чем мылцница, и ошибиться при использовании намного легче, но это не значит что функции, которые он предоставляет не нужны вообще, он дает возможность ручной настройки, что в свою очередь дает широкие возможности использования разбирающимся людям.

Я не могу с тобой не согласиться. Особенно как обладатель цифрозеркалки, знаю какой замечательный функционал она дает. И да, все зависит от рук. Но с другой стороны, по аналогии, если бы надо было снимать только водопады на длинной выдержке (у нас ООП), то режим "водопад" для большинства людей (девелоперов) был бы лучше, чем все навороты цифрозеркалки.

Вероятно я неправ на счет операторов, но в С++ и без них граблей хватает.
Цитата(azesmcar @  27.10.2009,  21:41 Найти цитируемый пост)
А у меня индус в оракл базе поле IS_ACTIVE создал типа varchar2(255), наверное чтобы там кроме значений Y и N можно было еще и утвердительное YES OF COURSE написать,

 smile  smile  smile 


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
azesmcar
Дата 27.10.2009, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Цитата(neutrino @  27.10.2009,  22:50 Найти цитируемый пост)
Вероятно я неправ на счет операторов, но в С++ и без них граблей хватает.

например?
Я так думаю сейчас речь пойдет о макросах (не дожидаясь отвечу). На эту тему уже была одна дискуссия, можете ознакомиться.
http://forum.vingrad.ru/forum/topic-255252...ml#st_75_view_0


Это сообщение отредактировал(а) azesmcar - 27.10.2009, 23:12
PM   Вверх
niXman
Дата 27.10.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

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



Цитата(azesmcar @  27.10.2009,  20:41 Найти цитируемый пост)
Профессиональный аппарат дает больше возможностей чем мылцница, и ошибиться при использовании намного легче, но это не значит что функции, которые он предоставляет не нужны вообще, он дает возможность ручной настройки, что в свою очередь дает широкие возможности использования разбирающимся людям.

Все верно.

Цитата(azesmcar @  27.10.2009,  20:41 Найти цитируемый пост)
неквалифицированный человек испоганит код даже на бейсике.

Так же.

Цитата(azesmcar @  27.10.2009,  20:41 Найти цитируемый пост)
Ничего сложного я не замечал, есть вещи которые нужно знать, вот и все.

Опять верно.

Цитата(azesmcar @  27.10.2009,  20:41 Найти цитируемый пост)
А у меня индус в оракл базе поле IS_ACTIVE создал типа varchar2(255), наверное чтобы там кроме значений Y и N можно было еще и утвердительное YES OF COURSE написать, не знаю, прикажете отменить тип varchar2?

 smile 

Цитата(azesmcar @  27.10.2009,  20:41 Найти цитируемый пост)
вполне возможно, но тогда знающие люди не смогут восползоваться этими возможностями во благо общества

Ага.

п.с.
Иногда, такое впечатление, что все существующие ЯП создаются исключительно для того, чтоб кодить мог каждый дэбил. Вот существовал бы только С++ и ассемблер, как вы думаете, на сколько процентов меньше программеров бы существовало? smile 
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
azesmcar
Дата 27.10.2009, 23:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Цитата(neutrino @  27.10.2009,  22:50 Найти цитируемый пост)
 smile  smile  smile  


Цитата(niXman @  27.10.2009,  23:19 Найти цитируемый пост)
smile 

Вам смешно а в этой таблице 98 колонок, одна краше другой smile 
PM   Вверх
kemiisto
  Дата 27.10.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



Цитата(azesmcar @  27.10.2009,  23:41 Найти цитируемый пост)
Профессиональный аппарат дает больше возможностей чем мылцница, и ошибиться при использовании намного легче, но это не значит что функции, которые он предоставляет не нужны вообще, он дает возможность ручной настройки, что в свою очередь дает широкие возможности использования разбирающимся людям.

Ты сравниваешь две вещи из разных весовых категорий. А мы не о том говорим. Что принципиально невозможно написать на том же OBERON, что можно написать на С++? Правильный ответ - ничего. И вот, когда мы имеем дело с вещами одной весовой категории тут и начинается самое интересное... Что именно? А вот что!

Статья из New York Times. BEHIND THE WHEEL/BMW 745i; Dazed by a Technical Knockout
Цитата
PEOPLE seem to misinterpret complexity as sophistication,'' Niklaus Wirth, the Swiss computer scientist, once said. In luxury cars that flaunt the latest technologies, gadgets and amusements, it can be hard to tell the difference, just as it is difficult to define the point where technology intended to aid the driver starts to get in the way of driving. ... Suffice it to say that the 7 is surely the world's most advanced sedan, but it is not the most user-friendly.

На русском:
Цитата
“Люди по ошибке принимают сложность за изощренность”, — сказал однажды Никлаус Вирт, швейцарский ученый, специалист по информатике. В роскошных автомобилях, напичканных новейшими технологиями, прибамбасами и завлекалками, уже трудно увидеть эту разницу — так же, как трудно определить ту точку, за которой техника, целью которой была помощь водителю, становится помехой вождению… Достаточно сказать, что семерка, несомненно, самый “продвинутый” седан в мире, но отнюдь не самый легкий в управлении


 smile 

Это сообщение отредактировал(а) kemiisto - 27.10.2009, 23:34


--------------------
PM MAIL WWW GTalk Jabber   Вверх
mes
Дата 28.10.2009, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(kemiisto @  27.10.2009,  22:33 Найти цитируемый пост)
Что принципиально невозможно написать на том же OBERON, что можно написать на С++? 

можно ли на обероне написать полноценный компилятор для обeрона и те необходимые для его работы библиотеки ?
думаю сомнений что это возможно на C++ у Вас нет.



--------------------
PM MAIL WWW   Вверх
kemiisto
Дата 28.10.2009, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



Цитата(mes @  28.10.2009,  01:13 Найти цитируемый пост)
можно ли на обероне написать полноценный компилятор для обeрона и те необходимые для его работы библиотеки ?

Oberon как язык программирования лишь часть одноименной ОС.
Цитата
Oberon is an operating system, originally developed as part of the NS32032-based Ceres workstation project; it is written entirely in the Oberon programming language.

Принципиальные сомнения развеял?

Добавлено через 3 минуты и 13 секунд
Сейчас активно (всё относительно smile ) развивают Bluebottle. Эта ОС написана на Active Oberon.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
niXman
Дата 28.10.2009, 00:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

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



kemiisto, Это - 
Цитата(kemiisto @  27.10.2009,  21:33 Найти цитируемый пост)
Ты сравниваешь две вещи из разных весовых категорий.


Добавлено через 4 минуты и 49 секунд
Цитата(kemiisto @  27.10.2009,  22:17 Найти цитируемый пост)
Сейчас активно (всё относительно smile ) развивают Bluebottle. Эта ОС написана на Active Oberon. 

Это еще что такое? smile 


kemiisto, И вообще, можете популярно объяснить, что за ОС, которая является частью ЯП(или на оборот?). Какое применение? Где? Для чего?

--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
mes
Дата 28.10.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(kemiisto @  27.10.2009,  23:17 Найти цитируемый пост)

Oberon как язык программирования лишь часть одноименной ОС.
Цитата
Oberon is an operating system, originally developed as part of the NS32032-based Ceres workstation project; it is written entirely in the Oberon programming language.

Принципиальные сомнения развеял?


пока наоборот усилили.. возник вопрос смогу ли я  (под виндоус или под линукс) на обероне написать плагин например для firefox ?


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


Кодофей
****


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

Репутация: 6
Всего: 33



Цитата(mes @  28.10.2009,  20:36 Найти цитируемый пост)
смогу ли я  (под виндоус или под линукс) на обероне написать плагин например для firefox ? 

Ага. Точно также, ка на PS1 запустить Stalker smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
kemiisto
  Дата 28.10.2009, 23:27 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



Цитата(mes @  28.10.2009,  21:36 Найти цитируемый пост)
пока наоборот усилили.. возник вопрос смогу ли я  (под виндоус или под линукс) на обероне написать плагин например для firefox ? 


mes, курсы чтения провести? У меня времени нет учить Вас азам понимания чужых текстов. Единственное, что могу сделать - выделить ключевое слово:
Цитата(kemiisto @  28.10.2009,  01:17 Найти цитируемый пост)
Принципиальные сомнения развеял?

И ведь я изначально знал, что никаких других аргументов не будет. smile Уже надоело, ей богу... Не буду "разжовывать".

Цитата(niXman @  28.10.2009,  01:26 Найти цитируемый пост)
kemiisto, И вообще, можете популярно объяснить, что за ОС, которая является частью ЯП(или на оборот?). Какое применение? Где? Для чего?

Читать внимательнее надо было заметку в Вики.
Цитата
Oberon is an operating system, originally developed as part of the NS32032-based Ceres workstation project; it is written entirely in the Oberon programming language.

То есть если ты хочешь получить качественную систему - позаботься сам обо всём: железо + ЯП + ОС. Это не Джобс придумал. smile И не Вирт, конечно. Но суть, думаю, ясна.

Цитата(andrew_121 @  29.10.2009,  00:10 Найти цитируемый пост)
Ага. Точно также, ка на PS1 запустить Stalker

Здравствуйте, Евгений Ваганович! smile 


--------------------
PM MAIL WWW GTalk 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.1447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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