그건 좋은 질문이야! 형식화 된 언어로 된 유형에서 예상되는 내용을 묻습니다.
먼저, 우리는 단일 유형으로 모든 프로그래밍 언어를 입력 할 수 있습니다 . 문자를 고르고 U
모든 프로그램에 유형이 있다고 말합니다 U
. 이것은별로 유용하지 않지만 중요합니다.
eAeAAint
당신의 유형이 얼마나 표현력이 좋을지는 끝이 없습니다. 원칙적으로 그것들은 어떤 종류의 논리적 진술 일 수도 있고, 범주 이론과 기타 등등을 사용할 수도 있습니다. 예를 들어, 종속 유형을 사용하면 "이 함수는 목록을 출력하여 정렬 된 입력이되도록 목록을 매핑합니다"와 같은 것을 표현할 수 있습니다. 현재 동시 프로그램이 공유 상태와 작동하는 방식에 대해 이야기 할 수있는 "동시 분리 논리"에 대한 이야기를 듣고있는 순간부터 더 나아갈 수 있습니다. 멋진 물건.
프로그래밍 언어 디자인의 유형 기술은 표현력과 단순성 의 균형 을 유지하는 것 중 하나입니다 .
- 보다 표현적인 유형을 통해 우리 자신과 컴파일러에게 더 자세한 내용을 설명 할 수 있습니다.
- 더 간단한 유형은 이해하기 쉽고 컴파일러에서 더 쉽게 자동화 할 수 있습니다. (사람들은 유형 검사를 수행하기 위해 기본적으로 교정 보조 및 사용자 입력이 필요한 유형을 제시합니다.)
모든 프로그래머가 프로그래밍 언어 이론에서 박사 학위를 가지고있는 것은 아니기 때문에 단순성을 과소 평가해서는 안됩니다.
다시 질문으로 돌아 갑시다 : 타입 시스템이 좋은지 어떻게 알 수 있습니까? 글쎄, 당신의 유형이 균형을 이루고 있다는 이론을 증명하십시오. 두 종류의 정리가 있습니다 :
당신의 타입이 유용 하다고 말하는 정리 . 프로그램에 유형이 있음을 알면 프로그램이 멈추지 않는다는 것을 보증해야합니다 ( 안전 정리 가 될 것입니다 ). 또 다른 이론 정리는 유형을 시맨틱 모델에 연결 하여 실제 수학을 사용하여 프로그램에 대한 사항을 증명할 수 있습니다 ( 적정성 이론 및 기타 많은 것들). 위의 단일 유형은 유용한 이론이 없기 때문에 나쁩니다.
당신의 타입이 단순 하다고 말하는 정리 . 기본 표현식은 주어진 표현식에 주어진 유형이 있는지 여부를 결정할 수 있다는 것입니다. 또 다른 단순 기능은 형식을 유추하는 알고리즘을 제공하는 것입니다. 단순성에 대한 다른 이론은식이 최대 하나의 형식을 갖거나식이 기본 형식 (즉, 모든 형식 중에서 "최고의"형식)을 갖는다는 것입니다.
유형은 매우 일반적인 메커니즘이므로 더 구체적으로 지정하기가 어렵습니다. 하지만 당신이 쏴야 할 것을보기를 바랍니다. 프로그래밍 언어 디자인의 대부분의 측면과 마찬가지로 절대적인 성공 척도는 없습니다. 대신, 설계 가능성의 공간이 있으며, 중요한 것은 공간의 현재 위치 또는 원하는 위치를 이해하는 것입니다.