코드스피치 강의 ES6+ 1회차 정리

July 17, 2020

1. 직장인과 학생의 차이

  1. 복잡성을 정복할 수 있는가?
  2. 프로그램은 무조건 변화는데 변화에 따라 적용할 수 있는가?

2. 프로그램이 무엇인가?

  1. LANGUAGE CODE
    • 고급언어로 작성한 코드
    • LINT TIME이라고 부른다(고급언어로 작성했는데도 이상하게 작성되면 에러가 발생)
  2. MACHINE LANGUAGE
    • COMPILE TIME => 컴퓨터가 이해할 수 있는 언어로 변환 / 이상하면 에러가 발생
    • 모든 LANGUAGE CODE를 읽어서 빠짐없이 MACHINE LANGUAGE로 바꾼다.
  3. FILE
    • MACHINE LANGUAGE로 만든 파일
  4. LOAD
    • 메모리에 파일을 올라간다 실행되지 전 상태(이때! 프로그램이라고 부를 수 있다.)
  5. RUN
    • RUN TIME => 작동 중 에러가 발생한다.
  6. TERMINATE
  7. 예외사항
    • 프로그램이 종료가 될때까지 에러가 발생하지 않지만 결과가 이상하다 (나의 월급이 반으로 들어온다)
    • CONTEXT ERROR 특정사항에서 에러가 발생
  • 결론 : 최대한 앞 단계에서 에러를 잡는게 리소스가 적고 사태를 수습하기에 좋다

3. 런타임 스크립트(예 자바스크립트)

  1. LANGUAGE CODE
    • Javascript로 작성
    • LINT TIME이라고 부른다.(고급언어로 작성했는데도 이상하게 작성되면 에러가 발생)
  2. FILE
    • .js 파일
  3. LOAD
    • 브라우저에서 파일을 로드에서 실행시켜준다.
  4. MACHINE LANGUAGE
    • AUTO COMPILE TIME => 컴퓨터가 이해할 수 있는 언어로 변환 / 이상하면 에러가 발생
    • 하지만!! 모든 파일을 바꿔주는게 아니라 필요한 부분만 바꿔주고 실행시켜 준다
  5. RUN
    • RUN TIME => 작동 중 에러가 발생한다.
    • 해당 함수를 호출하거나 실행했을떄만 에러를 찾을 수 있어 개발자의 책임이 커졌다.
  6. TERMINATE

4. 런타임 스크립트는 LINT와 RUN 타임만! 오류를 잡을 수 있나?

  1. 런타임 에러는 감지하고 고치기에는 어렵다.
  2. 하지만 런타임 에러를 레이어별로 나눠 어느 부분의 에러인지 확인해서 수정할 수 있다.
		DECLARE BASE FUNCTION, CLASS ... 기저가 되는 함수나 클래스정의
		STATIC TIME
		-------------------------------------
		RUN  TIME
		DECLARE EXTENDED FUNCTION, CLASS ... 기저가 되는 함수나 클래스 응용 정의
		STATIC TIME
		-----------------------------------
		RUN  TIME
		USE FUNCTION, CLASS ... 진짜로 사용하는 함수나 클래스
  • 결론 : 복잡성을 잡을려면 격리(이 일에 대한 누가 책임을 지는지)시켜 에러의 위치를 찾아준다

5. 자바스크립트의 구성요소

  1. LEXICAL GRAMMAR(언어적 문법)

    • CONTROL CHARACTER
    • WHITE SPACE
    • LINE TERMINATORS
    • COMMENTS
    • KEYWORD : 예약어
    • LITERALS : 값을 최소한으로 표현 (예 : 23을 표현하는 것은 23(o) / 10+13(x))
  2. LANGUAGE ELEMENT

    • 개발언어의 특징은 언어의 설계자의 의도로 만들어진 언어이기 떄문에 이해하기 보다는 받아들여야한다
    • STATEMENTS : 엔진이 어떻게 실행할지 힌트를 주는 것
      • 공문
      • 식문
      • 제어문
      • 선언문
      • 단문
      • 중문
  3. EXPRESSION : 최종적으로 하나의 값으로 표현되는 것, 하지만 값을 별도의 메모리에 저장하지 않는다면 일회용

    • 연산식
    • 호출식
  4. IDENTIFIER : 변수는 메모리의 위치와 해당 값의 타입을 가지고 있다.

    • 기본형 : 자바스크립트 만들떄, 기본형만 값이 복사되는 것으로 정하고 그외는 주소값을 전달함
    • 참조형 : 해당 메모리에 값 대신 주소가 있으면 컴퓨터는 그 주소로 이동해서 값을 가져온다.

6. 컴퓨터 이론

  1. 컴퓨터는 단순히 정의하고 반복
  2. 메모리의 명령어를 cpu로 옮겨서 실행결과를 다시 메모리에 적재하는걸 끊임없이 하는한다라고 정의(폰 노이만)
    • 노이만 머신 이론이라고 정의한다.
    • 명령어가 소비를 하면 프로그램이 종료가 된다(중간에 방해하지 못한다.)
  3. 연산자 우선순위보다는 무조건 괄호를 활용하거나 함수로 만든다 => 복잡성을 정복하려면 확실한 코드 작성

7. 플로우

  • 메모리의 명령어가 다 실행되는것을 하나의 플로우(동기적인 작업)
  • 이러한 플로우를 컨트롤 하고 싶다 => 제어문을 활용하여 플로우를 컨드롤 한다.
  • 이러한 플로우의 정확한 명칭 SYNC FLOW
  • 제어문을 통해 플로우를 컨트롤 하는 것을 SYNC FLOW CONTROL
  • SUB FLOW 메인 플로우에서 서브 플로우로 갔다가 다시 메인 플로우로 돌아오는 플로우
  • 이러한 한 플로우를 ROUTINE
  • 이러한 서브 플로우 하나를 SUB ROUTINE = 함수나 제어문

8. 제어문

  • 자바스크립트 엔진에게 힌트를 주기위해 사용된다.
  • IF 문 하나이면 Optional => 그 플로우를 타도 되고 안 타도 가능
  • IF ELSE문은 Mandatory => 둘중 하나의 서브 플로우를 타야하기 떄문
  • ()란 1. 산술연산자 우선순위 2. 제어문 형식 기호 3. 함수를 호출할떄 호출식 연산자

© 2023, Customized by Joon