[Deep Dive] 01. 프로그래밍

Lenny·2022년 12월 22일
0
post-thumbnail
post-custom-banner

프로그래밍이란?

컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션

프로그래밍을 하기 앞서 해결해야 할 문제를 명확히 이해한 후 적절한 문제 해결 방안을 정의해야한다.

이 때 요구되는것이 문제 해결 능력이다.

대부분의 문제는 복잡하며 명확하지 않을 수 있다.
따라서 문제를 명확히 이해하는 것이 우선되어야 하며 복잡함을 단순하게 분해하고 자료를 정리하고 구분해야 하며 순서에 맞게 행위를 배열해야한다.

즉, 프로그래밍이란 정확하고 상세하게 요구사항을 설명하는 작업이며, 그 결과물이 바로 코드이다.

컴퓨팅 사고 (Computational thinking)

문제 해결 방안을 고려할 때 컴퓨터의 입장에서 문제를 바라봐야한다.
이 때 필요한 것이 컴퓨팅 사고(Computational thinking) 이다.

컴퓨터와 사람은 사고, 인지 방식이 다르다.

해결과제를 작은 단위로 분해하고 패턴화해서 추출하며, 프로그래밍 내에서 사용될 모든 개념은 평가 가능하도록 정의해야한다.

사람처럼 두 발로 걷는 로봇을 위해 "걷다" 라는 기능을 디자인하면 다음과 같다.

  1. 오른발이 왼발보다 앞에 있는지 판단
  • 오른발이 왼발보다 앞에 있다 -> 왼발을 움직인다.
  • 왼발이 오른발보다 앞에 있다 -> 오른발을 움직인다.
  1. 전방에 장애물이 있는지 판단
  • 장애물이 있다 -> 정지한다 -> 1번 절차로 이동
  • 장애물이 없다 -> 전방으로 30cm 이동 -> 2번 절차 반복

"걷다" 라는 기능을 디자인하려면 판단해야 하는 상태와 그 상태를 판단하는 시기, 그리고 판단 기준을 정의해야하며, 이를 바탕으로 분해한 처리의 실행 여부를 결정한다. 예를 들어, 장애물이란 무엇인지, 어떤 범위 내에 있는지 명확히 수치화해서 정의해야한다.

프로그래밍 언어

문제 해결 능력을 바탕으로 정의된 문제 해결 방안은 컴퓨터에게 전달되어야 한다.
이 때 사람의 언어가 아닌 컴퓨터가 이해할 수 있는 언어인 기계어로 명령을 전달해야 한다.

하지만 기계어로 직접 명령을 전달하는 것은 매우 어렵다.

기계어 대신 사람이 이해할 수 있는 약속된 구문으로 구성된 "프로그래밍 언어(Programming language)" 를 사용해 프로그램을 작성한 후, 그것을 컴퓨터가 이해할 수 있게끔 해주는 번역기를 이용하여 전달한다.

이 때 번역기 역할을 해주는것을 컴파일러(Compiler) 혹은 인터프리터(interpreter) 라고 한다.

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

👀 참조

  • 모던 자바스크립트 Deep Dive
profile
🧑‍💻
post-custom-banner

0개의 댓글