타입의 개요

타입

  • 데이터 집합과 연산 집합의 결합

  • 데이터 집합
    • 처리 대상이 되는 데이터의 집합
    • 예 : 정수형의 데이터 집합 = { …, -1, -1, 0, 1, 2, …}

  • 연산 집합
    • 해당 데이터에 적용 가능한 연산의 집합
    • 예 : 정수형의 연산 집합 = {+. -, *, /, %, …}

  • 변수의 속성 중 한가지
  • 서브프로그램의 인자와 반환에도 이용
  • 연산의 안전성 보장을 위해 필요
  • 프로그램은 “타입 안전하다”라는 표현
    • 프로그램 내 모든 연산 및 함수에 대해 다음 성질을 만족하는 경우
    • 함수 f의 타입이 f(x): A → B라면 모든 a∈A에 대해 f(a)∈B이어야 함
    • 타입 오류가 발생하지 않는다는 의미

타입 안전성에 따른 PL의 분류

  • 강타입 언어
    • 모든 타입오류를 검출하는 언어
    • Haskell, ML, Java(타입 캐스팅 제외하면)

  • 약타입 언어
    • 타입 오류를 검출, 그러나 일부 타입 오류를 허용
    • C → 공용체, 타입 캐스팅을 통해 타입 검사 회피

  • 무타입 언어
    • 타입 선문도 없고 어떤 대상의 타입도 계속 변경 가능
    • Python 등 대부분의 스크립트 언어

타입의 분류 기준

  • 데이터 형태에 따라
    • 정수형, 실수형, 문자형, 배열, 구조체 등

  • 타입 정의에 사용자 개입 여부에 따라
    • 원시 타입
    • 사용자 정의 타입

  • 데이터 요소의 형태에 따라
    • 단순 타입
    • 복합 타입

사용자 개입 여부에 따른 분류

  • 원시타입
    • 프로그래밍 언어에서 기본적으로 제공하는 타입
    • 미리 정의된 타입
    • 내장 타입
    • 대부분 언어 : 정수형, 실수형, 문자형, 논리형

  • 사용자 정의 타입
    • 사용자가 직접 정의해서 사용하는 타입
    • 배열, 구조체 등

데이터 요소의 형태에 따른 분류

  • 단순 타입
    • 데이터 집합의 요소가 하나의 데이터로만 구성
    • 스칼라 타입
    • 정수형, 실수형, 문자형, 논리형, 열거형 등

  • 복합 타입
    • 데이터 집합의 요소가 데이터들의 구조로 구성
    • 단순타입 혹은 다른 복합타입을 활용
    • 구조 타입
    • 배열, 구조체, 클래스 등

Updated: