[F-Lab 모각코 챌린지] 23일차 - 타입은 무엇일까
F-Lab 모각코 챌린지 23일차 - 타입은 무엇일까? 타입에 대한 정의와 함께 여러 타입 이론들을 설명하였습니다
![[F-Lab 모각코 챌린지] 23일차 - 타입은 무엇일까](/content/images/size/w1200/2023/06/-------_--------_-------17.png)
타입에 대한 여러 이론들. 그 전에...
타입은 무엇일까?
먼저, 숫자를 생각해보자
int a = 65;
64 는 값이다.
이 값은 개발자가 직접 작성 한 값이며 이 값을 int 라는 타입에 넣음으로서 int 형태로 데이터를 해석 하겠다는 의미가 된다
그럼 char 타입에 넣는다면 어떻게 될까?
char b = 65;
이 역시 char 라는 타입에 넣음으로서 char 형태로 데이터를 해석 하겠다는 의미가 된다
우리 프로그래밍 언어는 최종적으로는 기계어로 해석되어 CPU 에 의해 실행된다.
그럼 0 과 1 이 난무하는 기계어 에서는 어떻게 될까?
사실 모든 데이터는 결국 0 과 1 로 이루어진 이진 데이터로 변환 되며, 컴퓨터는 이것을 이해한다. 그리고 우리는 타입을 통해 명령한다.
"이 데이터는 정수형으로 해석해라"
결국 타입이란 한마디로 정의 할 수 있다!
타입은 해석 방식을 결정하는 것
-by 스승
어떤 데이터를 어떻게 해석하는지 결정하는것이 바로 타입이다
그럼 많은 프로그래밍 언어에서는 이 '타입' 을 어떻게 생각하고 규정 지었을까?
원시타입
(The primitive types in type theory)
- 보편적인 타입 집합이다
- 원시 타입을 조합하여 파생타입(Derived type) 이 만들어진다
복합 타입
(Composite Types)
- 여러 개의 다른 타입을 조합하여 새로운 데이터 타입을 형성하는 타입
- 데이터의 구조와 관계를 표현하고, 데이터를 그룹화 하거나 조작하는 등의 작업 수행
복합 타입은 보다 복잡한 데이터 구조를 표현하기 위해 사용된다
아래의 구조체와 배열은 일반적인 복합 타입의 예시 이지만 다른 언어나 도메인에 따라 다양한 형태의 복합 타입이 존재 할 수 있다
구조체 (Structures)
- 서로 다른 타입의 필드들로 구성된 데이터 타입
- 다양한 데이터를 하나의 논리적인 단위로 그룹화 할 수 있고, 필드마다 다른 타입을 가질 수 있다
배열 (Array)
- 동일한 타입의 요소들로 구성되며 정렬된 데이터 구조
- 각 요소는 순서대로 인덱스를 이용하여 접근 가능
추상 데이터 타입
(Abstract Data Types)
추상적인 표현과 해당 데이터에 적용할 수 있는 연산들을 결합 한 개념
ADT 는 데이터의 내부 구조와 구현 방법에 대한 세부 정보를 감추고, 사용자에게는 해당 데이터와 연산들의 인터페이스만을 제공한다
데이터와 연산들을 하나의 논리적인 단위로 묶어 제공 함으로서, 데이터의 구체적인 구현 방식에 대한 독립적인 추상화를 제공한다
ADT 의 두가지 구성 요소
데이터 타입(Data Types)
특정 데이터의 추상적인 표현을 정의한다
데이터의 구조와 속성에 대한 정보를 포함한다
데이터 타입의 선언은 사용자에게 제공되는 인터페이스를 정의하며, 연산의 구현은 해당 인터페이스의 동작을 구체적으로 구현한다.
- 사용자에게 제공되는 인터페이스 ex: List, Stack
- 연산의 구현 ex: ArrayList, LinkedList
- 동시에 구현 ex: Integer, String
연산(Operations)
데이터에 대해 수행할 수 있는 연산들을 정의
이러한 연산들은 데이터를 조작하고, 변환하며, 조회하는 데 사용된다
- ex: List 의 add(E e), Stack 의 pop(), Collection 의 length() 등