컴퓨터는 일반적으로 두 가지의 구성으로 이루어져 있습니다. 하나는 hdd, sdd, ram등과 같은 하드웨어이며, 나머지 하나는 운영체제를 비롯한 다양한 소프트웨어입니다. 컴퓨터 사양에 대해 이야기를 나눌 때는 주로 하드웨어 성능에 대해 언급하는 것이라 할 수 있으며, 이 하드웨어의 성능이 중요한 이유는 사용자가 원하는 프로그램을 원활하고 쾌적하게 구동할 수 있는 능력을 나타내는 지표이기 때문입니다.
하드웨어의 경우 특별한 공정을 거쳐야 하므로 일반 개인이 새로운 컴퓨터 부품을 개발하기란 쉽지 않습니다. 대표적으로 반도체를 제작하는 기술을 들 수 있으며, 아주 정밀한 생산공정을 거치게 됩니다. 반면, 소프트웨어인 프로그램의 경우 누구나 도전해볼 수 있습니다. 물론, Ai와 같은 고차원의 복잡한 프로그램을 구현하기란 쉬운 일은 아니며 많은 연구와 실험을 거듭해야만 합니다. 단, 간단한 프로그램을 만드는 방법에서 출발하여 포기하지 않고 지속적으로 노력한다면 도달할 수 있는 영역이기도 합니다.
컴퓨터 소프트웨어인 프로그램을 제작하기 위해서는 '코딩'이라는 작업을 진행해야 합니다. 코딩이란, 프로그램이 구동될 수 있는 규칙들을 활용해 제작자 혹은 사용자가 원하는 기능을 구현하는 방법이라 할 수 있습니다. 일반적으로 컴퓨터 프로그래밍 언어(규칙)를 학습한 후, 기능을 구현할 수 있는 알고리즘(코드를 구성하여 기능을 구현할 수 있는 규칙들)을 만들어 프로그램의 뼈대를 구성할 수 있습니다. 이 뼈대를 토대로 사용되는 운영체제(윈도, 리눅스, 안드로이드, ios 등)에서 사용될 수 있는 언어를 활용하여 외관을 꾸며주면 최종적으로 프로그램이 탄생하게 됩니다.
우리가 흔히 알고 있듯 컴퓨터는 단순히 계산기의 역할을 수행하게 됩니다. 0과 1로 구성된 신호(전기신호이며, 전류의 흐름과 끊음을 통해 신호를 전달하는 체계)를 구분하여 정해진 코드를 화면으로 표현해 주는 원리입니다. 흔히, 이런 코딩을 생각하면 수학과는 관련이 없을 것으로 생각하기 쉽습니다.
가장 먼저 생각할 수 있는 부분은 수학을 학습하면서 배우게 되는 내용과 컴퓨터 프로그램과의 연관성이 적어 보이기 때문입니다. 단순히 수를 계산하는 것, 함수를 풀어내는 것, 객관적인 사고를 익히는 것 등의 모습은 프로그램 언어를 이용한 코딩과 무관해 보이기 때문일 수 있습니다. 또한, 일정한 규칙(언어로 이루어진 단어들)으로 이루어진 프로그래밍의 경우 수학적 사고를 제외하고는 서로 간의 큰 영향력이 없어 보이기도 합니다.
그럼에도 불구하고 컴퓨터 관련 학과에 진학하기 위해서는 수학성적, 다시 말해 수학적 능력에 대한 평가에 대해 높은 가치를 부여하고 있습니다. 또한, 관련 학과의 커리큘럼을 살펴보면 수학에 대한 심도 있는 학습이 진행된다는 사실도 알 수 있습니다. 이는 단순히 이과계열이기 때문만은 아닙니다. 수학에서 나오는 다양한 이론과 문제 상황을 풀어낼 수 있는 능력이 곧 프로그램을 구성하는 코딩에 중요한 능력으로 반영되기 때문이라 할 수 있습니다.
과거 한 수학자는 이런 말을 했다는 이야기를 들은 기억이 납니다. '세상의 모든 일은 방정식으로 표현할 수 있다.'라고 말입니다. 저의 기억이 조금 왜곡되었을 가능성도 있습니다. 맥락은 비슷합니다. 세상의 모든 일 혹은 사건은 원인이 존재하며, 그 원인에 의한 결과가 나타나게 됩니다. 이런 결괏값을 도출할 수 있는 과정을 하나의 식으로 표현할 수 있다는 이야기입니다. 방정식은 수학에서 주로 사용하게 되는 표현방법이라 할 수 있으며, 잘 만들어진 방정식을 풀어내는 것만으로도 많은 일을 해결할 수 있습니다.
또한, 수학은 물리(자연의 모든 현상)를 풀어내는 표현방법이기도 합니다. 즉, 복잡한 현상을 간편한 식으로 나타낼 수 있으며, 차원에 대한 언급도 일정한 패턴을 보이며 나타낼 수 있습니다. 바로 이러한 부분이 프로그램 코딩을 진행함에 있어 수학의 학습에 대한 중요성이라 할 수 있습니다. 물론, 모든 자연과학분야에서 수학은 빼놓을 수 없는 중요한 학문이기도 합니다. 우리가 수학이라 부르는 학문의 역사는 그리 오래되지 않았으며, 과거에는 굳이 구분하지 않고 필요에 따라 필수적으로 학습되는 부분이었다고 합니다. 현대로 들어와 학문이 세분화됨에 따라 수학이라는 학문으로 연구가 진행되고 있다고 합니다.
다만, 수학을 잘한다고 코딩을 잘하는 것은 아닙니다. 코딩은 어디까지나 프로그램 언어를 일정한 알고리즘에 맞춰 나열한 것에 불과하기 때문입니다. 따라서, 전문적인 직업으로 프로그래머가 되는 것이 아니라면 굳이 수학 학습에 대한 높은 비중을 둘 필요는 없습니다. 개인이 할 수 있는 혹은 필요로 하는 프로그램을 구성하는 언어를 학습하여 소프트웨어를 만들어 볼 수 있습니다.
만약, 취미로 프로그램을 만들어보려는 생각을 한다면 분야에 대한 이해가 필수적일 수 있습니다. 언어는 다양하게 존재하며 필요에 따라 달리 사용되곤 하기 때문입니다. 웹사이트를 만들 수 있는 언어, 단순히 윈도 프로그램을 만드는 언어, 스마트폰 애플리케이션을 만드는 언어는 구분되어 있기 때문입니다. 또한, 무턱대고 학습을 진행하는 것은 방대한 양에 지칠 수 있습니다. 따라서, 구현하고자 하는 기능에 대한 구체적인 청사진을 가지고 프로그램을 조금씩 만들다 보면 차츰차츰 만족되는 결과물을 얻을 수 있을 것입니다.
여기서 중요한 것은 아주 단순하고 가벼운 프로그램을 만들때라는 것입니다. 최근 유행하는 Ai에 관련된 프로그램 혹은 알고리즘을 구성하고 싶다면 수학에 대한 이해는 반드시 필요하다고 할 수 있습니다. 예를 들어, 이미지를 분류하는 Ai를 제작한다면 이미지에 대한 고차원적인 접근이 필요할 수 있습니다. 사람은 크게 어렵지 않게 이미지를 구분할 수 있지만, 컴퓨터의 경우는 그렇지 않기 때문입니다. 이미지는 하나의 데이터이며, 0과 1로 표현된 모습일 뿐입니다. 따라서 대상이 되는 데이터를 분류하기 위한 식을 필요로 하게 됩니다.
분류를 위해서는 일정한 기준이 필요합니다. 이미지의 부분을 좌표로 표현하기 위해서는 2차원의 식인 2차 방정식을 활용해야 할 수 있으며, 해당 지점을 구분하기 위해서는 다차원의 비교가 필요할 수 있습니다. 또한, 이미지에 표현된 곡선의 정도와 패턴을 파악해 공통점과 차이점을 파악하기 위해서는 곡선을 단순화하여 일정한 구분마다 식으로 표현할 필요성이 있을 수 있으며, 곡선의 굽은 정도를 계산 값으로 활용해야 하는 경우도 있을 수 있습니다. 이 모든 것은 수학적인 계산이 필요한 부분이라 할 수 있습니다. 이는 아주 간단한 예시입니다. 동영상, 음성 등의 다양한 정보를 처리해 정보의 대상을 판별하기 위해서는 보다 복잡하고 다양한 방식을 필요로 할 수 있습니다.
모든 알고리즘을 개인이 만든다는 것은 쉽지 않은 일이 될 수 있습니다. 다행히 현재의 경우 Ai에 대한 일부 오픈소스가 존재하고 있기 때문에 일반 개인도 간단하게나마 체험을 해볼 수 있습니다. 어디까지나 일부 기능의 체험일 뿐이며 완벽한 구현을 위해서는 별도의 연구와 노력이 필요한 부분이기도 합니다. 만약, 이런 고차원의 프로그램을 만들고 싶다면 필히 수학에 대한 관심을 가지고 강도 있는 학습을 진행하는 것이 도움이 될 수 있을 것입니다.
'기술(技術)' 카테고리의 다른 글
가정에서 사용하는 무선인터넷, 와이파이 보안을 지키는 방법 (0) | 2021.06.12 |
---|---|
핸드폰 파일을 데스크톱 pc로 옮기는 3가지 방법 (0) | 2021.06.11 |
과학기술의 발달 흐름과 우리 삶에 끼치는 영향. (0) | 2021.05.17 |
지진 전조현상 내용, 지진 발생 전 생기는 현상은 어떤게 있을까. (0) | 2021.05.13 |
스마트폰 화면크기가 아쉬울 때 사용해 볼 수 있는 방법. (0) | 2021.05.13 |