판 비교
1번째 줄 근처
추가: ## 개요
추가: 타입 소거(type erasure)는 프로그래밍 언어 구현 과정에서 명시적 타입 어노테이션이 프로그램에서 제거되는 과정을 말한다. 소스 코드나 중간 표현에 존재하던 타입 정보가 컴파일 또는 로드 타임에 지워져, 런타임 실행 시에는 타입 정보가 없거나 일부만 남는 상태로 프로그램이 동작하게 된다. 이러한 방식으로 동작하는 의미론을 타입 소거 의미론(type-erasure semantics)이라 부르며, 이는 타입 정보가 런타임까지 전달되는 타입 전달 의미론(type-passing semantics)과 대비된다. 타입 소거 의미론은 프로그램의 런타임 실행이 타입 정보에 의존하지 않도록 보장하는 추상화 원칙으로 기능한다. 제네릭 프로그래밍 문맥에서 타입 소거의 반대 개념은 실체화(reification)이다.[1][2][3]
추가:
추가: ## 역사·유래
추가:
추가: 타입 소거 개념은 람다 계산과 타입 이론 연구에서 비롯되었다. 명시적으로 타입이 지정된 람다 항에서 타입 정보를 지워 암묵적으로 타입이 지정된 항을 얻는 과정이 형식화되면서, 타입 시스템의 메타이론적 성질을 분석하는 도구로 사용되었다. 2002년 Crary, Weirich, Morrisett는 《Journal of Functional Programming》에 게재된 논문 "Intensional Polymorphism in Type-Erasure Semantics"에서 타입 소거 의미론 하에서 다형성과 타입 강도(intensional polymorphism)를 다루는 이론적 틀을 제시하였다. 이 연구는 타입 소거가 단순한 구현 기법을 넘어 언어 의미론의 기초가 될 수 있음을 보였다.[2][3]
추가:
추가: ## 작동 방식과 유형
추가:
추가: ### 컴파일·로드 타임 처리
추가:
추가: 타입 소거는 일반적으로 컴파일 타임 또는 클래스 로드 타임에 수행된다. 제네릭 타입 매개변수, 타입 어노테이션, 타입 캐스트 등 정적 타입 검사에만 필요한 정보가 바이트코드나 기계어 생성 단계에서 제거된다. 예를 들어 제네릭 클래스 `List<String>`은 컴파일 후 원시 타입 `List`로 변환되며, 요소 접근 시 필요한 타입 캐스트는 컴파일러가 자동으로 삽입한다. 이 과정에서 타입 매개변수의 경계(bound)가 `Object`나 최상위 슈퍼타입으로 대체된다.[2][3]
추가:
추가: ### 타입 소거 의미론의 특성
추가:
추가: 타입 소거 의미론을 따르는 언어에서는 런타임에 타입 정보를 검사하거나 분기하는 연산이 원칙적으로 불가능하다. `instanceof` 검사, 리플렉션을 통한 제네릭 타입 매개변수 조회, 타입 기반 오버로드 해제 등이 제한된다. 이는 프로그램 동작이 타입에 의존하지 않음을 보장하여, 타입 안전성을 정적 검사로 완결하고 런타임 오버헤드를 줄이는 효과가 있다. 반면 타입 정보를 런타임에 활용하고자 할 때는 별도의 메타데이터 보존 기제(예: 시그니처 어트리뷰트, 리플렉션 API)가 필요해진다.[2][3]
추가:
추가: ### 타입 추론과의 관계
추가:
추가: 타입 소거의 역연산은 타입 추론(type inference)이다. 타입 소거가 명시적 타입 정보를 지워 암묵적 타입 프로그램을 만드는 과정이라면, 타입 추론은 타입 정보가 없는 프로그램에서 타입을 복원해 명시적 타입 프로그램을 구성하는 과정이다. 타입 소거를 이용해 암묵적 타입 언어의 타입 체계를 정의할 수 있다(암묵적 타입 항이 잘 타입 지정된 명시적 타입 항의 소거일 때만 잘 타입 지정된 것으로 간주). 다만 이 정의만으로는 타입 추론을 위한 추론 규칙을 제공하지 않는다.[2][3]
추가:
추가: ## 사례
추가:
추가: 자료에는 구체적인 프로그래밍 언어 구현 사례가 명시되어 있지 않다. 위키백과 '같이 보기' 항목에 템플릿(C++), 자바 제네릭의 타입 소거 문제점, 단일형화(monomorphization), 타입 다형성이 관련 주제로 제시되어 있을 뿐이다.[2][3]
추가:
추가: ## 규제·논란·평가
추가:
추가: 자료에는 타입 소거를 둘러싼 구체적인 규제, 논란, 평가가 기술되어 있지 않다. 다만 타입 소거 의미론과 타입 전달 의미론의 대조, 타입 추론과의 관계, 실체화와의 대비 등이 이론적 논의 거리로 제시되어 있다.[2][3]
추가:
추가: 이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.