为什么在MongoDB或CouchDB中使用Javascript而不是其他语言,如Java, c++
Why Javascript is used in MongoDB or CouchDB instead of other languages such as Java, C++?
到目前为止,我对Javascript的理解是,它是一种客户端语言,捕获事件并使网页动态。
但是在阅读MongoDB和CouchDB (http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB)之间的比较时,我注意到两者都使用JS。这让我想知道选择JS而不是其他传统语言背后的原因。
我想我正在努力理解JS的作用和它比其他语言的优势。
更新:我不是在问这两个db支持的语言/驱动程序。对比显示:"CouchDB和MongoDB都使用Javascript。CouchDB广泛使用Javascript,包括构建视图....MongoDB还支持在服务器端运行任意javascript函数,并使用javascript进行map/reduce操作。"
我缺乏理解为什么JS被用于后端工作。为什么它更适合在CouchDB中构建视图,或者使用map/reduce操作?为什么不使用C/c++或Java ?使用JS进行后端工作有什么优势?
答案:总结https://softwareengineering.stackexchange.com/q/121411/41398上的答案。MongoDB和其他NoSQL数据库正在使用SpiderMonkey来执行服务器端JS函数。这是维基百科对spidermonkey的链接- http://en.wikipedia.org/wiki/SpiderMonkey_(JavaScript_engine)
PS:如果有人想要否决这个问题,请发表评论来解释原因。
许多语言的问题是缺乏沙箱(能够在地图函数中执行'rm -rf/'被认为是一个问题),javascript,因为它的浏览器根源,有一个。Javascript是CouchDB的默认视图服务器,但是协议是文档化的,并且存在其他语言绑定(Ruby, Python等)。它还附带了一个本地Erlang选项。
在后端使用与前端相同的语言也是一种优雅,但CouchDB不会强迫您选择语言,它只是附带了一个可靠的Javascript视图引擎。
关于视图服务器协议的详细信息,以及到备选实现的链接,在这里:
http://wiki.apache.org/couchdb/View_server
因为这是他们选择的语言?
- 函数可以传递。
- 存在开放的、可嵌入的实现。
- 无处不在。
- 使用JSONy数据模型
对于"实时"评估(IMO)来说,没有很多好的选项:Lua, Scheme-y的东西和JS可能是C程序的最佳选择。
如果它是用Java编写的,则有一个默认的"内置"脚本层。
javascript在couchdb中仅用于构建视图和map reduce, couchdb核心使用erlang编写,javascript仅在性能不那么重要时使用(实际上您可以使用earlang编写视图并获得更好的性能)…为什么他们要用javascript?
1) couchdb使用json作为数据共享格式…json真的很轻,非常快速和可读…它使用javascript。这是最重要的一点。对于json来说javascript
显然是更好的语言2)javascript在web编程界被广泛采用,couchdb的主要目标是…如果你用ruby,python,php,java编程,对于web开发必须有一些javascript的知识
3)如果你看一下你的视图代码,它应该类似于用java或c++编写的代码,sintax来自c…创建视图不需要OOP或接口....
这是!…
这是一个好问题……为什么会有人投你反对票?
只是为了澄清,JavaScript是MongoDB支持的几种语言之一。支持的其他语言包括:
- C c++ Erlang
- Haskell
- Java
- 。. NET (c# f#, PowerShell等) Perl PHP Python Ruby Scala
和一大堆。
您可以查看此列表,并通过以下命令查找哪些客户端可以从哪里获得:
http://www.mongodb.org/display/DOCS/Drivers 我希望这有助于阐明你最初的问题。这是对为什么javascript被如此广泛采用的一个很好的评价。: http://drdobbs.com/web-development/231901465
MongoDB使用C/c++编写。从JS中,它们采用与JSON相同的模型来存储DB条目。
我想正确的问题应该是"为什么不呢?"
Javascript是一门功能强大的语言。但我想选择它的一个重要因素是每个人都知道(至少部分)它。当你开发一个系统并希望它成功时,你不希望使用"复杂"的语言来执行map/reduce这样的简单操作。看看MongoDb的用例,大多数都是与web相关的。可悲的事实是,"web开发人员"通常不知道或不想用c++或Java编写代码,他们知道PHP和javascript。那么,为什么有人想要使用这些邪恶的东西(我在这里讽刺),当javascript工作?
Facebook是用PHP编写的(然后由专有代码转换器转换为c++)。这不是因为它是最好的技术选择,而是因为:
- 这太简单了
- 人人都知道
- 它允许快速开发周期
这些都是商业原因。
(现在,为了你自己的满意,你可以为我用另一个问题回答你的问题投反对票。)
- Java 和其他语言在生成子序列时的输出差异
- 与其他语言相比的 Ruby 和指针
- 其他语言的Qt键盘输入
- 我需要知道什么才能开始用c++/其他语言编程合成器
- 动态C++与其他语言的比较 - 在不知道类型的情况下无法在对象上调用方法
- 用java编写源代码,并将其编译为其他语言的各种可执行文件?多重编译
- 如何使C枚举类型可用于其他语言
- 使用大多数Java代码制作可执行文件,但可能添加了其他语言
- 如何用其他语言编写带有绑定的Qt插件系统
- 库在C/C++和其他语言中重现Java原语hashCode逻辑
- WebAPI2 Async .是与所有其他语言兼容的
- 从 bash 拆分的流是否可以转置为其他语言
- 用PHP或任何其他语言上传巨大的文件
- 如何在Ruby和其他语言之间共享文本文件(或互斥/信号量)
- 如何通过C++(或建议其他语言)在网页上"do stuff"
- 在GO中使库可以从其他语言中使用
- 这在C++、PHP和其他语言中的使用
- 为什么C/C++有不同于C#和Java等其他语言的头文件
- C/ c++(其他语言?)条件提前返回良好的代码实践
- 如何制作一个古怪的数学计算器?(最好使用c++,但其他语言也可以)