웹 프로그래밍에서 Javascript를 사용하는 역사적 근거는 무엇입니까?


9

나는 우리가 파이썬을 많이 사용하는 과학적 생물학 배경에서 왔습니다.

이제 웹 개발을 시작하기 시작하면서 웹에서 JavaScript가 주요 클라이언트 측 언어 인 이유가 무엇인지 궁금하게 생각했습니다.

JavaScript의 우세는 역사적 사고 또는 다른 것입니까? 또한 파이썬을 클라이언트 측 스크립팅에 통합하는 데 장애물이 있는지 궁금합니다.


meta.programmers.stackexchange.com/questions/363/…에 근거하여 중재자의주의가 필요합니까 ?
Rein Henrichs

@Rein-이것이 주제가 vote to close아닌 것 같은 느낌이 든다면 다른 사람들이 같은 방식으로 느끼면 그들 또는 중재자가 당신의 리드를 따를 것입니다.
jmort253

@ jmort253 (아마도 메타로 이동해야합니다) 연결된 스레드에 합의가 없었으며 나는 모호합니다. :(
Rein Henrichs

@Rein-의견에 대한 사고 과정은 괜찮습니다 (이유가 무엇인지에 대한 푯말 역할을하기 때문에 커뮤니티는 게시물에 대해 조치를 취하기로 결정했습니다. 동의가 없으면 최선의 방법으로 행동하십시오. :) 개인적으로,이 역사적 정보는 다른 사람들이 JavaScript의 미래를 언어로 이해하고이 언어를 이해하고 채택하는 것이 왜 중요한지를 이해하는 데 도움이 될 것이라고 생각합니다.
jmort253

답변:


16

JavaScript는 대중적인 웹 브라우저에서 사용할 수있는 최초의 스크립팅 언어이므로 거의 보편적으로 구현되었습니다. 널리 사용되는 모든 브라우저에서 사용할 수있는 유일한 프로그래밍 언어이기 때문에 클라이언트 측 프로그래밍 언어가 우세한 것 외에는 선택의 여지가 없었습니다.

Internet Explorer는 플러그 가능한 스크립팅 엔진 (VBScript 및 JScript와 함께 제공)을 허용하는 방식으로 JavaScript를 구현했습니다. PerlScript 또는 PythonScript로 코드를 작성하는 것을 선호한다면 (가능하지만) 모든 클라이언트에 해당 스크립트 언어를 설치해야했으며 IE를 사용해야했습니다. 내부 프로젝트를 위해이 작업을 수행 할 수는 있지만 인터넷에서 작동하는 방법은 없습니다.


내가 흥미로 웠던 것은 Python-to-javascript 컴파일러, 예를 들어 Pajamas pyjs.org 를 작성하는 프로젝트 였습니다 .
rd108

"Pyjamas는 웹 및 데스크톱 모두를위한 RIA (Rich Internet Application) 개발 플랫폼입니다. 여기에는 Python-to-Javascript 컴파일러, AJAX 프레임 워크 및 위젯 세트 API가 포함되어 있습니다. Pajamas는 Google Web Toolkit의 Python 포트로 시작했습니다. Java-to-Javascript 컴파일러입니다. FAQ 및 기능 목록을 읽으십시오. "
rd108

수많은 자바 스크립트 컴파일러가 있습니다. CoffeeScript, TypeScript, ClojureScript, LispyScript 등
Florian Margaine

7

JavaScript는 원래 Brendan Eich가 작성했습니다. 1995 년 9 월 Netscape Navigator 2.0 베타 릴리스와 함께 LiveScript로 제공되었지만 1995 년 12 월 Sun Microsystems와의 공동 발표로 JavaScript로 이름이 바뀌 었습니다. JavaScript는 Ecma International에 제출 된 후 (1996 년) 표준화 된 ECMAScript

현재 시장 지배력은 주로 역사적 관성 때문입니다.

출처 : http://en.wikipedia.org/wiki/JavaScript#History


2

확실하지 않지만 경량의 클라이언트 측 스크립팅 언어입니다. 나는 그 기원이 초기 Netscape 브라우저에 있다고 생각합니다 (잘못 될 수도 있지만). 실제로, 이름은 java와 관련이 없지만 "java"라는 단어를 포함하도록 릴리스 전에 변경되었습니다. 당시 인기를 얻는 것은 빠른 전술이었습니다.


1

나는 그것이 역사와 관련이 있다고 확신합니다.

그러나 나는 또한 웹 사이트가 내 브라우저에서 파이썬과 같은 완전한 기능을 갖춘 프로그래밍 언어를 실행할 수 있기를 원하지 않습니다. 보안상의 영향으로 인해 그러한 사이트에서 멀어 질 수 있습니다 (또는 브라우저 샌드 박스가 기밀 상태인지 매우 확신해야합니다).


말이되지 않습니다. 프로그래밍 언어에 사용할 수있는 API를 결정하는 것은 환경에 달려 있습니다. 물론, 파이썬이 브라우저로 제공된다면, 자바 스크립트가 현재 DOM과 같은 API에 액세스 할 수 있기 때문에 아무런 피해를 줄 방법이 없습니다.
Andrea

@Andrea-언어는 구문 및 의미론만큼 표준 라이브러리라고 주장 할 수 있습니다. Javascript에는 파일 I / O를위한 표준 라이브러리가 없으며 보안상의 이유로 의도적 인 것입니다. 파이썬에는 파일 I / O 및 보안 문제로 간주 될 수있는 다른 많은 것들을위한 표준 라이브러리가 있습니다. 이것을 금지하고 아마도 더 이상 파이썬을 다루지 않을 것입니다. 오래 전, 파이썬에는 샌드 박스가있었습니다. 1.5 버전 쯤에 있었던 것을 기억합니다.하지만 충분히 사용되지 않았고 밀폐성이 없었기 때문에 IIRC가 삭제되었습니다.
Steve314

Javascript의 I / O 표준 라이브러리를 작성 중입니다. 물론 이들은 브라우저에서 사용할 수 없습니다. 파이썬이 브라우저에서 구현되면 안전하지 않은 라이브러리를 사용할 수 없다고 말하고 있습니다. 그리고 아마도 웹 사이트에서 사용하기위한 것이 아니기 때문에 놓치지 않을 것입니다.
Andrea

-2

"JavaScript의 우세가 역사적 사고 나 다른 것입니까?"

개인적으로 JS의 성공은 많은 사람들이 겪었던 것만큼이나 디자인의 문제이며, 단지 사고가 아니라 또는 놀이터의 첫 번째 아이라는 사실 때문에 인정하기 위해 계속 혐오 할 것입니다.

Brendan Eich는 Java 개발자에게 호소하기 위해 이름을 지었고 Java의 C 기반 구문과 같은 구문을 사용하여 Java 개발자에게 호소하기도했지만, www의 역사에서 가장 실제적인 언어 역학에 대한 Scheme에서 도출 한 가장 나쁜 결정 중 하나를 결정했습니다. 영감은 Java 개발자가 전혀 좋아하지 않는 것 같습니다.

JavaScript는 OOP에 대해 매우 유연하고 세분화 된 프로토 타입 상속을 사용하며, 클로저가 있으며, 유형은 100 % 동적이며, 함수 자체는 일류이므로 다른 객체 또는 데이터 유형처럼 전달되어 다른 컨텍스트에서 재사용 될 수 있습니다. 마치 처음부터 실제 객체 멤버로 선언 된 것처럼 객체에 즉시 적용됩니다. 많은 독점 가비지를 정규화하거나 고도의 비선형 UI 문제를 처리해야하는 이벤트 중심 아키텍처에 사용되는 것은 실제로 비명입니다.

웹의 시작이 끝날 무렵, Netscape와 IE가 의도적으로 다르게 작업을 시도한 브라우저와 10 년 이상의 브라우저 작업을 통해 실제 브라우저 전쟁을 통해 브라우저를 정규화하는 작업에 진지한 언어는 유일하게 사용 된 언어입니다. MS가 게으르고 자신이 바보 같은 반 경쟁 관행에 빠지기 때문에 IE가 방금 다른 일을했던 휴전은 브라우저 정체를 초래했으며, 이제 브라우저가 HTML과 관련하여 동일한 일반 사양에 동의하기 시작하는 세상, IE와 CSS와 DOM API는 구글과 모질라가 IE의 성능 수치를 보이게 만드는 JIT 컴파일러를 파기했기 때문에 최신 개발보다 단지 2-3 년 뒤에 불과한 IE보다 단지 2 년이 늦었다.IE9는 실제로 DOM API 지원을 2000 년대 Netscape가 지원했던 수준으로 심각하게 업그레이드 한 최초의 제품입니다.

JS는 Java 애플릿과 Adobe의 ActionScript for Flash 형식으로 경쟁했습니다. 그것은 심각한 경쟁자 전선에 관한 것입니다. MS는 VB를 푸시하려고했지만 ... VB 때문에 비참하게 실패했습니다. 또한 독점적입니다. 실제로 대부분의 사람들이 알고있는 것보다 훨씬 많은 플래시 사이트가있었습니다. 검색 엔진으로는 바보 같은 것을 찾을 수 없었습니다. 애플릿은 그들 자신의 일을했고 그것은 추악했습니다. 진짜 못 생겼어 JS는 일치하는 사양을 설정하는 사람에 동의하지 않은 사람들이 여러 브라우저의 컨텍스트 내에서 작업하는 문제를 실제로 해결 한 유일한 언어였습니다.

최근 몇 년 동안 JS는 훨씬 더 광범위한 응용 영역으로 폭발 해 왔습니다. 다른 웹 기술과 결합하여 기본적으로 모바일 프론트에서 다른 모든 솔루션을 넘어 뜨리도록 설계되었습니다. + 하나의 앱을 작성하고 모든 앱에서 작동하게하려면 웹 기술이 실제로 현실적인 선택이기 때문에 실제로는 현실적인 선택입니다.

그래서 아니, 그리고 나는 큰 팬이지만, 브라우저 외부에서 폭발적으로 인기를 얻는 것 이상으로 클라이언트 측의 다른 모든 경쟁자를 우연히 혼란스럽게 생각하지 않는다고 생각합니다. JS 이전에는 주로 학문적이지 않은 체계와 유사한 언어가 많지 않았습니다. JS에 몇 가지 강력한 장점이 있으며 클라이언트 측의 고유 한 요구 사항으로 인해 이러한 이점이 천천히 명백해졌습니다.


JS가 Scheme과 어떻게 관련되는지 말하지 않고 Scheme을 두 번 언급했습니다. 확실히 JS에 매크로, S- 표현식, 꼬리 재귀, 연속체 또는 Scheme의 다른 특징이 있다고 생각하지 않습니다.
Gabe

@ 가베. 네 번째 텍스트 블록을 확인하십시오. 클로저, 다이내믹 타이핑 및 퍼스트 클래스 기능은 매우 중요합니다. JS가 c와 유사한 구문을 사용한다는 사실은 스키마 매크로의 사용을 허용하지 않습니다. 이 기능은 기능별 구성표가 아니지만 확실히 영향을받습니다.
mike30

폐쇄와 동적 타이핑은 언어 체계와 비슷합니까? 이것이 C #이 Scheme과 유사하다는 것을 의미합니까? 루비, 파이썬, 펄은 어떻습니까? 왜 Lisp 나 다른 유사한 언어가 아닌 Scheme입니까?
Gabe

@Gabe 나는 Scheme 전문가가 아니지만 일반적인 Wikipedia-ing에서 어휘 범위, 일류 함수 및 클로저의 결합은 JS가 Java보다 Scheme에 훨씬 더 가깝게 만드는 세 가지라고 말합니다. 그렇지 않으면 나는 단지 그것에 Brendan Eich의 말을 취하고 있었고, 적당한 일류 기능이 주요한 두드러졌다라고 생각했다.
Erik Reppen

좋아, JS에는 클로저 (일급 함수와 어휘 범위를 암시한다고 생각)와 Scheme과 같은 동적 타이핑이 있습니다. C #에는 클로저, 동적 타이핑 및 제한된 형태의 S- 표현식이 있으므로 C #이 JS보다 훨씬 더 체계적인 것입니까?
Gabe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.