본문 바로가기
코드잇 스프린트 6기/스터디 모임

[JS Q.R 스터디] - 프로그래밍

by 학습하는 청년 2024. 4. 14.

최종 수정 : 2024-04-14

1장 프로그래밍

1-1. 프로그래밍이란?

프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다. 이를 위해 요구되는 것이 문제 해결 능력이다. 이를 함양하는 데 알고리즘 학습은 큰 도움이 되지만 문제 해결 능력은 더 큰 차원의 능력이다. 해결해야 할 문제(요구사항)을 이해한 후, 적절한 문제 해결 방안을 정의해야 한다. 다시 말해, 프로그래밍이란 정확하고 상세하게 요구사항을 코드로 설명하는 작업이다.

이를 위해서는 Computational thinking(컴퓨팅 사고)가 필요하다. 문제 해결 능력은 직감과 직관의 영역이라 할 수 있는데, 이는 문제를 바라보는 우리의 사고와 경험에 영향을 받는다.우리에게는 너무나 당연해서 절차를 생각하지 않고 바로 결과를 도출하려는 경향이 있다. 그러나 컴퓨터의 관점에서 문제를 바라봐야 한다. 여기에는 논리적, 수학적 사고가 필요하며, 해결 과제를 작은 단위로 분해하고 패턴화해서 추출하며, 프로그래밍 내에서 사용될 모든 개념은 평가 가능하도록 정의해야 한다.

 

1-2. 프로그래밍 언어

이때 명령을 수행하는 주체는 컴퓨터다. 따라서 사람이 이해할 수 있는 자연어가 아닌 기계어로 명령을 전달해야 한다. 이 기계어는 비트 단위로 기술되어 있어, 사람이 직접 명령을 전달하는 것은 매우 어려운 일이다. 그렇기에 가장 유용한 대안은 사람이 이해할 수 있는 약속된 구문으로 구성된 "프로그래밍 언어"를 사용해 프로그램을 작성한 후, 이것을 기계어로 번역하는 컴파일러(compiler) 혹은 인터프리티(interpreter)을 이용한다. 이처럼 프로그래밍 언어는 자연어를 기계어로 바꾸기 위한 도구이다. 사람과 컴퓨터 모두가 이해할 수 있는 약속된 형태의 '인공어'다. 그래서 구문(syntax)와 의미(semantics)의 조합으로 표현된다.

 

1-3. 구문과 의미

언어의 의미는 문맥에 있는 것이지 문법에 있지 않다. 이와 같이, 프로그래밍 학습은 문법에 맞는 문장을 구성하는 것은 물론 의미를 가지고 있어야 언어의 역할을 충실히 수행할 수 있다. 결국 프로그래밍은 요구 사항을 분석해 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것이다.


참고 자료

모던 자바스크립트 Deep Dive (p.1-5)

댓글