Conversando sobre a OLP no salão - página 18

 
Alexey Volchanskiy:

Responder às perguntas, claramente e sem ranho pioneiro

1. Que tecnologia paralela você utilizou pessoalmente. Não uma blather geral, mas nomes específicos de tecnologias e idiomas.

1.1 Em que sua versão do OOP falhou?

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

SZZY: Eu já estava ensinando OOP há mais de 24 horas, o moderador escreveu que durante esse tempo ele baniu 10 pessoas e apagou cerca de 200 postos estúpidos! Diz que escreva, já existem 40-50 pessoas lendo-o regularmente, o tema é necessário. Necessidade de fazer um menu - eu ajudo a qualquer momento.

Verilog
 
George Merts:

A aprovação do OOP é necessária pelo homem para simplificar o desenvolvimento e, mais importante, o apoio do sistema.

"O problema com os idiomas OO é que eles puxam todo o seu ambiente. Tudo o que você queria era uma banana, mas você acaba com um gorila segurando essa banana e toda a selva junto com ela".

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

"O problema com os idiomas OO é que eles puxam todo o seu ambiente. Tudo o que você queria era uma banana, mas você acaba com um gorila segurando essa banana e toda a selva junto com ela".

É isso mesmo. Essa é uma boa analogia!

Mas isso é um problema? Pelo contrário, é uma vantagem do OOP !

Porque não existe "apenas uma banana". Para uma bananeira - você precisa de uma palmeira, para uma palmeira - você precisa de um meio nutriente e, a propósito, um gorila que subirá naquela palmeira e pegará aquela bananeira.

Na minha opinião, e é ótimo que você não pense em nada disso, mas pegue esta mesma banana e a coma.

P.S.

Li o artigo - ele diz tudo certo, mas apenas todos estes argumentos me convencem - OOP é uma grande tecnologia, muito melhor do que FP. É que ao usá-lo, temos que seguir algumas regras, que não deveríamos ter seguido na PF. Mas isso não é motivo algum para rejeitar o OOP. Na minha opinião, todos os argumentos no artigo estão, ao contrário, provando a vantagem do OOP, eles apenas advertem que "ao usar uma faca, tenha cuidado".

Ao utilizar aparelhos elétricos em vez de mecânicos - você também está seguindo algumas regras, que antes não eram necessárias - é verdade. Mas isso não é motivo para desistir dos aparelhos elétricos!

 

A conversa me lembra de um esboço de uma novela (falando em garotas, olá, Wolchansky).

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

A ex-mulher convoca o ex-marido para uma reunião:

BJ: Você pode imaginar, nossa filha está grávida! E ela tem apenas 19 anos, ela tem que estudar, ir para a faculdade!!!

BM: Do que você está falando?!!!! Com quem ela está grávida?

Por que ninguém sabe? Eu não sei... Oh o que vai acontecer, o que vai acontecer...

BM: Este canalha está escondido e não vai reconhecer a criança?

ROB: Não, ele não está se escondendo e imagine, nossa filha vai se casar com ele!!! O que vamos fazer, ela acabou de sair do colegial !!!!

BM: .... ???

Bj: Por que você não diz algo, por que você não diz algo ?!!! Você não entende ?!!! Nossa filha está grávida!!! e ela vai se casar!!! entender ?!!!

BM: Hum... Estou vendo... Mas... Eu não vejo o problema aqui... Você engravidou e casou comigo quando tinha 18 anos, teve-a... E não há nada de errado com isso...

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

É assim que as coisas são aqui - estou sendo provado que tenho enormes deficiências e problemas do Partido Republicano que absentmente não considero problemas, muitos pelo contrário, consideram virtudes...

Como você chegaria a esse ponto de esclarecimento onde você pode ver que ter cuidado com uma faca é o lado ruim do OOP que supera os profissionais?

 

Esta é uma das razões para a situação demográfica nos países "desenvolvidos" - primeiro você se forma, depois organiza sua vida, paga a hipoteca... e depois não está interessado em crianças, desde que ninguém lhe toque

 
George Merts:

Porque "apenas uma banana" não acontece. Uma bananeira precisa de uma palmeira, uma palmeira precisa de um meio nutriente e, a propósito, um gorila que sobe naquela palmeira e pega aquela bananeira.

Na minha opinião, e é ótimo que você não pense em nada disso, mas pegue esta mesma banana e a coma.

Não, não é essa a questão. Há uma banana para ser comida de acordo com a lógica do programa, mas é preciso comer a palma e a terra preta com adubo junto com ela.

 
Andrei:

"O problema com os idiomas OO é que eles puxam todo o seu ambiente. Tudo o que você queria era uma banana, mas você acaba com um gorila segurando essa banana e toda a selva com ela".

O artigo mente!

No que diz respeito ao proprietário da classe base, ela funciona como pretendido. E passa todos os autotestestes. Mas o proprietário não presta atenção à classe derivada. E o proprietário da classe derivada está muito desapontado. Agora o ArrayCount addAll() chama o pai addAll(), que internamente chama add(), cujo controle já foi anulado pela classe derivada. Como resultado, o contador é incrementado cada vez que se chama add() da classe derivada, e então é incrementado novamente pelo número de elementos adicionados por addAll() da classe derivada.SEUS, ELEMENTOS SÃO COLABORADOS A DOIS TEMPOS.

Quando li essa declaração, fiquei muito hesitante. Rolou rapidamente para verificar se minha cabeça não estava bagunçada:

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);
}

Destaquei as linhas que o autor do artigo sugere mudar. O resultado não é afetado pela sua substituição. Eu não li o resto do artigo. O absurdo do autor foi provavelmente apontado nos comentários.

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

É isso mesmo. Boa analogia !

Mas isso é um problema? Pelo contrário, é uma vantagem do OOP !

O que é tormento para as pessoas normais é a alegria para os masoquistas. :)

 
fxsaber:

O artigo mente!

Que diferença isso faz?

Você precisa argumentar sua alegação (OOP não presta) - google "OOP" e algumas qualidades negativas, obter um artigo melhor, e sem lê-lo, publicá-lo no fórum.

Verdadeiro ou não verdadeiro - não importa. Não importa se é verdade ou não. Se houver pessoas atentas como você que se preocuparão em lê-lo e verificá-lo, você pode lançar outro artigo da mesma maneira.

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