전산학은 화학과 물리와 마찬가지로 이론에 기반을 두고 실험을 통해 이론을 개선해나가는
실험과학입니다. (전산은 실험과학인가?(Is computing an experimental science) 참조)
요컨데 우리가 행하는 소프트웨어 개발도 일종의 실험작업이라고 볼수 있습니다.
이론에 기반을 둔 알고리즘 및 기술을 이용해 새로운 제품을 만들고 그 결과를 다시 이론에 적용합니다.
OOP에 있어서 디자인 패턴은 이러한 과정을 겪어서 나왔습니다.
객체지향철학을 기반으로 수많은 개발을 통해 효과적인 개발을 위한 best practice가 나왔으며
이 best practice의 공통점을 모아 객체지향 원칙(idiom)을 정리할수 있었습니다.
이 같은 발전은 마치 수학에서 공리를 기반으로 문제를 풀며 효과적인 연산을 위한 식(논리)을 도출하고
정리하는 방식과 많이 닮아 있습니다.
수학의 발전에서 공리란 처음부터 주어진것이 아니라 새로운 문제를 풀어가며 새롭게 정의되며
그 정의에 의해 다른 문제를 풀고 다시 새로운 문제를 발견해나가는 과정을 겪었습니다.
보통 전산학 및 물리,화학에서는 실험과 검증을 통해 이론과 과정의 타당성을 검증하지만.
하지만 수학에서는 정당화과정 즉 증명(proof)이라는 과정을 통해 엄밀히 논리를 검증합니다.
즉 도출된 식과 결과가 논리적으로 타당하며 자명한 원칙인지를 증명하지 않으면 안됩니다.
이러한 끝나지 않는 순환적인 관계는 불완정성의 원리와 깊이 관련되어 있습니다.
즉 어떤 idiom,axiom으로 앞으로 알 수 있는 것과 모르는것을 알아 낼 수 없다는것에 있습니다.
p.s 소프트웨어 개발의 실험에 대한 참고자료
실험과학입니다. (전산은 실험과학인가?(Is computing an experimental science) 참조)
요컨데 우리가 행하는 소프트웨어 개발도 일종의 실험작업이라고 볼수 있습니다.
이론에 기반을 둔 알고리즘 및 기술을 이용해 새로운 제품을 만들고 그 결과를 다시 이론에 적용합니다.
OOP에 있어서 디자인 패턴은 이러한 과정을 겪어서 나왔습니다.
객체지향철학을 기반으로 수많은 개발을 통해 효과적인 개발을 위한 best practice가 나왔으며
이 best practice의 공통점을 모아 객체지향 원칙(idiom)을 정리할수 있었습니다.
이 같은 발전은 마치 수학에서 공리를 기반으로 문제를 풀며 효과적인 연산을 위한 식(논리)을 도출하고
정리하는 방식과 많이 닮아 있습니다.
수학의 발전에서 공리란 처음부터 주어진것이 아니라 새로운 문제를 풀어가며 새롭게 정의되며
그 정의에 의해 다른 문제를 풀고 다시 새로운 문제를 발견해나가는 과정을 겪었습니다.
보통 전산학 및 물리,화학에서는 실험과 검증을 통해 이론과 과정의 타당성을 검증하지만.
하지만 수학에서는 정당화과정 즉 증명(proof)이라는 과정을 통해 엄밀히 논리를 검증합니다.
즉 도출된 식과 결과가 논리적으로 타당하며 자명한 원칙인지를 증명하지 않으면 안됩니다.
이러한 끝나지 않는 순환적인 관계는 불완정성의 원리와 깊이 관련되어 있습니다.
즉 어떤 idiom,axiom으로 앞으로 알 수 있는 것과 모르는것을 알아 낼 수 없다는것에 있습니다.
p.s 소프트웨어 개발의 실험에 대한 참고자료