Hiun Kim (김희언) daily 📝

daily writings (일상 기록)

연구방법에 대해 (2). 프로그래밍에 대한 생각.

May 31, 2025

전 글 에서 지식을 얻는 것이, 연구방법에서, 탐색할 대상을 탐색하는데 필요한 것임을 생각 해 볼 수 있었다.
여기서는 기술 지식 중, process architecturing 에 대해서 생각해보고자 한다.
흔히 programming problem solving 이라고 불리는 기술이다.
programming 이란 것이 process 를 만드는 것이고,
architecturing 은 해당 process 를 어떠한 목적에 맞게 설계하는것이니,
programming problem solving 은 행위이고, 그 일의 본질은 process architecturing 이라고 생각해볼 수도 있을 것이다.

architecturing 이란것은 건축에서도 쓰는말인데,
건축도 그렇고 패턴이라는 개념과 연관이 있어 보인다.
그도 그럴 것이, 세상의 문제들중 새로운것은 자주 나타나지 않는 경향이 있다
새로움이란 변화가 있어야 나타나는데, 세상은 그렇게 빠르게 바뀌지는 않으니,
그리고 바뀌었던것은 대응이 되어 왔으니, 현재 적립된 패턴들로 포착할 수 있는 문제들이 많을 것이라 생각해볼 수 있다.
패턴은 그러한 역할인것 같다, 변화가 많지 않은 환경에서, 과거의 지혜를 빌리는것이다.
이는 문제의 표현은 바뀌었지만, 문제의 본질은 바뀌지 않았을때, 가능하다.

architecturing 이 패턴이라면, process architecturing 의 패턴은 process 에 있다고 생각해볼 수 있을 것이다.
그러면 process 란 무엇일까?
process 란 컴퓨터에 한정적인 것이 아니다,
그냥 절차인것이다.
절차는, 절차와 절차가 적용될 대상이 있다고 생각할 수 있다.
예를들어 입법을 하기 위한 절차가 각 나라의 정부 마다 있을 것이다.
그리고 입법 대상인 법이 있을 것이다.

컴퓨터에게 있어서는 절차란 program 또는 algorithm 이라 불린다.
절차가 적용될 대상은 data 라고 불린다.
programming 이란 기본적으로 두 패턴의 상호작용으로 볼 수 있다.

절차가 컴퓨터 이전 부터 있던 행위이듯,
programming 역시 실제 세상의 행위의 자동화라고 대강 볼 수 있다.
이러한 관점에서 data 란 실제 세상의 자연개체(natural entity) 들의 representation 으로 볼 수 있다.
그리고 algorithm 이란 실제 세상의 사람의 행위(human behavior) 의 representation 으로 볼 수 있다.

즉 프로그래밍이란, 실제 세상의 자연개체에 대해, 실제 세상의 사람의 행위를, 적용시키는 일로 생각해볼 수 있다.
그러러면 a) 실제 세상의 자연개체에 대한 이해를 명확히 가져가고,
b) 그것에 필요한 사람의 행위를 명확히 이해하는것이 필요하다.

주로 프로그래밍에서는 어떠한 현상이 있다,
그 현상은 실제 세상의 자연개체가 등장 한다,
그러면 우선 그 자연개체가 어떠한 구조화된 데이터로 표현되어야 할지를 생각해볼 수 있다.
자연개체가 한개 등장할 수 도 있고,
자연개체A, 자연개체B, 처럼 여러개가 등장 할수도 있다.

여기서 실제 사람의 행위란, 자연개체를 기반으로 한다,
사람의 행위는 자연개체안에서의, 또는 자연개체와 자연개체간 상호작용으로 생각해볼 수 있다.
행위 그 자체는 말 그대로 그냥 틀로써,
자연개체에서 시작하여 자연개체에서 끝나기 때문에,
사람의 행위는 자연개체가 자기자신 또는 다른 자연개체와 상호작용하는것을 도울 뿐으로 생각해볼 수 있다.

이러한 정의를 빌린다면, process 란, 자연개체가 자기자신 또는 다른자연개체와 상호작용하는것을 돕는 일로써, 자연개체의 변환 작용을 돕는다.
즉 절차란 변환을 시키는것으로 생각해볼 수 있다,

그러면 어떠한 변환을 시켜야 할까?
이건 b) 그것에 필요한 사람의 행위를 명확히 이해하는것 것과 관련이 있을 수 있다.
이때 software engineering 에서, 요구사항 분석이라는 단계를 생각해볼 수 있다.
이건 건축등 다른 분야에서도 비슷하게 있을것 같다.
요구사항 분석은 주어진 현상과 이끌어가야 하는, 목표를 기반으로 생각해 볼 수 있다.
보통 요구사항을 주는 쪽은 치밀하게 고민하지 않는다, 자신이 필요한것만을 이야기 한다.
그래서 요구사항이다, 그래서 추상적일 수 밖에 없다.

b) 그것에 필요한 사람의 행위를 명확히 이해하는것 를 수행하기 위해서는, 추상적인것에서 구체적으로 가는 방향성이 필요할 수 있으며, 각 granularity level (추상성~구체성의 수준) 에서, 해당 level 에서의 단위 행동 (atomic operation) 을 반복적으로 만들어나가는것이 된다. (이러한 관점에서 보면, 각 알고리즘이란, 각 수준의 케이스에 대한, 추상적이고 반복적인 atomic operation 의 집합으로 볼 수 있다.)
즉 각 granularity 수준에 맞는 반복적이고 atomic 한 operation 을 만드는것, 계속 그렇게 뜱어나가는것이 process architecturing 을 연구적으로 수행하는것의 기초가 될 수 있다.

지금까지 이야기 해본것에서 몇까지 꼭지를 정리/확장 하자면 다음이 포함될 수 있다:

todo 로써,,


« 연구방법에 대해 (3). 머신러닝에 대한 생각. 연구방법에 대해 (1). »