1. 기본 개념과 동작 원리 이해의 중요성

솬나·2023년 1월 15일
0

poiemaweb.com에서의 내용을 옮겨 담음.

프로그래밍이란?

프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션.
이 때 요구되는 것이 문제 해결 능력.
복잡하며 명확하지 않은 문제(요구 사항)를 명확히 이해하고, 복잡함을 단순하게 분해하고, 자료를 정리하고, 구분하며, "순서"에 맞게 배열해야 한다.
모호하고 대략적인 요구사항을 전달해도 의도를 완벽하게 구현해내는 컴퓨터는 존재할 수 없다.

컴퓨터의 입장에서 문제를 바라보아야 하고, 이 때 필요한 것이 computational thinking.
컴퓨터와 사람은 사고, 인지의 방식이 다르고, 따라서 해결 과제를 컴퓨터의 관점으로 사고해야 한다.
논리적, 수학적 사고가 필요하다.

프로그래밍 언어

인간이 이해할 수 있는 약속된 구문(syntax, 문법)으로 구성된 "프로그래밍 언어"를 사용하여 프로그램을 작성한 후,
그것을 컴퓨터가 이해할 수 있는 기계어(2진수로 구성된 언어체계)로 변환해 주는 일종의 번역기를 이용.
이 일종의 번역기를 컴파일러(compiler) 혹은 인터프리터(interpreter)라고 한다.
따라서, 컴파일러(compiler)는 컴퓨터가 이해하고 있는 언어와 인간이 이해하는 언어를 모두 이해하고 있는 통역가라고 할 수 있다.

프로그래밍은 프로그래밍 언어를 사용하여 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다.
프로그래밍 언어는 syntax(구문)과 semantics(의미)의 조합으로 표현된다.

syntax & semantics

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

	const number = 'string';
	console.log(number*number); //NaN

자바스크립트의 변수에는 어떠한 타입의 값이라도 할당할 수 있다.
문법적으로 문제가 없지만, 의미적으로는 옳지 않다.
number라는 변수 이름에는 숫자를 할당하는 것이 의미적으로 옳다.

작성된 코드는 해결 방안의 구체적 구현물로서,
프로그래밍 언어의 문법에 부합하는 것은 물론이고, 요구사항이 실현(문제가 해결)되어야 의미가 있다.

프로그래밍 언어가 제공하는 문법을 적절히 사용하여 변수를 통해 값을 저장하고 참조하며 연산자로 값을 연산, 평가하고 조건문과 반복문에 의한 흐름제어로 코드의 실행 순서를 제어하고 함수로 재사용이 가능한 문의 집합을 만들며 객체, 배열 등으로 자료를 구조화한다.

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

기본 개념과 동작 원리 이해의 중요성

프로그래머가 구현한 코드는 의도한 대로 정확히 동작하여 문제를 해결해야 한다.
자신이 구현한 코드가 컴퓨터 내부에서 어떻게 동작하고 무엇을 돌려줄 수 것인지 예측가능해야 하며, 타인에게 명확히 설명할 수 있어야 한다.
이를 위해서는 프로그래밍 언어의 기본 개념과 동작 원리를 정확히 이해하는 것이 중요하다.

기본 개념은 문맥에 맞는 정확한 용어를 사용할 수 있게 돕는다. 이는 명확한 의사 소통을 가능케 한다.
동작 원리의 이해는 코드의 동작을 예측할 수 있게 돕는다. 에러를 발생시키는 코드를 만나면 에러가 발생하는 원인을 이해해야 디버깅이 가능하다.

이 두 가지는 어렵고 생소한 용어들로 이루어진 기술적 의사소통을 가능케 하고, 자신의 머리 속에서 코드를 실행시켜볼 수 있는 능력을 갖게 한다.

profile
개미J

0개의 댓글