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.
fonte
Respostas:
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:
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?
fonte
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.
fonte
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.
fonte