본문 바로가기

Compute

axiom과 논리 그리고 idiom과 패턴단상

 전산학은 화학과 물리와 마찬가지로 이론에 기반을 두고 실험을 통해 이론을 개선해나가는
실험과학입니다. (전산은 실험과학인가?(Is computing an experimental science) 참조)

  요컨데 우리가 행하는 소프트웨어 개발도 일종의 실험작업이라고 볼수 있습니다.
이론에 기반을 둔 알고리즘 및 기술을 이용해 새로운 제품을 만들고 그 결과를 다시 이론에 적용합니다.

  OOP에 있어서 디자인 패턴은 이러한 과정을 겪어서 나왔습니다.
 객체지향철학을 기반으로 수많은 개발을 통해 효과적인 개발을 위한 best practice가 나왔으며
이 best practice의 공통점을 모아 객체지향 원칙(idiom)을 정리할수 있었습니다.

 이 같은 발전은 마치 수학에서 공리를 기반으로 문제를 풀며 효과적인 연산을 위한 식(논리)을 도출하고
정리하는 방식과 많이 닮아 있습니다.

 수학의 발전에서 공리란 처음부터 주어진것이 아니라 새로운 문제를 풀어가며 새롭게 정의되며
그 정의에 의해 다른 문제를 풀고 다시 새로운 문제를 발견해나가는 과정을 겪었습니다.

 보통 전산학 및 물리,화학에서는 실험과 검증을 통해 이론과 과정의 타당성을  검증하지만.
하지만 수학에서는 정당화과정 즉 증명(proof)이라는 과정을 통해 엄밀히 논리를 검증합니다.
즉 도출된 식과 결과가 논리적으로 타당하며 자명한 원칙인지를 증명하지 않으면 안됩니다.

 이러한 끝나지 않는 순환적인 관계는 불완정성의 원리와 깊이 관련되어 있습니다.
즉 어떤 idiom,axiom으로 앞으로 알 수 있는 것과 모르는것을 알아 낼 수 없다는것에 있습니다.


p.s 소프트웨어 개발의 실험에 대한 참고자료