프로그래밍 언어는 결국 컴퓨터에서 실행된다.
따라서 프로그래밍 언어를 설계하거나 이를 사용하여 프로그램을 개발하려면 컴퓨터가 어떻게 작동하는지 이해가 필요하다.
우리는 무엇을 고려해야 할까? = 컴퓨터에서 PL을 실행할 때 무엇을 고려하는가?
따라서 우리는 컴퓨터가 PL에 제공하는 것이 무엇인지 알아야 한다.
PL이 제공받는 것은 다음과 같다.
- 데이터 유형(Data types)
- 연산자(Operators)
- 실행 통제(Control of Execution)
- 데이터 통제(Control of Data)
- 메모리 관리(Memory Management)
- 입력과 출력(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 무조건 분기가 없는 언어
따라서 보다 일반적이고 이론적인 방법으로 컴퓨터를 정의할 수 있어야한다.
다음 강좌에서 이에 해당하는 튜링 머신에 대해서 다룬다.
'프로그래밍언어론' 카테고리의 다른 글
[프로그래밍언어론] 6. 컴파일러와 인터프리터 (0) | 2023.09.11 |
---|---|
[프로그래밍언어론] 5. 프로그래밍 언어 설계 (0) | 2023.09.11 |
[프로그래밍언어론] 4. 튜링 머신, 튜링 완전성 (0) | 2023.09.11 |
[프로그래밍언어론] 2. 통합개발환경(IDE), VSCode (0) | 2023.09.05 |
[프로그래밍언어론] 1. 개념과 패러다임 (0) | 2023.09.05 |
댓글