프로그래밍이란?

DevSeong2·2023년 1월 26일
0
post-thumbnail

《모던 자바스크립트 Deep Dive》 1장을 학습하며 정리한 포스트입니다.

프로그래밍이란?

프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다

커뮤니케이션의 목적 중의 하나는 소통이나 관계를 통해 이루고자 하는 특정 요구를 실현하는 것이다. 컴퓨터에게 실행을 요구하는 이유, 프로그램이 필요한 이유는 주어진 문제를 더욱 간편하게 빠르게 쉽게 해결하기 위해서이다.

하지만, 컴퓨터는 0과 1밖에 알지 못하는 기계이다. 프로그래밍이란 멍청하지만 똑똑한 컴퓨터가 실행할 수 있도록 정확하고 상세하게 요구사항을 설명하는 작업이다. 문제(요구사항)를 명확히 이해하는 것을 우선으로 복잡함을 단순하게 분해하고 정리하여 구분해야 하며 순서에 맞게 행위를 배열해야 한다. 모호하고 대략적인 요구사항을 전달하면 기대하는 결과는 얻을 수 없다.

컴퓨터와 사람은 사고, 인지의 방식이 다르다. 따라서 컴퓨터의 관점에서 해결하려는 문제를 절차적으로 사고하고 효과적으로 해결할 수 있는 절차적 사고 능력이 필요하다.

프로그래밍 언어

이렇게 정의된 문제 해결 방안이 컴퓨터에게 전달된다. 그러나, 컴퓨터는 0과 1만을 이해한다고 했다. 명령을 수행하는 주체는 컴퓨터이므로 사람의 표현법이 아니라 컴퓨터의 표현법으로 명령을 전달해야 한다. 컴퓨터가 이해할 수 있는 언어는 0과 1로만 구성된 기계어이다.

하지만 사람이 기계어를 이해해서 직접 명령을 전달하는 것은 매우 어려운 일이다. 그렇기에 사람이 이해할 수 있는 약속된 구문(문법)으로 구성된 "프로그래밍 언어"를 사용해 프로그램을 작성한 후, 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기를 이용한다. 이 일종의 번역기를 컴파일러 혹은 인터프리터라고 한다.

구문과 의미

언어의 구성 요소에는 형태, 내용, 사용이 있다고 한다. 언어의 형태는 언어가 어떤 모양을 가지고 있는지, 내용은 언어가 가지고 있는 의미를, 사용은 실제로 언어가 어떻게 사용되는지를 말한다. 프로그래밍 '언어'는 구문과 의미의 조합으로 표현된다.

"외국어를 잘하려면 외국어 화자의 말이나 문장을 정확히 이해한 후, 문맥에 따른 적절한 어휘 선택, 그리고 순차적으로 결론을 향해 나아가는 문장 구성이 필요하다. 즉, 문법에 맞는 문장을 구성하는 것은 물론 의미(sementics)를 가지고 있어야 언어의 역할을 충실히 수행할 수 있다."

정의된 문제의 해결 방안은 프로그래밍 언어의 문법을 사용해 표현한다. 작성된 코드는 해결 방안의 구체적 구현물이다. 이것은 요구사항이 실현(문제가 해결)되어야 의미가 있다. 커뮤니케이션의 목적을 달성하는 것이다.

결국 프로그래밍은 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것이다.

Review

컴퓨터는 정확하다. 요구한 대로 동작한다. 문제가 있는 것은 나의 코드이다.
코드를 먼저 작성하기보다 문제를 이해하고 작은 단위로 분해하고, 적절한 자료구조와 알고리즘을 사용하여 원활한 커뮤니케이션을 추구해야겠다.

profile
차근차근

0개의 댓글