[모던 자바스크립트 Deep Dive] 1장 - 프로그래밍

FE 08김우중·2022년 11월 9일
0

알고리즘 문제를 풀면서 자바스크립트에 대한 동작원리나, 이해가 부족한 상태로 접근을 하니까 오류가 발생해도 찾지 못하는 상황이 빈번하게 발생하였다.
문제도 문제지만, 자바스크립트를 기초부터 다시 시작하여 보다 더 확실하게 이해하기위해 모던 자바스크립트 Deep Dive를 통해 시작하려한다.
(주변에서 추천이 많았음..)

1.1 프로그래밍이란?

  • 프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션 이다.
    커뮤니케이션을 하기전 요구되는 것이 문제 해결 능력 이다. 해결해야 할 문제를 명확히 이해한 후 적절한 문제 해결 방안을 정의할 필요가 있기 때문

  • 즉 프로그래밍이란 0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항(문제)을 설명하는 작업이다.

여기서 문제 해결 방안을 정의할때 우리는 컴퓨터의 입장에서 문제를 바라봐야 한다.

  • 예를들어 "듣다, 걷다, 크다, 작다" 라는 행위는 사람들은 하나의 간단하고 당연한 기능으로 생각하지만, 컴퓨터에게 이 행위를 설명하는 것은 단순하지 않다.

  • 컴퓨터에게 "크다, 작다" 라는 의미는 상대적인 개념으로 기준이 불명확하기 때문에, 컴퓨터에게는 "현재 볼륨보다 1단계 크게 조정", "볼륨을 60으로 조정"과 같이 양적인 개념인 숫자를 사용해야한다.

이처럼 컴퓨터와 사람은 사고, 인지의 방식이 다르기때문에, 컴퓨터의 관점에서 문제를 바라봐야한다!!

1.2 프로그래밍 언어

  • 문제 해결 방안이 정의되었으면, 우리는 이제 컴퓨터(명령을 수행할 주체)에게 전달해주어야한다. 명령을 수행할 주체가 컴퓨터이므로 사람이 이해할 수 있는 자연어가 아니라 컴퓨터가 이해할 수 있는 기계어로 명령을 전달해야한다.

하지만 사람이 기계어를 이해해서 직접 명령을 전달하는 것은 매우 어렵다고한다. 간단한 "Hello world"를 기계어로 출력하려면

7F 45 4C 46 01 01 01 00 00 ....(요약)
2C 00 00 00 00 00 00 00 00 ....(요약)
B2 0C Eb 1C 62 00 00 00 62 ....(요약)
72 6C 64 0A B9 4C 40 B3 04 ....(요약)

우리에게 친숙한 "Hello world" 를 출력하는데 이렇기 때문에, 가장 유용한 대안을 생각하여야하는데, 사람이 이해할 수 있는 문법으로 구성된 프로그래밍 언어를 사용해 작성한 후, 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기(컴파일러 혹은 인터프리터)를 이용하는 것이다.

  • 즉 프로그래밍 언어란 컴퓨터와의 대화에 사용되는 일종의 표현 수단으로, 사람과 컴퓨터(컴파일러 혹은 인터프리터) 모두가 이해할 수 있는 약속된 형태의 인공어다!!

여기서 프로그래밍의 의미가 다시 한번 정의될수있는데, 프로그래밍은 프로그래밍 언어를 사용해 컴퓨터에게 실행을 요구하는 커뮤니케이션이다.

1.2 구문과 의미

  • 프로그래밍은 일반적으로 프로그래밍 언어의 문법을 배우는 것부터 시작한다. 하지만 문법을 잘 안다고해서 프로그래밍을 잘한다고 말할수는 없다.

프로그래밍을 잘하려면 문법에 맞는 문장을 구성하는 것, 의미를 가지고 있어야 언어의 역할을 충실히 수행할 수 있다

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

이처럼 자바스크립트의 변수에는 어떠한 타입의 값도 할당이 가능하다.
하지만 number라는 이름의 변수에는 문자열이 할당되어 있기 때문에 의미적으로는 옳지 않기때문에, 옳기 위해서는 문자열 대신 숫자를 할당 해야한다.

  • 결국 문제가 주어지면 문제 해결 능력을 통하여 해결 방안이 제시되고, 그 해결 뱅안을 문법/의미를 통해 코드로 작성한다. 프로그래밍은 요구사항이 실현되어야 의미가 있다는 점을 명시하자

=======================================================

참고문서

profile
새내기 개발자

0개의 댓글