본문 바로가기
프로그래밍언어론

[프로그래밍언어론] 3. PL의 관점에서 본 컴퓨터

by 파스텔코랄 2023. 9. 11.
프로그래밍 언어는 결국 컴퓨터에서 실행된다.
따라서 프로그래밍 언어를 설계하거나 이를 사용하여 프로그램을 개발하려면 컴퓨터가 어떻게 작동하는지 이해가 필요하다.


우리는 무엇을 고려해야 할까? = 컴퓨터에서 PL을 실행할 때 무엇을 고려하는가?
따라서 우리는 컴퓨터가 PL에 제공하는 것이 무엇인지 알아야 한다.

 



PL이 제공받는 것은 다음과 같다.

  1. 데이터 유형(Data types)
  2. 연산자(Operators)
  3. 실행 통제(Control of Execution)
  4. 데이터 통제(Control of Data)
  5. 메모리 관리(Memory Management)
  6. 입력과 출력(Input and Output)

 


데이터 유형(Data types)

  • 컴퓨터가 계산을 수행할 때 데이터에 대한 계산이 수행되는 경우가 많다.
  • 다양한 데이터 타입이 존재하며, 데이터 타입에 따라 적용 가능한 계산이 달라진다.
    예) Integer, String
  • 계산의 정확성을 검증하고 올바른 계산을 선택하려면 데이터 유형을 고려해야 한다.
    예) "+" 심볼의 사용 방법
    1. str1 + str2 : 글자 합치기
    2. 2 + 3 : 숫자 더하기

연산자(Operators)

  • 컴퓨터가 복잡한 계산을 쉽게 처리하게 한다.
  • PL은 또한 우리에게 친숙한 계산을 지원하는 연산자를 제공
    예) 문자열 연결, 모듈로 연산자 등.
  • 이러한 복잡한 계산을 내부적으로 처리하기 위해 다양한 기본 작업이 결합

실행 통제(Control of Execution)

  • 컴퓨터는 작업 실행을 제어한다.
    예) 조건부 또는 반복적으로 작업을 실행
  • 원하는 결과를 얻으려면 의도에 따라 작업을 실행한다.
    예) for (int i = 1; i <= 100; i++)
          sum += i

데이터 통제(Control of Data)

  • 컴퓨터에서 CPU는 결국 계산되는 데이터를 처리한다.
  • 그러나 이 데이터는 처음에는 CPU에 존재하지 않는다.
  • 따라서 컴퓨터 내부의 데이터 흐름 제어가 필요
    예) a = b + c

메모리 관리(Memory Management)

  • 컴퓨터가 프로그램을 실행할 때 일반적으로 프로그램은 메모리에 로드된다.
    예) 프로그램 자체가 사용 가능한 물리적 메모리보다 크면 어떻게 될까? → 가상메모리를 통한 페이징과 세그멘테이션 기법 사용
  • 프로그램은 계산을 위해 일부 데이터를 처리
  • 계산 중에 생성된 일부 정보를 저장해야 한다면 어떻게 합니까?
  • 메모리에 데이터를 로드하고 제거하려면 적절한 메모리 관리가 필요

입력과 출력(Input and Output)

  • 컴퓨터는 사용자로부터 입력받고 사용자에게 출력을 제공한다.
  • 컴퓨터는 PL에 I/O 기능을 제공
  • 일반적으로 I/O는 처리 시간이 많이 걸리므로 컴퓨터도 이를 효율적으로 처리한다.

 


 

우리는 무엇을 고려해야 하는지 알고 있지만 각 프로그래밍 언어는 이러한 문제를 다르게 처리한다.
예) 무조건 분기(goto)가 있는 언어 vs 무조건 분기가 없는 언어

따라서 보다 일반적이고 이론적인 방법으로 컴퓨터를 정의할 수 있어야한다.
다음 강좌에서 이에 해당하는 튜링 머신에 대해서 다룬다.

 

댓글