규도자 개발 블로그

프로그래밍에 있어서 추론과정의 가치 본문

잡설

프로그래밍에 있어서 추론과정의 가치

규도자 (gyudoza) 2019. 5. 11. 00:24

개발자들은 코드로 말한다.

라고는 하지만 결국 사람의 최종 아웃풋은 언어라는 도구를 머릿속에서 활용해 추론과 논리 등의 과정을 거쳐 실세계로 나온다. 결국 사람이 생각하는 수단 또한 "언어"이며 코드라는 최종 산출물에는 자연어, 혹은 파편화된 단어나 이미지로 이루어진 고도의 두뇌작용이 수반된다.


유발하라리가 사피엔스에서 인간이 허구를 믿는 능력으로 지구의 지배자가 됐다고 하는데 그것과 궤를 같이 한다고 생각한다. 실세계를 반영한 객체지향 프로그램도 결국에는 반영을 통한 새로운 시스템의 창조이지 복사가 아닌 것 처럼 결국에는 무엇이 대상이 됐든 간에 세상 어떤 것이든 사람의 뇌라는 함수를 통해 최소 한 번은 추상화 과정을 거쳐야만 다른 사람에게 전할 수 있는 수단으로 옮길 수 있다. 심지어 본인이 직접 인식하고 생각한 것 조차 스스로의 뇌를 거친 결과물이지 않은가.


소프트웨어산업이라는, 실체가 없지만 사람들의 생활에 막대한 영향을 끼치고 있는 이 분야의 결과물들도 결국엔 이런 활동에 의해 생산된다. 그래서, 결국 중요한 건 코드라고 말하지만 나는 그만큼 코드가 나오게 된 추론과 상상과정도 중요하다고 생각한다. 예를 들어 행여 잘못된 추상화로 데이터베이스 설계를 수정해야할 상황이 온다면 다음에는 그런 상황이 발생하지 않게 추상화에 공을 좀 더 기울여야할 것이다. 이렇게 고쳐야할 것이 발생했을 때 그것을 부르는 단어가 있다. 바로 "문제"이다.

 문제를 고치는 방법의 첫번째 단계는 바로 문제를 인지하는 것이다. 문제가 있다는 걸 알아야 문제를 고치지 않겠는가. 그렇게 어떻게든 문제를 해결했다고 했을 때 그것으로 끝이 아니다. 문제를 방지하는 방법을 갈구해야하지 않겠는가. 그러니까 결국 문제가 발생하게 된 경위에 도착한 추론과정을 반복하지 않기 위해 스스로의 발전이 필요하다. 그런 의미에서 나는 추론과정 또한 머릿속에서 언어활동으로 이어지기에 최대한 글을 많이 활용한다. 물론 특정 코드의 커밋 로그들을 트레이싱하여 의식의 흐름을 추적해볼 수는 있지만 이건 말 그대로 추적이며 일종의 상상이다. 구현에 대한 의식의 흐름을 정확하게 파악할 수 없다. 보다 본질적인, 문제해결의 방식을 스스로 발전시켜가는 데에는 글만한 게 없는 것 같다.

Comments