01. 프로그래밍

2022. 9. 18. 14:54기록/Modern JavaScript Deep Dive

    목차

프로그래밍이란?

  • 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션
  • 프로그래밍 전에 문제를 명확히 이해한 후 문제 해결 방안을 정의해야 함
  • 컴퓨팅 사고(Computational thinking) 가 필요함
    • 문제 해결 방안을 고려할 때 컴퓨터의 입장에서 문제를 바라보는 것
    • 논리적, 수학적 사고가 필요함
    • 해결 과제를 작은 단위로 분해하고 패턴화해서 추출해야 함

 

  • 사람은 소리의 크기를 "크다" 또는 "작다"로 표현함
    • 이것은 상대적인 개념으로 기준이 명확하지 않음
  • 컴퓨터에게는 양적 개념인 숫자를 사용해야함
    • "현재 볼륨보다 1단계 크게 조정해줘" 또는 "볼륨을 60으로 조정해줘"라고 명령해야 함

프로그래밍 언어

  • 명령은 사람이 이해할 수 있는 자연어가 아니라 컴퓨터가 이해할 수 있는 언어인 기계어로 전달해야 함

 

[ "Hello world"를 출력하는 기계어 코드 ]

7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00 02 00 03 00 01 00 00 00 35 40 B3 04 
2C 00 00 00 00 00 00 00 00 00 00 00 34 00 20 00 01 00 00 00 00 00 00 00 00 40 B3 04 
B2 0C EB 1C 62 00 00 00 62 00 00 00 05 00 00 00 00 10 00 00 48 65 6C 6C 6F 20 77 6F 
72 6C 64 0A B9 4C 40 B3 04 93 CD 80 EB FB
  • 사람이 기계어를 이해해서 기계어로 직접 명령을 전달하는 것은 매우 어려움
  • 이것을 대신할 방법?
    • 사람이 이해할 수 있는 약속된 문법으로 구성된 프로그래밍 언어로 작성함
    • 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 번역기를 이용함
    • 이 번역기를 컴파일러(compiler) 또는 인터프리터(interpreter)라고 함

 

[ "Hello world"를 출력하는 자바스크립트 코드 ]

console.log("Hello world");

 


구문과 의미

프로그래밍 언어

  • 문법에 맞는 문장으로 구성되어 있어야 함
  • 의미(semantics)를 가지고 있어야 함

 

const number = 'string';
console.log(number * number); // NaN
  • 자바스크립트의 변수에는 어떠한 타입의 값도 할당할 수 있음
  • 따라서 위 예제는 문법적으로 전혀 문제가 없지만 의미적으로는 옳지 않음
  • number 라는 이름의 변수에는 숫자를 할당하는 것이 의미적으로 옳음

 

프로그래밍

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