Mengapa Javascript digunakan dalam MongoDB dan CouchDB alih-alih bahasa lain seperti Java, C ++?


19

Saya mengajukan pertanyaan ini pada SO tetapi disarankan untuk mencoba di sini. Jadi begini:

Pemahaman saya tentang Javascript sejauh ini adalah bahwa itu adalah bahasa sisi klien yang menangkap peristiwa dan membuat halaman web menjadi dinamis.

Tetapi saat membaca perbandingan antara MongoDB dan CouchDB saya perhatikan bahwa keduanya menggunakan Javascript. Ini membuat saya bertanya-tanya alasan di balik pilihan JavaScript atas bahasa konvensional lainnya.

Saya rasa saya mencoba memahami peran JavaScript dan kelebihannya dibandingkan bahasa lain.

Pembaruan: Saya tidak bertanya tentang bahasa / driver yang didukung oleh dua database. Perbandingan mengatakan:

Baik CouchDB dan MongoDB memanfaatkan Javascript. CouchDB menggunakan Javascript secara luas termasuk dalam membangun pandangan .

MongoDB juga mendukung menjalankan fungsi javascript sewenang-wenang di sisi server dan menggunakan javascript untuk memetakan / mengurangi operasi.

Kurangnya pemahaman saya berkaitan dengan mengapa Javascript digunakan sama sekali untuk pekerjaan backend. Mengapa lebih disukai untuk membangun tampilan di CouchDB, atau untuk menggunakan peta / mengurangi operasi? Mengapa C / C ++ atau Java tidak digunakan? Apa keuntungan menggunakan Javascript untuk pekerjaan back-end seperti itu?


3
Javascript bukan hanya bahasa skrip browser. Beberapa aplikasi lain menanamkan Javascript atau bahasa yang serupa (mis. ActionScript di Flash, bersama dengan Javascript untuk pembuatan skrip sejumlah aplikasi Adobe). Saya tidak yakin, tapi mungkin Javascript tidak pernah dimaksudkan untuk hanya tertanam di browser web. Jadi ... mengapa tidak menanamkannya dalam aplikasi database back-end?
Steve314

Karena saya telah melihat / membaca tentang JS yang berjalan di browser, saya bertanya-tanya bagaimana cara menjalankannya di sisi server tanpa membuka browser?
jeff musk

1
Terima kasih. kamu benar. Mereka menggunakan kompiler SpiderMonkey untuk melakukan bagian JS server-side. en.wikipedia.org/wiki/SpiderMonkey_(JavaScript_engine) @Raynos menunjukkan ini.
jeff musk

6
Untuk itu Anda memerlukan mesin javascript, seperti V8 dan SpiderMonkey . Ada beberapa kegunaan untuk Javascript di luar browser, wikipedia memiliki daftar panjang .
yannis

Hmmm - komentar saya sebelumnya akurat sebagai generalisasi, tetapi bagi saya untuk mencoba lebih spesifik bisa berbahaya - Saya tidak tahu apa-apa tentang MongoDB atau CouchDB. Meskipun tidak ada alasan mengapa aplikasi database back-end. pada server tidak dapat memiliki interpreter Javascript bebas peramban itu sendiri, saya tidak tahu apakah itu caranya ditangani, dan jawaban di bawah ini menunjukkan bahwa mungkin tidak.
Steve314

Jawaban:


15

Kode seluler & Lintas-platform

JavaScript adalah apa yang disebut kode seluler , kode tersebut diangkut dari server (MongoDB dan CouchDB dalam kasus ini) ke klien (browser web) dan dieksekusi pada klien tanpa proses instalasi.

Lingkungan runtime JavaScript (browser web) juga tersedia secara luas di banyak platform. Itu menjadikan JavaScript sebagai bahasa lintas platform yang baik.

JavaScript tidak digunakan sebagai bahasa back-end primer

Backend MongoDB diimplementasikan dalam C ++ dan CouchDB diimplementasikan di Erlang. Jadi JavaScript tidak digunakan sebagai bahasa utama untuk sistem backend untuk tesis.

Dari mongodb.com :

Ditulis dalam C ++

Dari couchdb.apache.com :

CouchDB ditulis dalam bahasa Erlang, bahasa pemrograman fungsional yang kuat yang ideal untuk membangun sistem terdistribusi bersamaan. Erlang memungkinkan desain yang fleksibel yang mudah skalabel dan mudah diperluas.


1
Terima kasih atas tanggapan Anda. "CouchDB menggunakan Javascript secara luas termasuk dalam membangun pandangan". Jadi mengapa klien adalah browser untuk pekerjaan back-end seperti membangun tampilan? Untuk tugas seperti itu, mengapa browser masuk ke dalam gambar.
jeff musk

@ startup007: Lihat bagian pertama dari jawaban saya. Browser web sudah diinstal pada sebagian besar sistem saat ini (misalnya Mac OS X, Windows, Linux, iPhone, Android), sehingga pengguna tidak perlu menginstal apa pun karena web browser dapat mengeksekusi JavaScript (kode seluler).
Jonas

Saya minta maaf karena tidak segera mendapatkannya. Biarkan saya uraikan. Jadi apakah database ini membuka browser di sisi server untuk melakukan beberapa bagian dari tugas, dan kemudian mengembalikan output JSON?
jeff musk

1
Raynos terima kasih! wiki pada spidermonkey mengatakan- "MongoDB, sistem basis data NoSQL lain menggunakan SpiderMonkey untuk eksekusi JavaScript sisi-server." en.wikipedia.org/wiki/SpiderMonkey_(JavaScript_engine) . hmm menarik
jeff musk

4
salah, baik MongoDB maupun CouchdB tidak menggunakan browser sebagai klien. klien basis data adalah pustaka yang digunakan aplikasi (biasanya webapp tetapi bisa berupa aplikasi apa pun) untuk mengelola data yang disimpan dalam basis data. Tidak ada browser di gambar. JavaScript digunakan sebagai bahasa definisi data (superset JSON), dan juga sebagai bahasa prosedur toko, dijalankan di mesin basis data, bukan di klien, dan tentu saja tidak di peramban apa pun.
Javier

7

Karena JavaScript adalah bahasa scripting.

Ini adalah bahasa yang fleksibel dan dinamis yang akrab bagi orang-orang.

Alasan lain yang digunakan JavaScript adalah karena ia sejalan dengan format JSON yang digunakan oleh basis data ini.

Dan akhirnya database ini membutuhkan bahasa yang bisa diartikan. Karena kode untuk kueri ini dikirim melalui jaringan.

Jadi, Anda membutuhkan

  • dinamis
  • fleksibel
  • akrab
  • ditafsirkan

bahasa. Saya tidak berpikir JavaScript adalah pilihan yang buruk di sini. Itu mungkin dipilih karena memiliki sintaks gaya C.

Sekarang mengapa JavaScript dipilih daripada bahasa skrip lain adalah pertanyaan yang bagus.


2
Now why JavaScript was chosen over another scripting language: Saya bisa berspekulasi bahwa itu karena JavaScript adalah bahasa scripting yang paling banyak digunakan, diuji dengan sangat baik melalui penggunaannya di browser, dan ada beberapa implementasi interpreter open source yang sangat baik. CouchDB menggunakan uneval(), petunjuk bahwa mereka telah membangun juru bahasa mereka di atas SpiderMonkey .
yannis

Microsoft memang mendukung VBscript di sisi klien beberapa tahun yang lalu, tetapi syukurlah itu tidak pernah lepas landas ...
Mark K Cowan

6

Kita semua harus makan pai sederhana ketika kita menyadari bahwa JS digunakan untuk menulis:

  • Database

  • Server

  • Sistem operasi

  • dan segudang perpustakaan, kerangka kerja, mesin render, dan bahasa kompilasi,

... karena itu lebih baik.

Serius, tolong ... dengarkan aku. Jangan tembak kurirnya.

Tanyakan kepada Microsoft mengapa mereka membangun Windows 8 dengan JS sebagai warga negara kelas satu. Atau OS seluler baru Mozilla, atau IBM Rivertrail, PhoneGap, ExtJS, atau WebGL.

Apakah ada di antara perusahaan atau proyek ini yang berhasil jika para ahli tidak menemukan sesuatu yang lebih baik dalam implementasi?

Jawabannya adalah ... Mereka melakukannya. Kita telah melakukannya. Jadi temanya di sini harus jelas: ada cara yang lebih baik.

Tapi, lebih baik adalah subjektif: jadi kita harus menelusuri dan membandingkan. Apa yang lebih baik

Dimulai dengan AJAX ... dan belum berhenti.

  1. IO Non-Blok. Ini adalah masalah yang sangat besar dan perlu diketahui. Dalam JS ini adalah pola panggilan balik. Ternyata, menggunakan callback dapat mengaktifkan server non-blocking: Node.js ~ sekitar 8 baris kode. setTimeout () adalah panggilan balik. Pemrosesan asinkron tunggal berulir.

  2. Fleksibilitas. Apa? -Java dan C memiliki kelas dan antarmuka, tetapi disebut berorientasi objek. JavaScript hanya memiliki objek. Tapi itu disebut ... sesuatu yang lain.

    -Memiliki objek-satunya adalah hal yang baik untuk fleksibilitas, karena anggota dan metode sepenuhnya dinamis saat runtime. Warisan-Prototypal tidak menakutkan. Beberapa ahli menggambarkannya sebagai objek-paket. -JS ramah pada kesalahan. -Kode dapat bercampur bersama untuk menghasilkan Komponen-Komposit, tanpa banyak usaha, atau pengetahuan tentang ... 'antarmuka', 'abstraksi', 'pewarisan', 'enkapsulasi', 'polimorfisme'. Hal-hal baik, tetapi seperti Nike, di JS; kamu lakukan saja.

  3. Penerjemahan Data. Dengan JSON, objek dapat ditransfer front-to-back, back-to-front. Tidak ada terjemahan data XML. JSON jelas sederhana.

  4. Kurva belajar rendah. Dimungkinkan untuk memotong dan menempelkan kode yang sangat kompleks, lalu men-debug-nya. Saya mendengar seorang kolega ... 'noobs'. Tapi itu bukan hanya untuk noobs.

- Ternyata ini adalah fitur yang sangat bagus untuk Rapid Prototyping. Dan situs bermunculan di mana-mana yang memanfaatkan desain-dalam-browser ini, dan lebih luas lagi; runtime-prototyping. Periksa JSFiddle dan CodePen, juga MicroJS. GitHub.

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

It is a big deal.

UPDATE: karena JavaScript postingan ini sekarang digunakan secara luas oleh bahasa lain.

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. 

Python dapat melakukan semua itu juga
Jonathan

@ JonathanLeaders - semua? :)
Jack Stone

1
@ jonathan-leader dapatkah Python berjalan di browser web?
Aaron C

1
  • Anda dapat melakukan lebih sedikit dengan lebih banyak - Ada beberapa sekolah dalam hal ini. Sekolah verbosity menginginkan semuanya dijabarkan dengan sangat halus yang dapat dipahami oleh semua orang idiot. JS adalah anggota dari sekolah yang berlawanan di mana Anda dapat melapisi kerumitan sehingga lebih mudah untuk mendapatkan gambaran besar sebelum memahami bagaimana detail yang lebih baik beroperasi. Jauh lebih mudah untuk menulis ke antarmuka dalam JS daripada di sebagian besar bahasa, IMO.

  • Fungsi kelas satu, penutup, warisan prototipal - Ini adalah kombo yang benar-benar fleksibel. Kita bisa meniru kelas jika kita mau. Tapi itu dilihat sebagai usaha yang agak sia-sia oleh mereka yang mengerti JS dengan sangat baik. Kompositing cocok dengan JS jauh lebih baik daripada pewarisan berantai.

  • Memblokir berguna di level yang lebih tinggi. Ya, kamu mendengarku. Ini membantu Anda menjaga fokus pada JS sebagai messenger daripada pekerja keras dan memproses cukup banyak antrian sendiri sementara memungkinkan untuk gangguan dari perilaku tidak sinkron antara panggilan fungsi.

  • Saya akan mengatakan kurva belajar sebenarnya sedikit curam untuk menulis JS yang kuat tetapi begitu Anda berada di sana, itu adalah hoot. Namun, sama sekali tidak sulit untuk mengimplementasikan hal-hal yang sudah dipanggang di JS pada tingkat keterampilan yang lebih rendah.


0

Pertanyaan ini sedikit usang tetapi alasan untuk menggunakan JavaScript vs Java / C ++ adalah karena Java atau C ++ tidak dengan mudah mendukung fragmen kode.

Bahkan jika JavaScript tidak pernah ditemukan, Java atau C ++ akan menjadi pilihan yang baik untuk Fragmen Kode Sumber yang akan dieksekusi di sisi server. Mereka akan memilih bahasa lain atau menciptakan bahasa mereka sendiri. Kembali pada hari produk yang digunakan untuk membuat bahasa mereka sendiri, menentukan aturan produksi mereka sendiri, AST, juru bahasa dll yang khusus dalam domain mereka.

Tetapi dengan JavaScript, sangat mudah untuk membuat Domain Specific Language (DSL) untuk produk Anda dan menanamkan mesin tanpa harus khawatir tentang menciptakan semua infrastruktur terkait non-domain lainnya.


0

Model pemrograman yang digerakkan oleh event

JavaScript dibuat dengan pendekatan komputasi non-shared-memory untuk komputasi. Dalam pengembangan UI ini adalah topi yang benar-benar tua. Tidak ada asumsi bahwa "aplikasi" Anda mengendalikan suatu proses. Tidak ada API proses. Juga tidak ada fungsi utama.

"Aplikasi" Anda adalah kumpulan skrip yang akan dieksekusi ketika hal tertentu terjadi seperti

  • skrip dimuat di browser
  • pemuatan halaman html mencapai titik tertentu
  • pada interaksi pengguna tertentu dengan elemen yang diberikan

Ini sangat cocok dengan potongan kecil logika pemrosesan yang diperlukan untuk transformasi data.

Bahasa Scripting

Mampu mengeksekusi tanpa tahap kompilasi berarti instruksi pemrosesan dapat disimpan dengan mudah. Anda dapat menyimpan skrip dengan mudah sebagai teks dan menyebarkannya tanpa jenis data atau pengetahuan khusus.

Cukup Sederhana, Stabil, dan Mundur kompatibel

Kode yang Anda tulis hari ini tidak jauh berbeda dari 10 tahun yang lalu. Versi cenderung tidak menjadi masalah bagi orang yang menanamkannya.

Pelaku

Ada beberapa mesin open source yang bagus di luar sana dengan banyak pekerjaan yang dimasukkan ke dalamnya. Ini menjalankan sedikit lebih cepat daripada banyak alternatif.

Kurung kurawal

Banyak orang dibatasi dalam kenyamanan mereka dengan berbagai bahasa pemrograman. Mereka hanya tahu bagaimana memprogram Java atau C # misalnya. Jadi mereka berharap untuk belajar JavaScript dengan mudah karena terlihat familiar. Tentu saja itu hanya ilusi. Ketika saya belajar Python, kecepatannya hampir sama dengan belajar JavaScript. Sintaks hanya signifikan secara emosional dengan asumsi itu tidak sepenuhnya tidak jelas.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.