[논문 리뷰] An Overview of Nominal-Typing versus Structural-Typing in Object-Oriented Programming (with code examples)
이 논문은 객체지향 프로그래밍의 명칭형 타이핑을 형식화하는 수학적 모델, NOOP을 제시하며, 주류의 명칭형 타이핑 언어에서 상속과 부하형 타이핑의 동치성을 증명한다. 개념적 정의와 코드 예제를 통해 명칭형 타이핑과 구조형 타이핑을 대비시켜, OOP의 타입 시스템 설계에 대한 기초를 마련한다.
NOOP is a mathematical model of nominally-typed OOP that proves the identification of inheritance and subtyping in mainstream nominally-typed OO programming languages and the validity of this identification. This report gives an overview of the main notions in OOP relevant to constructing a mathematical model of OOP such as NOOP. The emphasis in this report is on defining nominality, nominal typing and nominal subtyping of mainstream nominally-typed OO languages, and on contrasting the three notions with their counterparts in structurally-typed OO languages, i.e., with structurality, structural typing and structural subtyping, respectively. An additional appendix demonstrates these notions and other related notions, and the differences between them, using some simple code examples. A detailed, more technical comparison between nominal typing and structural typing in OOP is presented in other publications.
연구 동기 및 목표
- 수학적 모델을 사용하여 명칭형 타이핑 OOP 언어에서 상속과 부하형 타이핑의 관계를 형식화하기.
- 객체지향 타입 시스템에서 명칭형 타이핑, 명칭형 부하형 타이핑, 명칭성과 그 구조형 대응 개념을 정의하고 대비하기.
- 주류 객체지향 언어에서 명칭형 타이핑이 구조형 타이핑과 어떻게 다름을 개념적으로 명확히 하기.
- 부록에 포함된 코드 예제를 통해 차이점을 시각화하기.
- OOP에서 명칭형과 구조형 타이핑 간의 향후 기술적 비교를 위한 기초 마련하기.
제안 방법
- 명칭형 타이핑 OOP를 위한 형식적 수학적 프레임워크로 NOOP 모델 개발하기.
- 명칭성은 명시적 선언과 이름에 기반한 타입의 성질로 정의하기.
- 이름 기반의 타입 동치성과 상속 관계를 통해 명칭형 타이핑을 형식화하기.
- 이름과 구조에 기반한 타입 호환성 규칙을 사용하여 명칭형 부하형 타이핑과 구조형 부하형 타이핑를 대비하기.
- 부록의 코드 예제를 활용하여 타입 호환성과 상속의 차이를 시각화하기.
- 형식적 추론을 통해 명칭형 타이핑 시스템에서 상속을 부하형 타이핑으로 정당화할 수 있음을 입증하기.
실험 결과
연구 질문
- RQ1OOP에서 명칭형 타이핑은 타입 정체성과 호환성 측면에서 구조형 타이핑과 어떻게 다름?
- RQ2어느 정도까지 명칭형 타이핑 언어에서 상속을 부하형 타이핑으로 공식적으로 동일시할 수 있는가?
- RQ3타입 시스템에서 명칭성과 구조성과를 구분하는 형식적 특성은 무엇인가?
- RQ4코드 예제는 명칭형 타이핑과 구조형 타이핑의 실용적 결과를 어떻게 설명하는가?
- RQ5명칭형 시스템에서 부하형 타이핑이 상속과 동치임을 뒷받침하는 기초 원리는 무엇인가?
주요 결과
- NOOP 모델은 명칭형 타이핑 OOP 언어에서 상속과 부하형 타이핑의 동치성을 성공적으로 형식화한다.
- 명칭형 타이핑은 명시적 타입 이름과 선언에 의존하며, 이는 구조 기반의 타입 호환성과 구별된다.
- 구조형 부하형 타이핑은 이름이나 선언과 무관하게 타입의 구조만으로 호환성을 허용한다.
- 모델은 명칭형 타이핑 시스템에서 부하형 타이핑이 상속 관계에 의해 타당하게 근거가 있음을 확인한다.
- 부록의 코드 예제는 명칭형 타이핑이 구조형 타이핑보다 더 엄격한 타입 호환성을 요구함을 시각적으로 보여준다.
- 명칭형 타이핑과 구조형 타이핑의 차이는 OOP 타입 시스템 설계에서 개념적으로도 실용적으로도 중요하다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.