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

14

Estou na maior parte do meu curso de programação de jogos. Este não é um diploma de ciência da computação, portanto, muito da teoria é evitada em favor da construção de portfólio prático e o que eu vejo como aprendizagem JIT, que aparentemente é mais importante na indústria de jogos. O primeiro assunto foi "Introdução à programação orientada a objeto".

Essa frase não me incomodou até que eu soube sobre os diferentes paradigmas de programação (estou recebendo esta lista de link ):

  • Imperativo
  • Funcional
  • Procedural
  • Estruturado
  • Orientado a eventos
  • Orientado a objetos
  • Declarativo
  • Baseado em autômatos
Eu entendo que isso não é uma lista exaustiva, e que nem todos esses conceitos são iguais, e a maioria deles não é exclusiva, mas eu não entendo porque a maioria deles obtém apenas uma palavra - imperativa; funcional; declarativo - mas quando falamos de programação com objetos, temos que esclarecer que estamos orientados em torno desses objetos. Não podemos simplesmente usar objetos? Não podemos apenas ter objetos? Por que eles devem orientar-nos, como nossa estrela guia?

Olhando aqui ( link ), em nenhum lugar o uso do termo "orientado" é tratado como seu próprio termo . Apenas "objeto" é explicado.

Além disso, posso ver por razões práticas por que o Event-Driven é usado, porque a programação de eventos já é uma coisa que você faz quando está executando uma conferência, e a Automata Programming faz parecer que você está configurando um robô linha de produção, por isso ajuda a ter palavras esclarecedoras adicionais.

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 "orientada". Isso me lembra do meu tempo como repórter da corte, ouvindo advogado após advogado usar a frase "em relação a" como um tipo de tique verbal. Não significou nada; Foi apenas um termo que eles usaram para encher o ar enquanto tentavam pensar no que dizer em seguida. No entanto, não estou tentando defender uma mudança de linguagem, só estou perguntando por que é assim. Se alguém sabe por que ficou conhecido dessa maneira por razões puramente históricas e vestigiais, então essa é a resposta. Será munição se eu decidir perder meu tempo advogando por uma mudança de idioma.

Por outro lado, se existe realmente uma razão útil para que uma linguagem ou um pedaço de código deva apontar para objetos, com exclusão de todas as outras direções, ao invés de simplesmente tê-las em seu toolbelt, como ferramentas , eu estaria realmente interessado em aprender sobre isso. Eu gosto de aprender coisas úteis.

    
por Excrubulent 16.03.2013 / 00:41
fonte

3 respostas

24

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

  • Imperativo
  • Funcional
  • Procedural
  • Estruturado
  • Declarativo
  • Orientado a eventos
  • Baseado em autômatos
  • Orientado a objetos

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 do "imperativo", todos eles não são adjetivos "naturais", mas substantivos "adjetivos" - substantivos que realmente descrevem o núcleo do paradigma: função, estrutura, autômato e objeto.

E há duas maneiras diferentes nas 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 apontou Doc Brown, os sufixos que poderiam ser usados para adjetivar "objeto" resultam em um significado diferente. Que deixa a composição.

E eu afirmo que é pura coincidência ou gosto que Alan Kay escolheu usar "orientado" para seu adjetivo composto "orientado a objeto". Poderia muito bem ter sido "orientado a objetos", ou "baseado em objetos", e você pode ler muito nesses também. Não "dirigido" parece algum tipo de obsessão doentia?

    
por 21.07.2013 / 01:35
fonte
18

but when we talk about programming with objects, we have to clarify that we are oriented around those objects. Can't we just use objects? Can't we just have objects?

Francamente, é um remanescente da história. A programação funcional é realmente uma programação orientada a funções, a programação declarativa é realmente uma programação orientada a declarações ... afinal, não usamos apenas funções? Não podemos apenas ter funções?

"Orientado a objetos" rola melhor a língua e está historicamente enraizado.

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

    
por 16.03.2013 / 00:51
fonte
2

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

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

Realmente fazer algo "do jeito orientado a objetos" é muito diferente do "modo processual". O conceito mais importante é o uso de herança e polimorfismo. Quando você realmente entende e internaliza o modo como as classes e os métodos virtuais funcionam, é uma experiência reveladora que muda a forma como você escreve códigos em muitos casos, uma verdadeira mudança de paradigma. (Assumindo, é claro, que você começou a escrever código procedural primeiro. Muitos estudantes hoje em dia vão direto para Java ou C # como primeira língua, e a OMI deixa de compreender realmente os benefícios da OO ao fazê-lo.) / p>

Nós a chamamos de programação orientada a objetos porque um programa escrito em estilo OO não apenas contém objetos; a estrutura de todo o programa é baseada em torno deles e da maneira como eles funcionam.

    
por 16.03.2013 / 00:51
fonte