프로그래밍 언어

컴퓨터와 대화하기 위해 필요한 언어이지 우리가 다른 나라 말 배우는 이유랑 같은 거라 생각한다

  • 크게 저급 언어, 고급 언어로 나뉘는데 기준이라면 인간과 기계 누구에게 맞춰줘 있냐가 포인트야

저급 언어

  • 기계어
    • 컴퓨터가 직접 이해할 수 있는 언어
    • 수행시간이 빠르다
    • 우리가 흔히 아는 0과 1 방식
    • 언어의 호환성이 없다
    • cpu 내장 명령을 직접 사용하는 것으로 프로그램을 작성하고 이해하기 어렵다
      • 기억해봐 micro operation 답답하잖아
  • 어셈블리어
    • 기계어와 1 : 1로 대응되는 기호로 이루어진 언어
    • 하드웨어 제어에 주로 사용되며 역시나 언어의 호환성은 없다
    • 컴퓨터가 직접 이해 못하므로 어셈블러로 기계어로 번역해줘야함

고급 언어

  • 보통은 컴파일 해야하는 언어들을 의미하지
  • 인간 친화적이야 그나마
  • 하드웨어에 대한 깊은 지식이 없어도 프로그램을 만들 수 있어
  • 컴파일러나 인터프리터가 필요하다
    • 역시나 기계어로 번역하기 위해

컴파일러와 인터프리터

컴파일러와 인터프리터도 결국은 번역긴데 좀 있어 보이게 말하자면 Source Program을 Object프로그램으로 바꾸는 역할을 해

컴파일러

  • 프로그램 전체를 번역한 후 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행 프로그램을 생성한다
    • 우리가 흔히 보는 C 언어
  • 번역 과정이 번거럽고 오래 걸리지만 한 번 번역하면 다시 번역하지 않아도 되니까 실행 속도가 빠르다

인터 프리터

인터프리터 특징에서 오는 단점이 대부분인거 같아

  • 한 줄 단위로 프로그램을 번역한다. 프로그램을 실행시킬 때마다 다시 번역한다
  • 목적 프로그램이 생성되지 않아
  • 시분할 시스템에 유용하다
  • 원시 프로그램 변화에 민감하다
  • 번역 속도는 빠르지만 매번 번역하니까 실행 속도가 느려
    • 파이썬으로 서비스 만들어서 돌리면 느리잖아 느낌알지?
  • cpu 사용 시간의 낭비가 크다