소프트웨어 복잡성을 관리하는 데 OOP의 효과에 대한 연구가 있었습니까? [닫은]


14

OOP는 비 OOP 절차 적 프로그래밍과 달리 소프트웨어의 복잡성을 관리하는 효과적인 전략으로 간주되는 경우가 많습니다.

이 개념을 테스트하는 연구가 있습니까? OOP가 종종 대규모 프로젝트의 복잡성을 관리하는 데 도움이된다는 것이 입증 되었습니까?


4
매우 흥미로운 사실에도 불구하고 패러다임의 "복잡성"및 "효과"를 측정하는 IMHO는 어렵고 편향적인 경향이 있습니다. 모든 프로그램은 고유하고 모든 개발자는 고유하며 비교하기가 어렵습니다. 또한 생산성은 패러다임 이상이 아니라 도구, 생태계, 학습 자료에 달려 있습니다. 편견없는 연구를 통해 전체 학생 그룹이 동일한 요구 사항을 하나의 언어로 프로그래밍하고 결과를 볼 수 있도록해야합니다. 그러나 그들조차도 사전 지식을 가지고 있기 때문에 편향되어 있습니다. 나는 그러한 연구에 대해 모른다.
dagnelies

학문은 아니지만 일부 학문적 격언 : en.wikipedia.org/wiki/Object-oriented_programming# 비평
Den

1
업계에서 실시되는 OOP가 매우 중요하기 때문에 이것은 약간 까다로운 질문입니다. 그래서 우리는 전역을 다루는 프로 시저에서 다른 객체를 수정하는 객체를 수정하는 메소드로 이동했습니다. 부작용은 다소 명백하지만 멀리서도 여전히 많은 행동이 있습니다. 반면에 부작용을 최소화하고 불변성을 만들 때 일부는 함수형 프로그래밍을 수행한다고 주장합니다.
Doval

2
진정한 측정 방법은 없습니다. 측정 결과에 영향을 미치는 양자 효과입니다.
DeadMG

1
비교를하려면 일반적인 기술의 프로그래머 (예 : 전문가 팀이나 최첨단 학자들이 아님)가 구축 한 대규모 프로그래밍 시스템에 적용 할 수있는 대체 패러다임이 있어야합니다. 대규모 시스템에는 특히 네트워킹, 데이터베이스,로드 균형 조정 및 중복 (예 : 신뢰할 수없는 시스템)이 포함됩니다. 후자의 문제 목록은 프로그래밍 언어 패러다임에 대한 논쟁을 지배합니다.
rwong

답변:


10

정량화 가능한 측정에 대한 연구는 없습니다. 다른 사람들이 귀하의 질문에 대한 의견에서 언급했듯이 실제로 달성하는 것은 불가능합니다. 그러나 그에 답하려는 철학적 인 논문이 있습니다.

이 주제에 대해 제가 가장 좋아하는 논문은 Ben Moseley & Peter Marks의 Out of the Tar Pit 입니다. 복잡한 시스템 설계에 대한 믿을만한 출처에서 매우 흥미로운 결과에 이르기까지 다양한 진술이 있습니다.

Tar Pit은 함수 프로그래밍이 실제로 제안하는 솔루션을 지원하기위한 최고의 패러다임이라고 결론 내 렸습니다. 내 경험상 복잡한 OOP 시스템은 시간이 지남에 따라 절차에 매우 가까워지고 절차는 OOP처럼 보이기 시작합니다 (구문 및 기타 속성은 없지만 실행 흐름은 상당히 유사 할 수 있음). 실제 차이점은 다른 패러다임 또는 OOP와 결합하여 제공됩니다. 현재 이러한 패러다임은 기능 프로그래밍으로, 일반 프로그래머가 일반 비즈니스 응용 프로그램에서 사용할 수있게되었습니다 (여전히 도착).


5

네, 몇 가지 연구가있었습니다. 하나는 다음과 같습니다. http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf

기본적으로 절차 적 코드 생산성과 OO 언어 생산성간에 측정 가능한 차이가 없다고 결론을 내립니다.하지만 사실 이러한 유형의 질문은 상황에 따라 달라지며 주어진 상황에서 수행해야 할 작업에 대한 연구는 없습니다 .


오랫동안 사무실 환경에 데스크톱 컴퓨터를 도입해도 생산성이 향상되지 않았다는 연구 결과가있었습니다.

@nocomprende 그 연구가 잘못된 결론을 내렸다고 믿을만한 이유가 있습니까? 1989 년 평범한 사무 직원이 사용한 1989 년의 PC는 현대인이 사용하는 최신식 기계와는 완전히 다릅니다. 유사하게, 객체 기술의 적용은 시간이 지남에 따라 개선되거나 개선되지 않을 수있다.
Jørgen Fogh 2016 년

1
@ JørgenFogh 나는 연구가 상식으로 보이는 것을 항상 보여주는 것은 아니라는 진술에 동의하고 있다고 생각합니다. 기업은 상황이 악화되면 사무실에서 컴퓨터를 사용하기 시작하지 않았을 것입니다. 도움이되지 않는다면 OO 접근법을 개발하는 데 수십 년을 소비하지 않았을 것입니다. 그들이할까요? 글쎄, 사람들은 틀릴 수 있지만 어떻게 결정적으로 어떤 식으로 증명합니까? "이 작업은 당신을 위해 작동합니까 ?"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.