정적으로 입력 된 코드를 동적으로 입력 한 코드와 비교 - 비용 및 이점

StackOverflow https://stackoverflow.com/questions/419072

문제

그 장점이 무엇이든, Adobe의 Actionscript 3은 타이핑과 미지의 언어의 결과를 탐색 할 수있는 독특한 기회를 제시합니다. 왜냐하면 그것은 엄격한 유형의 선언, 선언적 캐스팅의 모든 구문 혜택/오버 헤드와 함께 JavaScript의 엄격한 대체 세트이기 때문입니다. 등.

이것이 가능한 것은 필수 언어 구문을 고려하는 동시에 두 가지 방법으로 작성된 동일한 코드를 비교하는 것입니다.

이로 인해 오류율, 프로그래밍 생산성 및 코드 볼륨과 관련하여 편집 중에 오류 검사에 대한 강력한 타이핑의 실제 이점에 대한 정량적 증거가 있는지 궁금합니다. 아니면 우리의 관점은 전적으로 추측과 추측에 근거하고 있습니까? 두 가지 방법으로 사용할 수있는 다른 언어가 있습니까 (구식 VB를 계산하지 않음 - 어느 쪽이든 존중받는 언어가 아닙니다.)

나는 두 언어 모두에서 상당한 시간을 보냈지 만 내가 선호하는 방법을 결정적으로 결정하지 않았으며 일화적인 증거에 추가하지 않겠습니다. 객관적인 정보를 찾고 있습니다.

도움이 되었습니까?

해결책

이것은 프로그래밍의 위대한 종교 전쟁 중 하나이며, 아마도 한 편집자 Emacs와 사탄 VI의 사악한 스폰 사이의 갈등에 의해서만 초과되었습니다.

기본적으로 동적 언어로 작성된 프로그램이 정확하다면 정적으로 유형 된 언어로 변환되어 여전히 정확하며 그 반대도 마찬가지입니다. 진정으로 정적으로 유형 된 langfuage의 장점은 동적 언어로 실행 시간에 나타나는 버그는 정적으로 정적 인 언어로 컴파일 시간에 식별 할 수 있다는 것입니다.

그러나 이러한 상황에서 종종 소홀히하는 것은 정적으로 입력 된 언어가 일반적으로 타입 캐스트와 같은 탈출 해치를 가지고 있으며, 동적 언어는 유형의 추론을 사용하여 유형의 유형으로 취급 할 수 있으며, 동적 표현식의 유형을 정적으로 입력 할 수 있다는 것입니다.

커버 아래에서 정말로 중요한 것은 프로그래머입니다. 프로그래머가 프로그램을 올바르게 생각하면 정적 또는 역동적 인 언어로 옳습니다. 나는 어느 쪽이 실제로 더 생산적이거나 실제로 오류가 발생하기 쉽다는 좋은 실험적 증거를 알지 못합니다.

다른 팁

내 생각에, C#과 같은 강력하게 타이핑 된 언어는 컴파일 시간 동안 식별 할 수 있습니다. 유형이 느슨한 언어로 잡히지 않는 많은 간과 오류가 나중에 런타임 오류를 일으킬 수 있습니다. 엄격한 편집은 나중에 런타임 중에 오류를 일으킬 문제를 예상 할 수 있기 때문에 이것이 단지 추측이라고 생각하지 않습니다. 이로 인해 구현 중에 간과되는 대부분의 코딩 오류를 제거 할 수 있지만 컴파일러가 쉽게 찾아서 고정 할 수 있습니다.

정적 타이핑의 가치는 당신이 내가 생각하는 것처럼, 당신이 그것이 사실을 보여주는 테스트가 없다면 소프트웨어에 대해 무언가라고 말할 수 없다는 것을 믿는다면 나에게 제한된 것으로 보인다. 당신이 그것을 받아들이고 연습한다면, 버그가 컴파일 시간 또는 테스트 시간에 식별되는지 여부와 관련이 없습니다.

이 시점에서, 나는 두 가지 유형의 언어 중 더 간결한 것을 가졌으며, 내 경험상 역동적 인 언어였다.

플립 측면은 정적 타이핑이 테스트를 작성하지 않는 경우에만 도움이된다는 것입니다. 이 경우 정적 타이핑으로 인해 소프트웨어의 올바른 기능을 보장하기에 충분하지 않을 수 있습니다.

OP 및 FelipecSL은 분야 입력에 대해 이야기 할 때 사용되는 용어에 대해 혼란스러워합니다.

정적 타이핑 수단 유형은 컴파일 타임 중에 확인됩니다 (컴파일 시간이 언어에서 의미하는 것은 무엇이든). 동적 타이핑은 표현식/명령문이 실행되면 유형을 확인합니다. 강력한 타이핑은 예를 들어 정수로 포인터를 파괴 (캐스트) 할 수 없음을 의미합니다. 약한 타이핑은 강한 타이핑과 반대입니다.

내가 아는 한 "엄격한 타이핑"은 없습니다.

이제 다른 사람이 실제 질문에 대답하기 위해 ;-)

약한 타이핑은 더 많은 유지 보수 시간이 필요합니다. 프로그램이 더 복잡해지면서 명백한 문제를 선택할 수있는 컴파일러가 없기 때문에 더 많은 문제가 발생합니다. 큰 복잡한 프로젝트에는 권장되지 않습니다. 나는 경험에서 말한다.

통계적으로 입력 한 Lang. 프로그래머가 명시 적으로 명시하거나 추론하는 고정 유형으로 변수와 xpressions를 사용하십시오. 컴파일러. 정보, 유형 확인은 여기에서 확인 시간에 수행됩니다. 동적으로 입력 한 Lang은 값을 고정 시켰지만 변수와 xxpressions는 고정되어 있습니다. 피연산자가 계산 될 때는 다른 값을 반환 할 가능성이 높으며 오페라가 계산 된 후 유형 확인이 완성 될 수 있습니다. 계산 후 런타임에 작동을 수행하기 전에

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top