Java, C ++와 같은 다른 언어 대신 MongoDB 및 CouchDB에서 Javascript가 사용되는 이유는 무엇입니까?


19

나는 SO에 대해이 질문을했지만 여기에서 시도해 볼 것을 제안했다. 그래서 여기에 간다 :

Javascript에 대한 나의 이해는 이벤트를 캡처하고 웹 페이지를 동적으로 만드는 클라이언트 측 언어라는 것입니다.

그러나 MongoDB와 CouchDB비교 를 읽었을 때 둘 다 Javascript를 사용하고 있음을 알았습니다. 이로 인해 다른 일반 언어보다 JavaScript를 선택한 이유가 궁금합니다.

JavaScript의 역할과 다른 언어에 비해 그 이점을 이해하려고합니다.

업데이트 : 두 데이터베이스에서 지원하는 언어 / 드라이버에 대해서는 묻지 않습니다. 비교는 말합니다 :

CouchDB와 MongoDB는 모두 자바 스크립트를 사용합니다. CouchDB는 뷰 작성을 포함하여 Javascript를 광범위하게 사용 합니다 .

MongoDB는 또한 서버 측에서 임의의 자바 스크립트 함수 실행을 지원하고 맵 / 축소 작업에 자바 스크립트를 사용합니다.

이해 부족은 왜 백엔드 작업에 Javascript가 사용되는지에 관한 것입니다. CouchDB에서 뷰를 작성하거나 맵 / 리 듀스 작업을 사용하는 것이 왜 선호됩니까? C / C ++ 또는 Java가 사용되지 않은 이유는 무엇입니까? 이러한 백엔드 작업에 Javascript를 사용하면 어떤 이점이 있습니까?


3
자바 스크립트는 브라우저 스크립팅 언어 만이 아닙니다. 다른 일부 응용 프로그램에는 Javascript 또는 유사한 언어가 포함되어 있습니다 (예 : Flash의 ActionScript 및 여러 Adobe 응용 프로그램을 스크립팅하기위한 Javascript). 확실하지는 않지만 Javascript는 웹 브라우저 에만 내장 되지 않았습니다 . 그렇다면 ... 백엔드 데이터베이스 애플리케이션에 포함시키지 않겠습니까?
Steve314

브라우저에서 실행되는 JS에 대해 보거나 읽었으므로 브라우저를 열지 않고 서버 측에서 어떻게 실행되는지 궁금합니다.
제프 머스크

1
감사. 네 말이 맞아 그들은 서버 측 JS 부분을 수행하기 위해 SpiderMonkey 컴파일러를 사용하고 있습니다. en.wikipedia.org/wiki/SpiderMonkey_(JavaScript_engine) @Raynos가 지적했습니다.
제프 머스크

6
이를 위해서는 V8SpiderMonkey 와 같은 자바 스크립트 엔진이 필요합니다 . 브라우저 외부에서 Javascript를 꽤 많이 사용하고 있으며, wikipedia에는 긴 목록이 있습니다.
yannis

흠-내 이전 의견은 일반화로 정확하지만 좀 더 구체적으로 노력하면 위험 할 수 있습니다-MongoDB 또는 CouchDB에 대해 아무것도 모릅니다. 백엔드 데이터베이스 앱이 필요한 이유는 없습니다. 서버에서 자체 브라우저 독립적 인 Javascript 인터프리터를 가질 수 없다면, 그것이 어떻게 처리되는지 알 수 없으며 아래의 대답은 아마 그렇지 않을 것이라고 제안합니다.
Steve314

답변:


15

모바일 코드 및 크로스 플랫폼

JavaScript는 mobile code 라고 하며, 코드는 서버 (이 경우에는 MongoDB 및 CouchDB)에서 클라이언트 (웹 브라우저)로 전송되고 설치 프로세스없이 클라이언트에서 실행됩니다.

JavaScript 런타임 환경 (웹 브라우저)도 많은 플랫폼에서 널리 사용 가능합니다. 이는 JavaScript를 플랫폼 간 좋은 언어로 만듭니다.

JavaScript는 기본 백엔드 언어로 사용되지 않습니다

MongoDB 백엔드는 C ++로 구현되고 CouchDB는 Erlang에서 구현됩니다. 따라서 JavaScript는 이러한 시스템의 백엔드에 대한 기본 언어로 사용되지 않습니다.

에서 mongodb.com :

C ++로 작성

에서 couchdb.apache.com :

CouchDB는 동시 분산 시스템 구축에 이상적인 강력한 기능적 프로그래밍 언어 인 Erlang으로 작성되었습니다. Erlang은 쉽게 확장 가능하고 쉽게 확장 할 수있는 유연한 디자인을 허용합니다.


1
당신의 응답을 주셔서 감사합니다. "CouchDB는 뷰 작성을 포함하여 Javascript를 광범위하게 사용합니다". 그렇다면 클라이언트가 뷰 작성과 같은 백엔드 작업을위한 브라우저 인 이유는 무엇입니까? 그러한 작업을 위해 브라우저가 왜 그림에 등장합니까?
제프 머스크

@ startup007 : 내 대답의 첫 부분을 참조하십시오. 웹 브라우저는 오늘날 대부분의 시스템 (예 : Mac OS X, Windows, Linux, iPhone, Android)에 이미 설치되어 있으므로 웹 브라우저에서 JavaScript (모바일 코드)를 실행할 수 있으므로 사용자가 아무것도 설치할 필요가 없습니다.
Jonas

즉시받지 못해서 죄송합니다. 자세히 설명하겠습니다. 따라서이 데이터베이스는 서버 쪽에서 브라우저를 열어 작업의 일부를 수행 한 다음 JSON 출력을 반환합니까?
제프 머스크

1
감사합니다 Raynos! spidermonkey의 위키에 따르면 "MongoDB, 또 다른 NoSQL 데이터베이스 시스템은 서버 측 JavaScript 실행을 위해 SpiderMonkey를 사용합니다." en.wikipedia.org/wiki/SpiderMonkey_(JavaScript_engine) . 흠 흥미로운
제프 머스크 1

4
MongoDB 나 CouchdB 모두 브라우저를 클라이언트로 사용하지 않습니다. 데이터베이스 클라이언트는 앱 (일반적으로 웹앱이지만 모든 종류의 애플리케이션 일 수 있음)이 데이터베이스에 저장된 데이터를 관리하는 데 사용하는 라이브러리입니다. 사진에 브라우저가 없습니다. JavaScript는 데이터 정의 언어 (JSON의 상위 집합)로 사용되며 저장소 프로 시저 언어로도 사용되며 클라이언트가 아닌 데이터베이스 엔진에서 실행되며 확실히 브라우저가 아닙니다.
Javier

7

JavaScript는 스크립팅 언어이기 때문입니다.

사람들에게 친숙하고 유연하고 역동적 인 언어입니다.

JavaScript가 사용되는 다른 이유는 이러한 데이터베이스가 사용하는 JSON 형식과 잘 일치하기 때문입니다.

마지막으로 이러한 데이터베이스에는 해석 할 수있는 언어가 필요합니다. 이러한 쿼리에 대한 코드는 네트워크를 통해 전송되기 때문입니다.

그래서 당신은

  • 동적
  • 융통성 있는
  • 익숙한
  • 해석

언어. JavaScript가 나쁜 선택이라고 생각하지 않습니다. 아마도 C 스타일 구문을 사용하기 위해 선택되었을 것입니다.

이제 다른 스크립팅 언어 보다 JavaScript를 선택한 이유 는 좋은 질문입니다.


2
Now why JavaScript was chosen over another scripting language: JavaScript가 가장 널리 사용되는 스크립팅 언어이고 브라우저에서의 사용을 통해 매우 잘 테스트 되었기 때문에 훌륭한 오픈 소스 인터프리터 구현이 상당히 많기 때문이라고 추측 할 수 있습니다. CouchDB는 SpiderMonkeyuneval() 위에 통역사를 구축했다는 힌트를 사용합니다 .
yannis

마이크로 소프트는 수년 전 클라이언트 측에서 VBscript를 지원했지만 고맙게도 그럴 수 없었습니다 ...
Mark K Cowan

6

JS가 다음과 같이 쓰는 데 사용된다는 것을 깨달으면 모두 겸손한 파이를 먹어야합니다.

  • 데이터베이스

  • 서버

  • 운영 체제

  • 수많은 라이브러리, 프레임 워크, 렌더링 엔진 및 컴파일 언어

... 더 낫기 때문에.

진심으로, 제발 ... 들려줘 메신저를 쏘지 마십시오.

왜 일류 시민으로서 JS로 Windows 8을 구축하고 있는지 Microsoft에 문의하십시오. 또는 Mozilla의 새로운 모바일 OS 또는 IBM의 Rivertrail, PhoneGap, ExtJS 또는 WebGL.

전문가가 구현에서 더 나은 것을 찾지 못하면 이러한 회사 또는 프로젝트 중 성공한 것이 있습니까?

대답은 ... 우리는했다. 더 나은 방법이 있습니다.

그러나 주관적인 것이 좋습니다. 따라서 드릴 다운하고 비교해야합니다. 더 좋은게 뭐야?

AJAX로 시작했지만 중지되지 않았습니다.

  1. 비 차단 IO. 이것은 정말 큰 일이며 알만한 가치가 있습니다. JS에서 이것은 콜백 패턴입니다. 콜백을 사용하면 비 블로킹 서버를 사용할 수 있습니다. Node.js ~ 약 8 줄의 코드. setTimeout ()은 콜백입니다. 단일 스레드 비동기 처리

  2. 적응성. 뭐? -Java와 C에는 클래스와 인터페이스가 있지만 객체 지향이라고합니다. JavaScript에는 객체 만 있습니다. 그러나 그것은 다른 것입니다.

    -멤버와 메소드가 런타임에 완전히 동적이기 때문에 오브젝트 만있는 것이 유연성을 위해 좋은 것입니다. -프로토 타입 상속은 무섭지 않습니다. 일부 전문가들은이를 객체 팩 팩으로 설명합니다. -JS는 오류에 친숙합니다. -코드는 많은 노력이나 지식없이 '인터페이스', '추상화', '상속성', '캡슐화', '다형성'에 대한 지식없이 복합 컴포넌트를 만들 수 있습니다. JS의 Nike와 같은 좋은 점이 있습니다. 그냥하세요

  3. 데이터 번역. JSON을 사용하면 객체를 앞뒤로, 앞뒤로 전송할 수 있습니다. XML 데이터 변환이 없습니다. JSON은 분명히 간단합니다.

  4. 낮은 학습 곡선. 매우 복잡한 코드를 잘라 붙여 넣은 다음 단계적으로 디버깅 할 수 있습니다. 동료가 '누구'라고 들었습니다. 그러나 그것은 멍청한 자들만을위한 것이 아닙니다.

-이것은 래피드 프로토 타이핑에 정말 좋은 기능이라는 것이 밝혀졌습니다. 그리고이 브라우저 내 디자인을 활용하는 사이트가 더 광범위하게 나타납니다. 런타임 프로토 타이핑. JSFiddle 및 CodePen, MicroJS도 확인하십시오. GitHub.

Like Transformers, with JS, there is more than meets the eye.  

It is a big deal.

업데이트 :이 게시물 JavaScript는 이제 다른 언어에서 광범위하게 사용됩니다.

In Java - check out Nashorn.
In C++ - check out Emscripten, or ASM.
And there are many more.

The big surprise since the original writing of this answer was JS cross-compilation.

It turns out that many languages can be compiled to JS.

And the community is encouraging that... CoffeeScript, Dart, etc.    

This is not my specific area of expertise, but it is going on in big ways.

Simply put, we just don't know how the dynamism of JS is going to hash out yet. 

파이썬
Jonathan

@JonathanLeaders-모두? :)
Jack Stone

1
@ jonathan-leaders 파이썬은 웹 브라우저에서 실행할 수 있습니까?
Aaron C

1
  • 더 적은 비용으로 더 많은 일을 할 수 있습니다-여기에는 몇 개의 학교가 있습니다. 자세한 학교는 모든 바보가 이해할 수있는 모든 것을 아주 세밀하게 설명하기를 원합니다. JS는 복잡한 학교의 일원으로서 복잡한 세부 사항을 적용하여 세부 사항이 어떻게 작동하는지 이해하기 전에 큰 그림을 더 쉽게 얻을 수 있습니다. 대부분의 언어 인 IMO보다 JS의 인터페이스에 쓰는 것이 훨씬 쉽습니다.

  • 일급 함수, 클로저, 프로토 타입 상속-정말, 정말 유연한 콤보입니다. 원한다면 수업을 흉내낼 수 있습니다. 그러나 그것은 JS를 정말로 잘 이해하는 사람들에 의해 다소 무의미한 노력으로 보입니다. 합성은 체인 상속보다 JS에 훨씬 더 적합합니다.

  • 차단은 높은 수준에서 유용합니다. 네, 들었어요 이 기능을 사용하면 JS 대신 주력자가 아닌 메신저로 초점을 유지하고 함수 호출 사이의 비동기 동작으로 인한 중단을 허용하면서 대기열 자체를 거의 처리 할 수 ​​있습니다.

  • 나는 학습 곡선이 실제로 강력한 JS를 작성하는 데 약간 가파르다 고 말하지만 일단 거기에 오면 헛소리입니다. 그러나 JS에서 사전에 구운 것들을 낮은 기술 수준에서 구현하는 것은 결코 어렵지 않습니다.


0

이 질문은 조금 오래되었지만 JavaScript / Java / C ++를 사용하는 이유는 Java 또는 C ++이 쉽게 코드 조각을 지원하지 않기 때문입니다.

JavaScript가 발명되지 않았더라도 서버 측에서 실행될 소스 코드 조각에는 Java 나 C ++이 적합했습니다. 그들은 다른 언어를 선택하거나 자신의 언어를 발명했습니다. 예전에는 제품이 자체 언어를 작성하고 도메인에 특화된 자체 생산 규칙, AST, 통역사 등을 정의하는 데 사용되었습니다.

그러나 JavaScript를 사용하면 제품에 대한 DSL (Domain Specific Language)을 생성하고 도메인 이외의 관련 인프라를 모두 만들지 않아도 엔진을 포함시키는 것이 매우 쉽습니다.


0

이벤트 중심 프로그래밍 모델

자바 스크립트는 컴퓨팅에 대한 이벤트 중심 비공유 메모리 접근 방식으로 만들어졌습니다. UI 개발에서 이것은 완전히 오래된 모자입니다. "응용 프로그램"이 프로세스를 제어하고 있다는 가정은 없습니다. 프로세스 API가 없습니다. 주요 기능도 없습니다.

"응용 프로그램"은 다음과 같은 특정 상황이 발생할 때 실행될 스크립트 모음입니다.

  • 스크립트가 브라우저에로드됩니다
  • html 페이지 로딩이 특정 지점에 도달
  • 주어진 요소와 특정 사용자 상호 작용

이는 데이터 변환에 필요한 작은 크기의 처리 논리와 매우 잘 일치합니다.

스크립팅 언어

컴파일 단계없이 실행할 수 있다는 것은 처리 명령을 쉽게 저장할 수 있음을 의미합니다. 스크립트를 텍스트로 쉽게 저장하고 특별한 데이터 유형이나 지식없이 전달할 수 있습니다.

매우 간단하고 안정적이며 이전 버전과 호환됩니다

오늘 작성하는 코드는 10 년 전과 크게 다르지 않습니다. 버전 관리는 버전을 포함시키는 사람들에게는 큰 문제가되지 않습니다.

수행자

거기에는 엄청난 양의 오픈 소스 엔진이 있습니다. 많은 대안보다 훨씬 빠르게 실행됩니다.

중괄호

많은 사람들이 다양한 프로그래밍 언어로 편안하게 제한되어 있습니다. 예를 들어 Java 또는 C #을 프로그래밍하는 방법 만 알고 있습니다. 따라서 친숙해 보이기 때문에 JavaScript를 쉽게 배울 수 있습니다. 물론 환상입니다. 파이썬을 배웠을 때 JavaScript를 배우는 것과 거의 같은 속도였습니다. 구문은 완전히 모호하지 않다고 가정 할 때 감정적으로 중요합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.