Разговоры на завалинке о ООП - страница 18

 
Alexey Volchanskiy:

Ответьте на вопросы, четко и без пионерских соплей

1. Какую технологию распараллеливания использовали лично вы. Только не общее блеяние, а конкретные названия технологий и языков.

   1.1 В чем в вашем варианте ООП провалилось?

------------

ЗЫ: Уже больше суток веду курс ооп, модер написал, что за это время 10 чел забанил, около 200 тупых постов потер! Говорит, пиши, тут уже тебя на постоянке читает 40-50 человек одновременно, тема нужная. Надо сделать меню - я помогу в любое время.

Verilog
 
George Merts:

ООП подход- нужен человеку, чтобы упростить разработку, а главное, поддержку системы.

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

Прощай, объектно-ориентированное программирование
Прощай, объектно-ориентированное программирование
  • 2005.08.16
  • habrahabr.ru
Я в течение десятилетий программировал на объектно-ориентированных языках. Первым из них стал С++, затем был Smalltalk, и наконец .NET и Java. Я фанатично использовал преимущества наследования, инкапсуляции и полиморфизма, этих трёх столпов парадигмы объектно-ориентированного программирования. Мне очень хотелось воспользоваться обещанным...
 
Andrei:

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

Все верно. Хорошая аналогия !

Только разве это проблема ? Это наоборот, преимущество ООП !

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

По-моему, и отлично, что ты не задумываешься ни о чем об этом, а берешь этот самый банан, и ешь.  

P.S.

Почитал статейку - все верно там говорится, но как раз все эти доводы убеждают меня - ООП - это отличная технология, гораздо лучше ФП. Просто при использовании его надо следовать некоторым правилам, которым не надо было следовать при ФП. Но это вовсе не повод отказываться от ООП. По-моему, все доводы из статьи - как раз наоборот, доказывают преимущество ООП, просто предупреждают, что "пользуясь ножом - помни об осторожности".

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

 

Разговор мне напоминает сценку из одного сериала (кстати, о бабах, привет, Волчанский).

-------------------------------------

Бывшая жена вызывает на встречу бывшего мужа:

БЖ: Ты представляешь, наша дочь беременна ! А ей только 19, ей учиться надо, в ВУЗ поступать !!!

БМ: Да что ты говоришь ?!!! И от кого  неизвестно ?

БЖ: Почему неизвестно ? Известно... Ой, что будет, что будет...

БМ: Этот негодяй скрывается и не признает ребенка ?

БЖ: Да нет, не скрывается, и, представляешь, наша дочь собралась за него замуж !!! Что теперь делать, она же только школу закончила !!!

БМ: .... ???

БЖ: Ну что ты молчишь, что ты молчишь ?!!! Ты что не понимаешь ?!!!  Наша дочь беременна !!! И собралась замуж !!!  Понимаешь ?!!!

БМ: Ээээ... Понимаю... Но... Я не вижу тут проблемы... Ты забеременела и вышла замуж за меня в 18 лет, родила ее... И ничего страшного не случилось...

-------------------------------------

Вот так и тут - мне доказывают огромные недостатки и проблемы ООП, которые я в упор не считаю проблемами, многие наоборот, считаю достоинствами...

Как бы дойти до такого просветления, когда бы можно было видеть, что осторожность с ножом - это недостаток минусы ООП перевешивают плюсы ?

 

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

 
George Merts:

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

По-моему, и отлично, что ты не задумываешься ни о чем об этом, а берешь этот самый банан, и ешь. 

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

 
Andrei:

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

Статья врет!

Что касается владельца базового класса, то он работает так, как заявлено. И проходит все автотесты. Но владелец не обращает внимание на производный класс. И владелец производного класса сильно разочарован. Теперь ArrayCount addAll() вызывает родительский addAll(), который внутри себя вызывает add(), управление которым уже было ПЕРЕХВАЧЕНО производным классом. В результате счётчик инкрементируется при каждом вызове add() производного класса, а затем СНОВА инкрементируется по количеству элементов, добавляемых addAll() производного класса. ТО ЕСТЬ, ЭЛЕМЕНТЫ ПОДСЧИТЫВАЮТСЯ ДВАЖДЫ.

Когда прочел это высказывание, очень сильно засомневался. Накатал быстро, чтобы проверить, что у меня в голове не каша:

class ArrayList
{
public:
  void add( int )
  {
    Print(__FUNCSIG__);
  }  
};

class Array
{
private:
  ArrayList a;

public:      
  void add( int element )
  {
    Print(__FUNCSIG__);
    this.a.add(element);
  }
 
  void addAll( const int &elements[] )
  {
    for (int i = 0; i < ArraySize(elements); i++)
//      this.a.add(elements[i]);
      add(elements[i]);
  }
};

class ArrayCount : public Array
{
public:
  int count;

  ArrayCount() : count(0)
  {
  }

  void add( int element )
  {
    Array::add(element);
    
    ++this.count;
  }
    
  void addAll( const int &elements[] )
  {
    Array::addAll(elements);
    count += ArraySize(elements);
  }
};

void OnStart()
{  
  int Tmp[5];
 
  ArrayCount Count;
 
  Count.addAll(Tmp);
  Print(Count.count);
}

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

Прощай, объектно-ориентированное программирование
Прощай, объектно-ориентированное программирование
  • 2005.08.16
  • habrahabr.ru
Я в течение десятилетий программировал на объектно-ориентированных языках. Первым из них стал С++, затем был Smalltalk, и наконец .NET и Java. Я фанатично использовал преимущества наследования, инкапсуляции и полиморфизма, этих трёх столпов парадигмы объектно-ориентированного программирования. Мне очень хотелось воспользоваться обещанным...
 
George Merts:

Все верно. Хорошая аналогия !

Только разве это проблема ? Это наоборот, преимущество ООП !

То что для нормальных людей мучение, то для мазохистов радость.. :)

 
fxsaber:

Статья врет!

Какая разница?

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

Правда или не правда - неважно. Относится или не относится - неважно. Если найдутся внимательные типа вас, которые потрудятся ее прочитать и проверить, можно так же другую статью кинуть.

 
Я — функциональщик. Прекрасно себя чувствую. Это ты от ООП такой раздражительный.