[JavaScript] 모던 JS Deep Dive 1장

ubin·2023년 10월 7일

JavaScript

목록 보기
3/21
post-thumbnail

1.1 프로그래밍이란?

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

  • 커뮤니케이션 = 문제(요구사항)에 대한 명확한 이해 + 적절한 문제 해결 방안 정의
  • 명확한 이해 = 문제(요구사항)의 복잡함을 단순하게 분해*(decomposition)*
  • 문제 해결 방안 정의 = 정리하여 구분*(modeling)* + 순서에 맞게 배열
💬 0과 1밖에 모르는 컴퓨터와 커뮤니케이션을 하기 위해선, 위 단계를 포함한 **매우 상세하고 정확한 요구사항을 설명**하는 작업이 필요하다.

컴퓨팅 사고?

문제에 대해 컴퓨터의 관점에서 논리적이고 수학적인 사고를 가지고 해결 방안을 고려하는 것

  • 일반적인 사람의 사고는 매우 포괄적이고 경험에 대한 의지로부터 불러온 익숙함이 존재한다.
  • 컴퓨터의 사고로 문제를 바라볼 땐, 상대적인 개념과 같은 불명확적인 기준으로 설명하면 안된다.
  • 컴퓨팅 사고 = 문제를 매우 작은 단위로 분해 + 패턴화하여 추출 + 평가 가능하도록 정의

1.2 프로그래밍 언어

컴퓨팅 사고로 정의된 문제 해결 방안을 컴퓨터에게 명령으로 전달할 때, 사람과 컴퓨터가 이해할 수 있는 언어

어떻게 기계에게 명령을 전달하지?

  • 컴퓨터가 사용하는 언어인 기계어로 사람이 전달하기엔 너무 어렵다.
  • 기계와 사람 사이에 번역기가 존재했음 좋겠는데..?
  • 컴파일러 혹은 인터프리터 = 사람도 기계도 명령을 전달하고 이해하는데 도와줄 번역기

컴퓨터에게 명령을 내리는 과정

  1. 사람이 컴파일러에게 프로그래밍 언어를 사용해서 명령을 전달
  2. 컴파일러가 기계어로 번역 후 컴퓨터에게 전달
  • 프로그래밍 언어 = 구문(syntax) + 의미(semantics)
  • 프로그래밍 = 프로그래밍 언어를 사용해 컴퓨터와 커뮤니케이션하는 행위

1.3 구문과 의미

💬 프로그래밍 언어를 잘 사용하는 것은 문제 해결 능력을 통해 만들어낸 해결 방안으로 문제의 요구사항을 모두 충족시키는 것을 의미한다.
  • 모든 언어와 마찬가지로 프로그래밍 언어를 사용할 때, 문법적으로 맞는 문장을 구성함과 동시에 의미를 가지고 있어야 한다.
  • 프로그래밍의 최종 목적은 문제 해결이다.
  • 문제 해결을 위해서 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환 후 그 흐름을 제어한다.
profile
프론트엔드 개발자가 되고싶은 코린이⌨️

0개의 댓글