2013-05-07 7 views
0

동적 유형 지정 언어 (예 : Python)는 런타임에 유형 검사를 수행하므로 변수 또는 매개 변수는 모든 유형의 값을 참조 할 수 있습니다. 언어 정의에서 변수와 매개 변수를 입력해야합니까? 형식과 변수 및 매개 변수를 갖도록 언어를 수정하는 것이 합리적입니까?동적 유형의 언어 유형

+0

원래 질문을 닫았습니다. 사소한 문구 변경만으로 다시 물어볼 필요가 있습니다. – Abizern

+0

다양한 언어가이를 수행합니다. 점진적 타이핑, 동적 유형 언어에 대한 유형 유추, 계약, 이름을 지정합니다. –

+1

질문에 대한 질문에 어떤 문제가 있습니까? – akonsu

답변

1

이 질문은 아마 거 닫히지입니다.

강력히 입력 된 프로그래밍 배경에서 오는 사람이라면 적어도 타이핑을 지정하는 옵션을 주장 할 것입니다. 그러나 하루가 끝날 무렵, 언어의 작성자/수정자는 유형을 지정할 가능성을 허용하기에 충분하지 않은 타이핑에 대한 요구 사항을 싫어했습니다. 그래서 나는 그것이 실제로 좋은 의미가 될지라도 그것이 일어나고 있다고 믿지 않을 것입니다.

간단한 연구 결과에 따르면, 파이썬에서는 유형을 지정할 수 없습니다. 하지만 isinstance를 사용하여 유형을 확인할 수 있습니다. http://docs.python.org/library/functions.html#isinstance

이제 개인적인 견해로 말하면, 나는 그럴 수 없습니다. 해당 언어의 관리자/작성자가 효율을 낮추거나 언어의 실제 의도와 달리 할 수있는 경우 적어도 형식을 지정하는 기능을 추가 할 수있는 사람을 허용해야합니다.

0

정적 및 동적 입력을 혼합 할 수 있습니다. 많은 언어가 있습니다.

가장 간단한 경우에는 object (Python 용어 사용)을 근간으로하는 모든 유형을 포함하는 클래스 계층 구조가 있습니다. 모든 "유형화되지 않은"변수는 object 유형을 가지므로 모든 변수를 보유 할 수 있습니다. 다른 변수는 int과 같이보다 구체적인 유형을 가질 수 있습니다.

구현은 여전히 ​​런타임 유형 검사를 수행해야하지만 컴파일 시간에 유형을 확인할 수있는 검사를 최적화 할 수 있습니다.

Cython는 C 컴파일러에 정적 타이핑 부분 부담을 덜어 것을 제외하고 비슷한 작업을 수행합니다 정상적으로 @ 존 - 스키트 같은 사람에 의해 저장하지 않는

def foo(): 
    cdef int i = 0 # statically typed variable 
    ham = "spam" # dynamically typed variable 

    while i < 10: 
     print(ham) 
     i += 1