동적 및 정적 타이핑에 대한 선호는 주로 맛의 문제이며, 다른 사람들은 다른 상황에서 다소 적합하다고 생각합니다.
내 질문은, 클라이언트 측 웹 페이지 기능 보강 등을 위해 JavaScript에 대해 정적으로 유형이 지정된 대안을 갖는 것이 기술적으로 가능할까요?
동적 및 정적 타이핑에 대한 선호는 주로 맛의 문제이며, 다른 사람들은 다른 상황에서 다소 적합하다고 생각합니다.
내 질문은, 클라이언트 측 웹 페이지 기능 보강 등을 위해 JavaScript에 대해 정적으로 유형이 지정된 대안을 갖는 것이 기술적으로 가능할까요?
답변:
그러한 것이 존재할 수 없었던 기술적 이유는 없습니다. 클라이언트 측 코드에 대한 특정 아무것도 그 의무 동적으로 입력 된 언어의 사용.
다른 언어가 광범위하게 채택 될 가능성은 거의 없기 때문에 정적으로 형식화 된 JavaScript 버전 (예 : Java에 가까운 언어)과이를 일반 JavaScript로 변환하는 전처리기를 만드는 것이 가장 좋습니다.
예를 들어, 스크립트는 다음과 같습니다.
<script type="text/staticjavascript">
String foobar(int foo, String bar) {
String result="";
for (int i=0; i<foo; i++) {
result += bar;
}
return result;
}
</script>
전처리 기는 모든 변수, 함수, 객체 등이 유형에 따라 올바르게 사용되는지 확인하고 스크립트를
<script type="text/javascript">
function foobar(foo, bar) {
var result="";
for (var i=0; i<foo; i++) {
result += bar;
}
return result;
}
</script>
모든 브라우저가 처리 할 수 있습니다.
내 질문은, 클라이언트 측 웹 페이지 기능 보강 등을 위해 JavaScript에 대해 정적으로 유형이 지정된 대안을 갖는 것이 기술적으로 가능할까요?
확실한. 구글 웹 툴킷은 그냥 생각 ... 자바 스크립트 자바를 정적으로 입력 된 컴파일합니다 모든 아름다움과 자바의 유연성, 기계 생성 된 자바 스크립트의 모든 성능!
심각하게도 모든 종류의 언어에 대해이 작업을 수행 할 수 있으며 많은 사람들이 시도했습니다 (C 및 C # 용 컴파일러가 있거나 이미 있습니다). 최종 결과의 실용 여부는 달성하려는 목표에 달려 있습니다. Google은 매우 큰 클라이언트 측 앱을 개발하기위한 일관된 플랫폼을 갖추고 있으며 자체 자바 스크립트 엔진을 사용하여 부팅합니다. 호버 효과에 이러한 짐승을 채택하고 이상한 AJAX 호출은 단순히 형식화되지 않은 코드로 사는 법을 배우는 것보다 훨씬 많은 고통을 초래한다는 것을 알 수 있습니다 ...
이미 존재합니다.
ActionScript 3 (Flash 및 Flex의 스크립팅 언어)은 강력한 유형을 구현하는 ECMAScript의 방언이며 JavaScript와 동일한 클라이언트 측 방식으로 사용할 수 있습니다 (AS3에 플래시 플러그인이 필요하다는 점과 컴파일됩니다). 나는 요즘 개인적으로 그것을 피하려고 노력하지만, 당신이 "정적"캠프에 있다면 소용돌이를 줘라.
이것이 주요 질문에 대한 답입니다. 이제 우리는 두 번째 질문이 "Flash입니까?"가됩니다. 대답은 "예"이며 몇 가지 "if"와 "but"가 있습니다
이론적으로 원하는 페이지에 모든 스크립트를 붙일 수 있습니다. 결국 <script>
태그에는 type
속성이 있습니다.
유일한 장벽은 다른 브라우저에서 구현 측면에서 충분한 시장 점유율을 확보하여 사용 가치가 있다는 것입니다.
그렇습니다. 현재로서는 거의 불가능합니다.
</script>
). 정말로 원한다면 Brainf * ck 코드를 넣을 수 있습니다. 그런 다음 사용하려는 브라우저에서 선택한 언어에 대한 통역사를 구현하기 만하면됩니다.
<script type="vbscript">
옛날 옛적에 기억 한다 ...
어쩌면 여기에서 대답을 찾을 수 있습니다 : https : //.com/questions/86426/why-require-javascript-rather-than-supporting-a-standard-browser-virtual-machine
참고 : 내 의견으로는 더 낮은 점수에도 불구하고 최근 답변이 더 통찰력이 있습니다.
haXe와 같은 언어를 사용하여 정적으로 입력 된 방식으로 코드를 작성하고 자바 스크립트로 내보낼 수 있습니다. JavaScript는 매우 빨라지고있어 출력 언어로 충분합니다. 정적으로 유형이 지정된 언어를 웹 표준으로 시행하는 것은 거의 불가능합니다. 정적 타이핑을 JavaScript에 도입하려는 시도 는 폭 넓은 논의로 인해 실패했습니다.
기술적으로 가능할까요? Java로 구현한다면 성능이 크게 저하되지 않으면 서 "매우 힘들지만 가능하다"고 말합니다.
실제로 Java에서 정적 유형 DSL을 필기로 작성하고 있으며 런타임 유형 확인을 피하는 유일한 방법은 제네릭을 사용하고 "확인되지 않은"경고를 억제하는 것입니다. 다차원 배열 (클래스 매개 변수는 컴파일 타임에 알아야하므로 본질적으로 유한하지만 다차원 배열은 무한한 유형의 유형을 나타냅니다 ...) 여전히 불행히도 이것을 알아 내려고 노력하고 있습니다-확실합니다. 사용자 정의 클래스와 비슷한 문제가 발생합니다.
문제는 이런 종류의 문제에 계속 걸려 넘어 지지만 잠시 동안 앉아서 좋은 해결책을 제시한다는 것입니다. 따라서 정적 입력 (런타임 유형 검사 없음) 의 성능 이점을 얻으려면 매우 어렵지만 불가능하지는 않다고 말하고 싶습니다. 성능을 빼고는 힘들지만 매우 가능하다고 말합니다.
나는 그것이 오래된 질문이라는 것을 알고 있습니다. 단지 내 경험이 누군가에게 가치가 있다고 생각했습니다.
기술적으로 사용자 에이전트 (브라우저)가 지원하는 모든 스크립팅 언어로 클라이언트 측 스크립트를 작성할 수 있습니다. 실제로 널리 지원되는 언어는 JavaScript / ECMAScript뿐입니다. 이 단계에서 브라우저 제작자들이 새로운 언어를 구현하고 지원하도록 설득하는 것은 성공할 것 같지 않습니다. 따라서 정적으로 유형이 지정된 새로운 클라이언트 측 언어를 사용하려면 새 언어를 JavaScript로 변환하거나 JavaScript에서 해당 언어에 대한 인터프리터를 구현해야합니다.
이미 이와 같은 작업을 수행하는 여러 프로젝트가 있습니다. 예를 들어, 다른 답변 중 하나에서 언급 한 Google Web Toolkit .
현실 세계에서 사용되는 모든 브라우저가 새로운 언어를 지원하도록하기를 희망하지 않습니다. 언어는 jscript로 컴파일해야합니다.
웹의 모든 예제가 jscript로되어 있으므로 언어는 대부분 jscript와 비슷해야합니다.
정적 검사기로 확인하지만 유효한 jscript 인 jscript의 "하위 세트"가있는 범위가 있다고 생각합니다. 예 :
선택적 정적 타이핑은 ECMAScript의 프로젝트 하모니의 일부였습니다. 클라이언트 측 [브라우저 기반] JavaScript에서 발생하는지 여부는 알 수 없습니다. 이 Wikipedia 링크를 참조하십시오 : http://en.wikipedia.org/wiki/ECMAScript#Future_development