Programação Orientada a Objetos: Por que “Orientada”?


14

Estou na maior parte do caminho através do meu curso de programação de jogos. Este não é um diploma em ciência da computação, por isso grande parte da teoria é evitada em favor da construção prática de portfólios e do que eu vejo como aprendizado JIT, que é aparentemente mais importante na indústria de jogos. O primeiro assunto foi "Introdução à programação orientada a objetos".

Essa frase não me incomodou até que eu aprendi sobre os diferentes paradigmas de programação (estou recebendo essa lista em https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms ):

  • Imperativo
  • Funcional
  • Procedural
  • Estruturada
  • Orientado a Eventos
  • Orientado a Objeto
  • Declarativo
  • Baseado em autômatos

Entendo que essa não é uma lista exaustiva e que nem todos esses conceitos são iguais, e a maioria nem sequer é exclusiva, mas não entendo por que a maioria deles obtém apenas uma palavra - imperativa; funcional; declarativo - mas quando falamos de programação com objetos, precisamos esclarecer que estamos orientados em torno desses objetos. Não podemos simplesmente usar objetos? Não podemos simplesmente ter objetos? Por que eles devem nos orientar , como nossa estrela guia?

Olhando aqui ( https://en.wikipedia.org/wiki/Object-oriented_programming ), em nenhum lugar o uso do termo "orientado" é tratado como seu próprio termo. Somente "objeto" é explicado.

Além disso, vejo por motivos práticos o motivo do uso do Event-Driven, porque a Programação de Eventos já é algo que você faz quando está realizando uma conferência, e a Automata Programming faz parecer que você está configurando uma linha de produção robótica, por isso, ajuda ter palavras esclarecedoras adicionais lá.

O que torna a Programação de Objetos, como uma frase, insuficiente para descrever o que fazemos quando usamos objetos em nossa programação?

Obviamente, pelo meu tom, não gosto muito da palavra "orientado". Isso me lembra meu tempo como repórter da corte, ouvindo advogado após advogado usar a frase "em relação a" como uma espécie de sinal verbal. Não significava nada; era apenas um termo que eles costumavam encher o ar enquanto tentavam pensar no que dizer em seguida. No entanto, não estou tentando advogar uma mudança de linguagem, apenas estou perguntando por que é assim. Se alguém sabe por que ficou conhecido dessa maneira por razões puramente históricas e vestigiais, essa é a resposta. Será munição se eu decidir perder meu tempo defendendo uma mudança de idioma.

Por outro lado, se existe realmente uma razão útil para o fato de uma linguagem ou parte do código apontar para objetos, com exclusão de todas as outras direções, em vez de apenas tê-los em seu cinto de ferramentas , como ferramentas , eu realmente estaria interessado em aprender sobre isso. Eu gosto de aprender coisas úteis.


11
Eu acho que "objetivamente" ou "objectional" não dar a impressão de direita do que é realmente significou ;-)
Doc Brown

Eu considerei "Objetivado", mas decidi que também poderia emitir as vibrações erradas.
Excrubulent


1
Eu acho que "objeto" é o erro, não "orientado". O que chamamos de orientação a objetos geralmente é orientado a classes.
Steve314

1
Qualquer fã de Phoenix Wright quer apenas chamá-lo de "OBJEÇÃO !! Programação"?
precisa saber é o seguinte

Respostas:


24

Eu acredito que você está lendo maneira muito para uma construção gramatical simples. Dê uma olhada na sua lista de paradigmas, organizados de maneira diferente por um motivo que veremos em breve:

  • Imperativo
  • Funcional
  • Procedural
  • Estruturada
  • Declarativo
  • Orientado a Eventos
  • Baseado em autômatos
  • Orientado a Objeto

O que todas as palavras têm em comum? Eles são todos adjetivos porque se destinam a modificar a palavra "programação". Além disso, com exceção de "imperativo", todos eles não são adjetivos "naturais", mas substantivos "adjetivados" - substantivos que realmente descrevem o núcleo do paradigma: função, estrutura, autômatos e objetos.

E há duas maneiras diferentes pelas quais os substantivos são adjetivados: através de um sufixo como -al ou -ed, ou através da criação de uma palavra composta usando um hífen. Agora, como Doc Brown apontou, os sufixos que poderiam ser usados ​​para adjectivar "objeto" resultam em um significado diferente. O que deixa a composição.

E eu afirmo que é pura coincidência ou gosto que Alan Kay tenha escolhido usar "orientado" para seu adjetivo composto "orientado a objetos". Poderia muito bem ter sido "orientado a objetos" ou "baseado em objetos", e você pode ler muito sobre eles também. "Dirigido" não soa como algum tipo de obsessão doentia?


1
Ponto excelente (embora eu pense que você queira dizer adjetivos, não advérbios - "programação" nesse contexto é um substantivo).
JW01

@ JW01: oops, você está certo #
Michael Borgwardt

Este é realmente um ponto muito bom - a palavra "orientado" atribui à frase um significado diferente de "programação de objetos", porque a palavra "objeto" por si só não é um adjetivo. Na verdade, eu diria que o motivo "orientado" foi escolhido em detrimento de outras palavras, para a aliteração. Além disso, eu não estava lendo nada, estava exagerando ao afirmar que existe essa palavra "orientada" que fica lá completamente inexplicável e inquestionável na literatura, o que me fez pensar se estava realmente fazendo alguma coisa para ganhar seu lugar. . : P
Excrubulento 23/07

Me pergunto por que ele não escolheu obcecado por objetos ... oh sim, esses são apenas os fanáticos que não sabem quando parar. ;-)
Eliminador de duplicadores 17/06

Há um livro de um autor polonês, Jerzy Grębosz, chamado "Symfonia C ++" ("A sinfonia em C ++"), em que o autor tenta fazer sentido dessa frase de uma maneira interessante: ele diz que é chamado " orientado a objetos ", porque o código pode" se orientar "de acordo com o objeto com o qual está trabalhando atualmente (comportamento polimórfico). Ele distingue isso das linguagens em que há apenas um mero conceito de "objetos" como pedaços de dados. Não há evidências históricas de que esse fosse o significado original, mas é bastante explicativo, mesmo como uma explicação pós-factum.
precisa saber é o seguinte

18

mas quando falamos de programação com objetos, precisamos esclarecer que estamos orientados em torno desses objetos. Não podemos simplesmente usar objetos? Não podemos simplesmente ter objetos?

Francamente, é uma ressaca da história. Programação funcional é realmente programação orientada a funções, programação declarativa é realmente programação orientada a declarações ... afinal de contas, não usamos apenas funções? Não podemos simplesmente ter funções?

"Orientado a objetos" sai melhor da língua e é historicamente arraigado.

A 'orientação' vem porque não estamos falando de programação, mas de design. Só porque usamos objetos, funções ou eventos, não significa que nossa metodologia de design seja feita pela modelagem dos três. Ao especificar a orientação da metodologia de design, ele ajuda a comunicar aos programadores como eles devem interpretar e estender esse design - como o foco da modelagem colore a implementação.


Parece que você está dizendo que "orientado a objetos" é um tipo de declaração de política com frases redundantes, assim como "pró-ativo" tem essencialmente o mesmo significado que "ativo", apenas tem um prefixo redundante para fazer Certifique-se de que o ouvinte não perca o significado.
Excrubulent

1
Eu acho que você realmente acertou em cheio: fazemos o design orientado a objetos, e é por isso que as linguagens são orientadas a objetos - para nos permitir expressar esse design.
K.Steff

1
@Excrubulent Não, adicionar o "orientado" o torna mais específico. "Orientado a objetos" significa que não estamos discutindo detalhes sobre objetos de programação, mas sobre como projetar programas para que eles usem objetos de maneira significativa. "Programação de objetos", "programação de funções" ou "programação de declarações" se refeririam especificamente a falar sobre a implementação de conceitos específicos em vez de princípios de design. "Funcional" e "declarativo" são palavras com sufixos que tentam transmitir o mesmo significado, mas para objetos "objetivas" ou "objetivos" não faria muito sentido.
Ilari Kajaste

E como Michael Borgwardt respondeu , a palavra "orientado" não é de forma alguma especial. Poderia ser "dirigido" ou "baseado" também. O ponto importante é que não poderia ser "programação de objetos". (Bem laguange é sempre fluido, assim que pudesse , mas apenas woudn't ser o mais descritivo.)
Ilari Kajaste

Troquei as respostas porque a resposta de Michael Borgwardt realmente explica o significado da palavra e como ela modifica a frase.
Excrubulent

2

Chamar isso de ajuda a explicar que os objetos são uma parte muito importante do paradigma.

A programação orientada a objetos tem suas raízes no Simula , que era essencialmente o ALGOL, além de alguns novos recursos de programação de objetos. E, de acordo com essa história, ainda hoje é inteiramente possível em muitas linguagens (mesmo as "linguagens OO puras") codificar algo que é essencialmente apenas um programa procedural com alguns objetos. Mas isso é considerado um estilo ruim por desenvolvedores mais experientes.

Na verdade, fazer algo "da maneira orientada a objetos" é muito diferente da "maneira processual". O conceito mais importante é o uso de herança e polimorfismo. Quando você realmente entende e internaliza a maneira como as classes e os métodos virtuais funcionam, é uma experiência reveladora que muda a maneira como você escreve código em muitos casos, uma verdadeira mudança de paradigma. (Supondo, é claro, que você tenha começado a escrever código processual primeiro. Muitos estudantes hoje em dia vão direto para Java ou C # como primeira língua e, na IMO, perdem realmente a compreensão dos benefícios do OO ao fazê-lo.)

Chamamos isso de programação orientada a objetos porque um programa escrito no estilo OO não contém apenas objetos; a estrutura de todo o programa é baseada em torno deles e na maneira como eles funcionam.


Essa é uma resposta semelhante à de Telastyn, exceto que você parece sugerir que "programação orientada a objetos" como um termo é realmente fundamentalmente diferente de "programação de objetos". Você pode explicar como eles podem ser diferentes? Quero dizer, parece-me que OOP é um termo bastante flexível para que OP atenda à mesma função também.
Excrubulent

2
Atualmente, muitos estudantes vão diretamente para Java ou C # como primeira língua e, na IMO, perdem realmente o entendimento dos benefícios do OO ao fazê-lo. - Na verdade, iniciei em C ++ e, em minha primeira tarefa, usei uma mistura de objetos e funções, mas fui marcado pelo uso de funções. Algumas dessas funções eram puramente funcionais e não se beneficiaram do encapsulamento de um objeto, mas outras que levaram ponteiros para variáveis ​​para trabalhar (por exemplo: informações modificadas do estado) tornaram-se muito mais fáceis de criar e chamar depois que foram em um objeto, então eu vi os dois lados dele.
Excrubulent
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.