※ 프로그램 = 알고리즘 + 프로그래밍 언어

 

 

프로그램은 시스템에서 디지털 데이터 처리를 담당하는 부분으로, 컴퓨터를 사용하면 인간이 상상할 수 있는 모든 작업을 할 수 있습니다.

프로그램은 C와 같은 프로그래밍 언어로, 작성된 코드를 직접 타이핑하여 만드는 것이 아닙니다.

 

프로그래밍 언어는 수행하고자 하는 작업을 구체화시키는 도구일 뿐입니다.

 

여기서 중요한 점은 문제를 푸는 것은 결국 컴퓨터가 아니라 사람입니다. 사람이 해결할 수 없는 문제는 컴퓨터 또한 해결하기 어렵습니다.


 

프로그램을 만들기 위해서는 '알고리즘'과 '프로그래밍 언어'가 필요합니다.

 

프로그램= 주어진 문제를 해결하기 위해 컴퓨터에서 주어지는 일련의 명령어 집합

컴퓨터는 사람의 말을 이해하지 못하므로 컴퓨터에게 명령을 내리기 위해서는 컴퓨터가 알아들을 수 있는 말이 필요합니다. 컴퓨터에게 명령(복잡한 것)을 내리기 위해서는, 여러 개의 문장이 필요하며, 문장들은 주어진 문제를 해결할 수 있도록 논리적으로 배열되어야 합니다.

'알고리즘'은 문장을 배열하여 내용을 조리 있게 표현하는 방법과 관련되어 있고, '프로그래밍 언어'는 사용할 수 있는

단어와 단어를 사용하여 문장을 구성하는 방법과 관련되어 있습니다. C 언어를 이용하여 두 숫자를 더하고 그 합을 출력하는 코드에서 단어와 문장 그리고 알고리즘을 나타내는 과정을 아래에서 확인할 수 있습니다.

 

 

 

 

 

프로그램은 알고리즘프로그래밍 언어로 이루어져 있습니다. 프로그램을 만드는 법을 배우기 위한 효과적인 학습방법은 하향식으로 배우는 것입니다.

'하향식'이란 큰 문제를 여러 개의 작은 문제로 나눈 후 작은 문제들을 해결함으로써 결국에 큰 문제로 해결하는 방식을 뜻합니다.

프로그램을 작성하는 과정에서는 문장들을 조합하여 주어진 문제를 해결할 수 있는 알고리즘 작성 방법을 먼저 배우고, 개별 문장을 프로그래밍 언어를 사용하여 나타내는 방법을 나중에 배우는 것이 하향식에 해당됩니다. 알고리즘이 프로그래밍을 먼저 무조건 하는 것보다 중요합니다.

우리는 흔히 프로그래밍 언어를 배우는 것만으로도 컴퓨터에 명령을 내리고 주어진 문제를 해결할 수 있다고 생각합니다. 프로그래밍 언어를 배우면 컴퓨터가 이해할 수 있는 몇 종류의 문장을 만드는 방법을 배울 수 있지만, 프로그램은 수십 혹은 수백 개의 문장으로 구성되며, 매우 복잡한 프로그램은 수만 개의 문장으로도 구성이 됩니다.

예를 들어 드론을 설계, 조립 사용 설명서를 만든다고 가정을 합니다. 한글만을 배워서 간단한 문장을 쓰는 중학생이 이 설명서를 말로 설명하거나 작성을 할 수 있을까요? 이와 마찬가지로 컴퓨터가 알아들을 수 있는 문장 작성 방법을 배우고, 문장들을 논리적으로 나열하기 위해서는 컴퓨터에 관련된 지식이 필요합니다. 더불어 컴퓨터에게 주어진 문제를 해결하도록 명령을 내리고 싶다면, 먼저 컴퓨터가 문제를 해결하는 방식에 맞는 알고리즘을 만들어야 하고, 알고리즘을 실제로 구현하기 위해 프로그래밍 언어가 필요합니다.

프로그래밍 언어는 문제를 해결해 주지 않으며, 알고리즘을 구현하는 도구일 뿐입니다. 실제로 문제를 해결하는 것은 알고리즘입니다. 알고리즘을 만든 후 이를 구현할 때는 어떤 프로그래밍 언어를 사용해도 괜찮습니다.


 

알고리즘은 프로그래밍 언어와 독립적이며, 컴퓨터가 문제를 풀어 나가는 방식에 맞게 문제 해결 방식을 기술한 것을 말합니다. 사람이 문제를 해결하는 방식과 컴퓨터가 문제를 해결하는 방식은 달라 보이고, 실제로도 다릅니다. 하지만 컴퓨터를 만드는 것은 사람이기 때문에 컴퓨터가 문제를 해결하는 방식이 사람이 문제를 해결하는 방식과 전혀 다르지 않습니다. 다만, 컴퓨터는 생각보다 단순하기 때문에 이해할 수 있는 내용이 그리 많지 않으므로 사람이 생각하는 방식 중 가장 간단한 방식으로만 문제를 풀어나갈 수 있습니다. 또한 컴퓨터는 융통성이 없기 때문에 문제를 풀어 나갈 때 모호한 점이 있어서는 안 됩니다.

 

 

컴퓨터의 문제 해결 방식과 절차를 배우는 것이 바로 알고리즘 학습 방식입니다.

 

 

이 포스트는 학부에서 제공하는 기본적인 컴퓨터 공학 강의와 책들을 토대로 알기 쉽게 내용을 작성하였습니다. 하지만 계속 더 유익하고 논문 및 전문 서적을 읽어가며 더 추가돼야 할 내용이 있으면 C 언어 프로그래밍 포스트와 콘텐츠들을 계속 고도화하는 방식으로 진행하려고 합니다.

#컴퓨터공학 #C언어 #C언어프로그래밍 #프로그램 #알고리즘 #컴퓨터의문제해결 #프로그래밍언어

#공대공부 #하향식문제해결

+ Recent posts