Existem estudos sobre a eficácia do OOP no gerenciamento da complexidade do software? [fechadas]


14

OOP é frequentemente considerado como uma estratégia eficaz de gerenciar a complexidade do software, em oposição à programação de procedimentos que não são OOP.

Existem estudos testando essa noção? Está provado que o OOP geralmente ajuda a gerenciar a complexidade em grandes projetos?


4
Apesar de muito interessante, IMHO, medir a "complexidade" e a "efetividade" dos paradigmas é um empreendimento difícil e propenso a preconceitos. Todo programa é único, todo desenvolvedor é único e é difícil comparar. Além disso, a produtividade depende mais do que um paradigma, mas das ferramentas, ecossistema, material de aprendizagem. Um estudo imparcial deve permitir que grupos inteiros de estudantes programem os mesmos requisitos em ambos os idiomas e vejam os resultados. No entanto, é provável que eles tenham conhecimento prévio, tornando-o tendencioso. Não conheço nenhum desses estudos.
Dagnelies

Não há estudos, mas alguns discursos acadêmicos: en.wikipedia.org/wiki/Object-oriented_programming#Criticism
Den

1
Essa é uma pergunta um pouco complicada, porque a OOP praticada na indústria tende a ser altamente imperativa. Então, passamos de procedimentos que tocam globais para métodos que modificam objetos que modificam outros objetos que modificam outros objetos; os efeitos colaterais são um pouco mais explícitos, mas ainda há muita ação a distância. Por outro lado, quando você minimiza os efeitos colaterais e torna as coisas imutáveis, alguns argumentam que você está fazendo programação funcional.
Doval

2
Não há como medir genuinamente - é um efeito quântico em que a medição influencia o resultado.
DeadMG

1
Para fazer uma comparação, é preciso ter um paradigma alternativo aplicável a sistemas de programação muito grandes, construídos por programadores de habilidades comuns (ou seja, não por uma equipe de especialistas ou acadêmicos de ponta). Os grandes sistemas tendem a envolver rede, banco de dados, balanceamento de carga e redundância (ou seja, máquinas não confiáveis), entre outras coisas. A última lista de questões domina qualquer debate que se possa ter sobre paradigmas de linguagem de programação.
rwong

Respostas:


10

Não conheço nenhum estudo com medições quantificáveis. Como outros já mencionaram nos comentários à sua pergunta, é praticamente impossível conseguir isso. No entanto, existem trabalhos um tanto filosóficos que tentam responder a isso.

Meu artigo favorito sobre esse assunto é Out of the Tar Pit, de Ben Moseley e Peter Marks . Ele argumenta com várias declarações de fontes respeitáveis ​​sobre design de sistemas complexos a resultados bastante interessantes.

Out of the Tar Pit conclui que a programação de funções é realmente o melhor paradigma para apoiar as soluções que estão propondo. O que faz sentido, porque, na minha experiência, os sistemas complexos de POO ficam muito próximos dos procedimentos com o tempo e começam a parecer com POO (eles não têm sintaxe e outros atributos, mas um fluxo de execução pode se tornar bastante semelhante). A diferença real vem com um paradigma diferente ou combinando-o com OOP. No momento, esse paradigma é a programação funcional que finalmente está se tornando utilizável em aplicativos de negócios comuns por programadores comuns (ainda chegando lá).


5

Sim, houve alguns estudos. Aqui está um: http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf

Basicamente, conclui que não há uma diferença mensurável entre produtividade de código processual e produtividade de linguagem OO ... mas a verdade é que esses tipos de perguntas são tão sensíveis ao contexto que nenhum estudo lhe dirá o que você deve fazer em uma determinada situação .


Por um longo tempo, houve estudos que mostraram que a introdução de computadores desktop em um ambiente de escritório não levou ao aumento da produtividade.

@nocomprende você tem algum motivo para acreditar que esses estudos chegaram a uma conclusão errada? Um PC de 1989 usado pelo trabalhador de escritório comum em 1989 é completamente diferente de uma máquina moderna usada por um trabalhador moderno. Da mesma forma, a aplicação da tecnologia de objetos pode ou não melhorar com o tempo.
Jørgen Fogh

1
@ JørgenFogh Acho que estava de acordo com a afirmação de que os estudos nem sempre mostram o que parece ser senso comum. As empresas não teriam começado a usar computadores nos escritórios se piorassem as coisas. As pessoas não teriam passado décadas desenvolvendo a abordagem OO se não ajudasse. Eles fariam? Bem, as pessoas podem estar erradas, mas como você prova isso conclusivamente de uma maneira ou de outra? O que se resume é: "Isso funciona para você ?"
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.