PL

[PL] Data types(2)

서노리 2022. 4. 18. 22:22
반응형

이전 포스팅: [PL] Data types(1)

 

Array Types(배열 타입)

배열은 여러개의 동일한 데이터 타입을 묶어서 처리하는 데이터 타입이다. 인덱싱(Indexing)을 통해 각각의 원소에 접근할 수 있으며 C/C++에서는 배열의 인덱스 범위 검사(Index range checking)를 수행하지 않지만 Java 등의 언어에서는 수행한다. 

 

※ Subscript Binding and Array Categories

  • Static
    - 고정된 메모리 위치에 고정된 크기의 배열을 할당하는 방식(before runtime)
    - 실행과 동시에 해당 메모리는 할당된 상태로 프로그램이 끝날때까지 사용
    - 효율적이나 유연성(재귀 호출 등)이 떨어짐
    - static이 붙은 배열

  • Fixed stack-dynamic
    - 크기가 고정되어 있지만 스택 할당은 런타임에 결정되는 방식
    - 공간적으로 효율적
    - static이 붙지 않은 일반적인 배열

  • Fixed heap-dynamic
    - storage binding은 dynamic하지만 할당 이후로는 고정되는 방식
    - ex) malloc, new

  • Heap-dynamic
    - subscript 범위 바인딩과 storage 할당 모두 dynamic하고 계속 변경될 수 있는 방식
    - ex) Python의 list

※ Compile time Descriptors

 

※ Heterogeneous Array
- 서로 다른 타입의 데이터들을 묶어서 저장할 수 있는 배열
- ex) Python의 list

※ Associative Array
- 순서가 없고 원소의 key를 통해서 인덱싱하는 배열
- ex) Python의 dictionary

 

Record Type(레코드 타입)

서로 다른 타입의 데이터들을 묶고 각각의 이름을 통해서 관리하는 데이터 타입이다.
ex) C언어의 struct, Java와 C++의 class

Tuple Type(튜플 타입)

record type과 비슷한 역할을 하지만 데이터 각각의 이름이 없다.
리스트와도 비슷하지만 튜플은 수정될 수 없다.

List Type(리스트 타입)

배열과 비슷하지만 원소가 같은 타입일 필요가 없다.
파이썬에서는 배열 대신 리스트를 사용한다.
리스트의 원소로 리스트가 올 수도 있다.


 

반응형

'PL' 카테고리의 다른 글

[PL] Data types(3)  (0) 2022.04.23
[PL] Data types(1)  (0) 2022.04.18
[PL] Names, Binding, Scope  (0) 2022.04.17
[PL] 어휘분석과 구문분석(Lexical and Syntax Analysis)  (0) 2022.04.17
[PL] Semantic의 표현  (0) 2022.04.17