문제

정적으로 입력 한 언어로만 존재합니까? 그리고 언어가 강하게 입력되지 않은 경우에만 (즉, Java는 하나가 있습니까?)? 또한 컴파일 된 언어라고 가정하면 컴파일 단계에서 어디에 속해 있습니까?

일반적으로 유형이 언어 사양에 의해 모호한 또는 구현에 남아있을 때 규칙이 있습니까?

도움이 되었습니까?

해결책

Typenference는 정적으로 정적 인 언어의 특징입니다. 컴파일러는 유형 주석이없는 엔티티에 유형을 할당하도록 컴파일러에 의해 수행됩니다. 컴파일러는 프로그래머를 대신하여 정적 유형 정보를 효과적으로 '채 웁니다'.

형식 추론은 많은 암시 적 강요와 모호성을 가진 언어에서 더 잘 작동하지 않으므로 대부분의 유형의 추론 된 언어는 강요, 과부하 등의 방식이 거의없는 기능적 언어입니다.

Apection은 언어 사양의 일부입니다. 예를 들어 F# 사양은 유형의 추론 알고리즘 및 규칙에 대해 자세히 설명합니다. 이는 '법적 프로그램이 무엇인지 효과적으로 결정합니다.

일부 (대부분의 가장?) 언어는 일부 제한된 형태의 형식 추론 (예 : 'var')을 지원하지만, 대부분의 사람들은 '유형 추론'을 사용하여 대다수의 유형이 명시 적보다는 추론되는 언어를 참조합니다 (예 : F#에서, 함수 및 방법 서명은 로컬 변수 외에도 일반적으로 추론되며, 'var'는 로컬 변수의 추론을 허용하지만 방법 선언에는 전체 유형 정보가 필요합니다).

다른 팁

유형 추론자는 컨텍스트에서 유형 A 변수가 무엇인지 결정합니다. 그렇게하기 위해 강력한 타이핑에 의존합니다. 예를 들어, 기능 언어는 매우 강력하고 정적으로 입력되었지만 유형 추론에 완전히 의존합니다.

C# 및 vb.net은 유형의 추론을 갖는 정적으로 입력 된 언어의 다른 예입니다 (제네릭을 사용할 수 있도록 제공하며 LINQ의 쿼리, 특히 예측을 지원하는 데 필요합니다).

동적 언어는 유형을 유추하지 않으며 런타임에 발견됩니다.

유형 추론은 일부 정적 언어에서 발견되는 약간의 타협입니다. 유형을 추론 할 수있는 경우 유형을 지정하지 않고 변수를 선언 할 수 있습니다. 컴파일 시간에. 잠재적 타이핑의 유연성을 제공하지는 않지만 유형 안전을 얻으면 글을 많이 쓰지 않아도됩니다.

보다 위키 백과 기사.

유형 추론자는 유형 추론 알고리즘을 사용하여 유형을 정적으로 추론하는 것입니다. 따라서 그것은 정적 언어의 특징이 아닙니다.

동적 언어 또는 안전하지 않거나 암시 적 유형 변환이있는 정적 분석 도구를 구축 할 수 있으며 유형 추론은 그 작업의 주요 부분이됩니다. 그러나 안전하지 않거나 동적 유형 시스템이있는 언어에 대한 유도 또는 암시 적 변환을 포함하는 언어에 대한 추론은 일반적인 경우 프로그램의 유형 안전을 입증하는 데 사용할 수 없습니다.

이러한 유형 추론이 사용됩니다.

  • 정적 언어의 유형 주석을 피하려면
  • 동적 언어를위한 컴파일러 최적화 (예 : 체계, 자체 및 파이썬의 경우),
  • 동적 언어에 대한 버그 점검 도구, 컴파일러 및 보안 분석에서.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top