수포자를 위한 실용주의 수학 - 해석과 추상화
특정 공학 분야를 제외하고 일반적인 프로그래머가 갖추어야할 수학 지식은 많지 않다. (고등 수학 정도면 충분하다고 생각한다) 수학 지식 그 자체보단 ‘수’를 다룰 수 있는 센스가 더욱 필요하다. 공학자는 문제를 해결하는 실용주의자이기 때문이다.
수식화와 맥락화
수학 센스는 두 가지가 존재한다. 첫째, 실제 세계의 문제들을 적절히 추상화해 맥락과 해석을 제거하고 ‘수식’으로 만드는 것. 둘째, ‘수식’을 보고 문제해결의 필요한 해석과 맥락을 붙여 넣는 능력이다. 생각 해야할 범위를 줄이는 동시에 일반적인 해결책을 찾는 접근 방식과 다른 사람들이 만들어 둔 추상화를 보고 내 상황에 적용할 능력을 키우기 위해 두 가지 센스가 동시에 필요하다.
추상화
프로그래머는 인풋 → 아웃풋(함수)을 기본적인 사고의 틀로 가지고 있는 것이 좋다. 어떤 인풋과 아웃풋이 존재하는지 먼저 아는 것이다. 그리고 인풋과 아웃풋 집합과 그 원소들을 ‘수(수학적인)’로 표현해 보는 것이다.
예를 들어, ‘모니터 화면에서 유저가 마우스를 클릭했을 때, 그 위치를 어떻게 알 것인가?’라는 문제가 있다고 하자. 인풋은 모니터 화면이고, 아웃풋은 마우스의 위치다. 모니터는 2차원 평면이므로 2차원 배열로 표현할 수 있다. 마우스 위치는 2차원 평면의 좌표값이므로 (x, y) 같은 순서쌍으로 표현할 수 있다. 2차원 배열과 순서쌍이라는 수적인 표현으로 ‘모니터’와 ‘마우스’라는 맥락을 없애버릴 수 있다. 흔히 말하는 디테일을 생략하고 본질만을 추린다고 말하는 ‘추상화’의 의미이다.
f : Screen → Position
(재)해석
위 예시를 보면 이제 f에 해당하는 함수를 찾아야 한다. 그래야 실제로 문제를 해결할 수 있기 때문이다. 어떻게 그 함수를 찾는가? 변하는 것과 고정되어 있는 것이 무엇인지 찾는다. 변하는 것은 유저의 인풋 기기의 위치, 고정되어 있는 것은 컴퓨터가 시동되었을 때, 인풋 기기가 시작하는 지점이다.
(인풋 기기 시작 지점 x, 인풋 기기 시작 지점 y)에다가 사용자가 클릭할 때까지 움직인만큼 더하거나 빼면 된다. 그럼 우리가 원하는 클릭 지점의 위치를 얻을 수 있다.
일반적인 추상화
추상화를 하려면 모니터를 ‘2차원 배열’로 바꾸어 생각하는 것, 마우스 클릭 위치를 순서쌍 좌표로 바꾸어 생각할 수 있는 능력이 필요하다. 몇 가지 흔히 쓰이는 추상화 규칙을 숙지하고 응용 반복하여 활용하면 추상화를 위한 직관을 기르는데 도움이 된다.
평면 → 2차원 배열
위치 → 순서쌍
넓이 → 사각형
순서 → 순열, 조합
패턴 → 수열
방향 → 벡터
곱하기 → 로그(log)
높이, 깊이(깊이는 높이의 음수 버전) → 삼각법
표 → 행렬
변화 → 델타 x (미분)
곡선 → 삼각법
직선 → 일차함수
빈도 → 확률
대표 → 통계
위에 나열한 수학적 대상들은 적어도 필자가 학교 다니던 시절 고등 수학 범위에 포함된다. 대학교 이상의 수학들은 위 주제들에 대한 더 추상화된 버전이나 특정 분야에 특화된 버전의 수학을 배우는 것이다. 대학 수학 이상의 것들은 필요하면 그때가서 찾아보고 일단 나열된 예시들의 사고 전환을 익히면 도움이 될 것이다.
해석 능력
상수와 변수를 찾는 것이 핵심이다. 변하는 것과 변하지 않는 것을 판단하고 골라내는 능력이 필요하다. 보통 변하는 것은 실제로 ‘움직임’과 관련이 있다. 변하지 않는 것은 ‘초기값’이나 ‘물리적인 제약’ 같은 것과 관련이 있다.
해석 능력은 일반적인 추상화처럼 직관보단 도메인 지식과 일정량 이상의 경험을 요구한다. 따라서 자신이 속한 분야의 ‘원론’과 ‘각론’을 먼저 파악해 두는 작업이 필요하다. 원론은 그 분야의 근간을 이루는 뿌리 지식이고, 각론은 해당 분야 하위 카테고리에서 다루는 깊은 지식들이다.
원론과 각론을 파악하는 방법은 자신이 속한 분야의 대학 전공의 수업 커리큘럼을 보면 된다. 전공 커리큘럼을 학년별로 종합해서 확인하면 원론과 각론을 구성하는 기본적인 ‘틀’을 갖출 수 있다. 기본적인 틀을 이용해 키워드별로 유튜브 검색과 AI 대화 또는 독서를 통해 구체적인 심상을 더한다.
위에서 만들어진 심상은 ‘A 상황에선 B를 이용해 해결한다’ 같은 사고흐름을 가능하게 만들어 줄 것이다.
