-7

Porquê Programação Orientada à Obejtos é tão ruim

O motivo disso é que na verdade a Orientação à Objetos deveria ser visto como uma arquitetura, mais precisamente a uma arquitetura de hipermodularização.
Só que devido ao fato dela ter se tornado popular, e devido ao fato da crise do software ter sido causada por engessamento e alto acoplamento, as pessoas acharam que todo código agora deveria hipermodularizado, ignorando que esta abordagem têm seus próprios problemas, fragmentação, atomização, indireção e programação defensiva, e isso vai contra a leitura humana, que é de fluxo linear, isso principalmente na linhagem principal, o que chamo de linhagem instrumentalista, que basicamente pega o kit de ferramentas da POO e chama isso de POO, além de incentivar convenções e heurísticas que aumentam esses problemas ao invés de amenizá-los.
Outro ramo bastante conhecido é o ramo Kay, mas eu considero o Alan Kay muito mais um marketeiro, que querendo puxar sardinha pra sua linguagem, usou o termo OOP porquê ele era popular na época, mesmo que minha visão seja mais próxima do Kay, do que pra linhagem instrumentalista. O que o Kay defende também é uma arquitetura de hipermodularização, mas baseada em mensageria, já pra mim, POO é uma arquitetura de hipermodularização baseada em identidade, onde o foco são entidade persistentes, com comportamento associado e forte identidade, mas de fato as duas compartilham dos mesmos problemas, como frequentemente precisar de outras arquiteturas, pra diminuir seus problemas, como orquestradores, que é como chamo arquiteturas que visam organizar o código, minimizando os problemas de indireção.
PS: Me esqueci de comentar, mas POO se popularizou 1, pelas limitações de linguagens da época, em que até dados do tipo estrutura eram novidade, modularização era meia boca e isolamento não existia, outro motivo facilidade em exportar o modelo mental pro código, eu acredito que isso seja fortemente associado a identidade.

Carregando publicação patrocinada...
4

O motivo disso é que na verdade a Orientação à Objetos deveria ser visto como uma arquitetura, mais precisamente a uma arquitetura de hiper modularização.

Tem alguma fonte sobre isso?

OOP é em parte sobre modularização, algo desejável. Dá pra se criticar a forma.

Só que devido ao fato dela ter se tornado popular, e devido ao fato da crise do software ter sido causada por engessamento e alto acoplamento, as pessoas acharam que todo código agora deveria hiper modularizado, ignorando que esta abordagem têm seus próprios problemas, fragmentação, atomização, indireção e programação defensiva, e isso vai contra a leitura humana, que é de fluxo linear, isso principalmente na linhagem principal, o que chamo de linhagem instrumentalista, que basicamente pega o kit de ferramentas da POO e chama isso de POO, além de incentivar convenções e heurísticas que aumentam esses problemas ao invés de amenizá-los.

Isso faz algum sentido, mas acho exagero dizer que OOP por si só cause uma hiper modularização.

Ao mesmo tempo modularizar também é uma estratégia humana para melhor entendimento.

É fato que há abusos e que é muito comum que as pessoas não entendam OOP e façam errado, culpa de explicações e exercícios mal feitos. Mas alguém fazer errado é diferente do (sub)paradigma ser um grande problema.

Também não estou dizendo que ele não tenha seus problemas, mas o pior é o abuso.

Outro ramo bastante conhecido é o ramo Kay, mas eu considero o Alan Kay muito mais um marketeiro, que querendo puxar sardinha pra sua linguagem, usou o termo OOP porquê ele era popular na época, mesmo que minha visão seja mais próxima do Kay, do que pra linhagem instrumentalista. O que o Kay defende também é uma arquitetura de hipermodularização, mas baseada em mensageria, já pra mim, POO é uma arquitetura de hipermodularização baseada em identidade, onde o foco são entidade persistentes, com comportamento associado e forte identidade, mas de fato as duas compartilham dos mesmos problemas, como frequentemente precisar de outras arquiteturas, pra diminuir seus problemas, como orquestradores, que é como chamo arquiteturas que visam organizar o código, minimizando os problemas de indireção.

Acho que voc~e está desinformado com relação a isto.

O Alan Kay criou o termo "orientação a objeto", então não era popular, e foi se tornando aos poucos, a popularização de fato ocorreu só mais de uma década depois.

Apesar do Alan Kay ter criado o termo, ele criou outro termo que é a "orientação à mensagens", que é de fato o que a linguagem dele de fato é, como ele reconheceu anos depois.

Não acho ele marketeiro, pelo menos não mais que o normal da maioria das pessoas, e se foi, ele é um ruim, porque ele não conseguiu emplacar a linguagem dele.

Inclusive a teoria dele não era muito sobre modularização, isso veio mais de outra escola de OOP.

O texto ficou um pouco abstrato demais para conseguir visualizar o que se quer concluir. Poderia trabalhar mais ele para ficar compreensível. Do jeito que está é um punhado de palavras, algumas que parecem ser usadas para enfeitar o texto.

E acho uma mistura de assuntos quando fala em arquitetura. E é claro que OOP, como outros paradigmas, precisam de outros mecanismos para funcionar bem, isso é o normal, não sei nem se tem exceção.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui).

-2

Na verdade essas são minhas idéias, baseados na linguagem Simula, a primeira linguagem de POO conhecida e que influenciou tanto o Bjaurne Stroustrup, quanto o Alan Kay. E justamente, o motivo de OOP ser tão fragmentada, e de ninguém exatamente o que ela é, é justamente porquê ela é mais uma arquitetura do que um paradigma. As pessoas começaram a forçar ela em todo canto, principalmente na linhagem instrumentalista, onde muito software é mais abstrato e deveria seguir um fluxo mais linear. Sabe onde eu mais vejo POO sendo aproveitada, em jogos, mais precisamente em jogos de gerenciamento, onde ali sim você têm motivos pra querer que as entidades sejam independentes, e custo de POO

-3

Acho que exagerei quando disse que o termo era popular, mas que eu saiba ele já existia antes do Kay, o Kay pegou o termo e deu um novo sentido, colocando suas próprias idéias. O que me pega é que o Kay dá muito foco na mensagem, o que tira o foco da parte Objetos de POO.

3

Me mostre como ficou sabendo que o termo já existia. Porque eu já vi o AlanKay se gabando de ter criado o termo e não vi ninguém dizendo que é mentira dele.

Depois dele pegaram o termo e adotaram outros conceitos que não foram criados pelo Alan Kay.

Mas a questão do modelo dele focar em mensagens é extamente isso, ele não está fazendo OOP, em determinado momento ele aceita que o termo era errado e que ele criou de verdade a orientação a mensagens, por isso, de certa forma, não podemos nos apegar muito a oque ele falou sobre o que é OOP. Algumas pessoas gostam de falar que o que o Alan Kay falou é OOP. Ok, mas é estranho ter duas definições, e uma delas pouco adotada no mundo real, mais ainda, não sendo bem o que ele mesmo definiu, é aalgo confuso.

Desconhço o fato do Alan Kay olhar para Simula para criar o termo. Inclusive seria muito estranho uma mesma tecnologia criar duas evoluções t~]ao dispares. Mas se me der alguma fonte eu mudo de ideia, estou perguyntando justamente para mudar se for necessário. Você não é obrigado me fornecer isso, eu não sou obrigado a aceitar o que fala, e o mesmo vale para qualquer pessoa que leia aqui.

Ninguém saber o que OOP é eu repito há muitos anos. Se a pessoa não começar falar de qual escola ela vai discorrer, já está falho. E pior, muitas pessoas misturam as duas e vira uma salada, por isso muitas vezes sai coisa errada.

Em alguns pontos parace que leu meus textos, mas não prestou tanta atenção :D

Eu acho OOP abusado, acho que tem alguns problemas, mas ela não é ruim.

Na verdade essas são minhas idéias

Bem, aí fica complicado, você pode pensar o que quiaser, mas não se torna verdade.

-3

O Simula e o Sketchpad já usavam conceito de objetos, inclusive o Sketchpad teve até mais influência que o Simula pro Ramo Kay, sendo o Simula o que considero que une as duas linhagens. Na verdade pelo contrário, isso explica porquê o Kay chamou isso de orientação a objetos, porquê o kay foi influenciado por linguagens com esse conceito. Fora desse contexto eu até estranho entender o porquê da escolha desse nome, mesmo que o foco dele sejam mensagens.

1

Seus textos estão cada vez mais confusos.

Me mostre onde consegueiu essas informações. Porque eu estudei bastante o assunto e nunca vi nada disso.

O Alan Kay criou algo muito diferente do que existia, por isso tem escolas diferentes e definições conflitantes.

Quem é Ramo Kay?

4

Cara eu simplesmente não entendi qual é a intenção do seu post, parece um emaranhado de palavras e linhas de pensamento que não se conectam, gerando um texto meio sem sentido.

O que deu pra entender é que você é contra a orientação a objetos

Mas qual a alternativa?

0

POO não deixa de ser linear, ná pratica ainda é procedural, a principal diferença é que você lê pedaços teoricamente contextualizados ao invés de pedaços exaustivos de código, a ideia é, se você sabe o que o protótipo faz, você não precisa ficar lendo sua implementação

-3

"Assino embaixo de quase tudo que você disse — especialmente sobre a POO ter virado um receituário de hipermodularização que atropela a leitura linear e cria indireção desnecessária. Mas quero trazer uma observação de quem trabalha há anos com hipermodularização extrema (no meu caso, em Python) e descobriu que o problema talvez não seja a modularização em si, e sim a falta de infraestrutura para gerenciar a complexidade que ela gera.

Eu construí um ecossistema proprietário onde cada módulo é autocontido, com contexto documentado e memória persistente entre sessões de desenvolvimento. Com isso, agentes de IA conseguem ler e modificar cada módulo isoladamente, consumindo pouquíssimos tokens e quase sem produzir erros. A fragmentação, que para um humano é custosa, vira uma vantagem para a IA: ela não precisa navegar em fluxo linear porque o contexto é injetado sob demanda. A indireção some porque a IA sabe exatamente qual módulo contém a responsabilidade.

O que mudou o jogo não foi abandonar a hipermodularização, mas acoplá-la a dois pilares:

Memória semântica – cada módulo tem sua 'ficha' que a IA consulta antes de agir, então ela nunca parte do zero.

Rede de segurança total – versionamento granular que permite ousar sem medo, porque qualquer erro pode ser revertido em segundos.

Nesse arranjo, a hipermodularização deixou de ser um estorvo e virou um multiplicador de produtividade: módulos pequenos, contexto claro, tokens mínimos, erros raros. O que antes exigiria um time inteiro, hoje eu faço sozinho com agentes.

Então, adaptando sua frase: OOP é uma arquitetura de hipermodularização que pede orquestradores. Só que os orquestradores não precisam ser apenas humanos; podem ser sistemas de memória e agentes treinados para navegar nesse grafo. Talvez a crise nunca tenha sido da OOP, mas da falta de ferramentas competentes que transformassem a complexidade da modularização em algo legível para quem (ou o quê) vai dar manutenção no código."

-1

A sim, se for fazer por realmente fazer por IA, acho que o pessoal vai usar ainda mais POO do que nunca.
Meu problema é código feito de humanos para humanos mesmo, e quando a necessidade de modularização é pequena/média, o fluxo linear e mais próxima da escrita humana é melhor. Se não o pessoal começa a cair em atomismo, o que gera dependência hierárquica de arquivos ou quér transformar código em lego, mesmo em partes que nunca mudam, então tudo têm que ser projetado com encaixes.

-2

Concordo, precisa ser muito bem projetado, e acredito que ai esta os 2 maiores problemas, primeiro boas ferramentas para projetar, segundo memoria persistente tipo RAG muita gente pensa em IA quando se fala em RAG, mas um RAG para humanos entenderem contexto de modulos e parte de sistema também é tão importante quanto produtivo e isso praticamente não é implementado a nível de projeto, temos documentação extensa e chata e dificil de estudar e encontrar o que se quer, temos comentários em códigos, mas eu criei uma busca semantica no projeto, eu peço em texto simples, função que faz isso ou aquilo e ele me devolve tudo sobre aquela função que foi documentado pelas ias entendeu? Estamos falando a nivel de 1 projeto. Isso faz falta a qualquer programador. Eu disponibilizei em Python uma versão bem básica de um dos sistemas que uso, não chega nem perto do real, mas dá ideias pros desenvolvedores, se quiser ver: https://github.com/edilsonmaia/Autoreflex

Com poucas alterações poderia servir a humanos perfeitamente

-3

Mea culpa sobre Alan Kay: aqui eu faltei com caridade, já que a forma que me expressei indica que o acuso de má fé.
É mais provável que o Kay foi influenciado e quis influenciar com a sua visão de mundo algo que ainda estava basicamente no berço. Que eu saiba o Alan Kay não criou o termo, ele resignificou, mas me incomoda é que a visão dele acabou eclipsando o significado de Orientação à Objetos, que pra mim têm haver com entidades com forte identidade e não com mensagens, onde o objeto vira uma caixa de entrada softisticada.