Zadałem to pytanie na SO, ale zaproponowano mi wypróbowanie tutaj. A więc oto:
Do tej pory rozumiałem Javascript, że jest to język po stronie klienta, który rejestruje zdarzenia i sprawia, że strona internetowa jest dynamiczna.
Ale po przeczytaniu porównania między MongoDB i CouchDB zauważyłem, że oba używają Javascript. To sprawia, że zastanawiam się nad wyborem JavaScript w porównaniu do innych konwencjonalnych języków.
Myślę, że staram się zrozumieć rolę JavaScript i jego zalet w stosunku do innych języków.
Aktualizacja: Nie pytam o języki / sterowniki obsługiwane przez dwie bazy danych. Porównanie mówi:
Zarówno CouchDB, jak i MongoDB korzystają z Javascript. CouchDB wykorzystuje JavaScript w szerokim zakresie, w tym w tworzeniu widoków .
MongoDB obsługuje także uruchamianie dowolnych funkcji javascript po stronie serwera i używa javascript do operacji mapowania / zmniejszania.
Mój brak zrozumienia dotyczy tego, dlaczego JavaScript jest w ogóle używany do pracy z backendem. Dlaczego jest to preferowane do budowania widoków w CouchDB lub do używania operacji mapowania / zmniejszania? Dlaczego nie używano C / C ++ lub Java? Jakie są zalety korzystania z Javascript do takiej pracy?
źródło
Odpowiedzi:
Kod mobilny i wieloplatformowy
JavaScript to tak zwany kod mobilny , kod jest przenoszony z serwera (w tym przypadku MongoDB i CouchDB) do klienta (przeglądarki internetowej) i wykonywany na kliencie bez procesu instalacji.
Środowiska wykonawcze JavaScript (przeglądarki internetowe) są również szeroko dostępne na wielu platformach. Dzięki temu JavaScript jest dobrym językiem dla wielu platform .
JavaScript nie jest używany jako podstawowy język zaplecza
Backend MongoDB jest zaimplementowany w C ++, a CouchDB jest zaimplementowany w Erlang. Tak więc JavaScript nie jest używany jako podstawowy język backendu dla tych systemów.
Od mongodb.com :
Z couchdb.apache.com :
źródło
Ponieważ JavaScript jest językiem skryptowym.
Jest to elastyczny i dynamiczny język, który jest znany ludziom.
Innym powodem użycia JavaScript jest to, że dobrze dopasowuje się do formatu JSON używanego przez te bazy danych.
Wreszcie te bazy danych potrzebują języka, który można interpretować. Ponieważ kod tych zapytań jest wysyłany przez sieć.
Więc potrzebujesz
język. Nie sądzę, że JavaScript jest tutaj złym wyborem. Jest prawdopodobnie wybrany ze względu na składnię w stylu C.
Pytanie, dlaczego wybrano JavaScript zamiast innego języka skryptowego , jest dobrym pytaniem.
źródło
Now why JavaScript was chosen over another scripting language
: Mogę spekulować, że to dlatego, że JavaScript jest najczęściej używanym językiem skryptowym, wyjątkowo dobrze przetestowanym pod kątem jego użycia w przeglądarkach, i jest całkiem sporo doskonałych implementacji interpretera open source. Wykorzystuje CouchDBuneval()
, wskazówkę, że zbudowali interpreter na SpiderMonkey .Wszyscy będziemy musieli jeść pokorne ciasto, gdy zdamy sobie sprawę, że JS jest używany do pisania:
Bazy danych
Serwery
System operacyjny
oraz niezliczoną liczbę bibliotek, frameworków, silników renderujących i języków kompilujących,
... bo tak jest lepiej.
Poważnie, proszę ... wysłuchaj mnie. Nie zabijaj posłańca.
Zapytaj Microsoft, dlaczego budują Windows 8 z JS jako obywatel pierwszej klasy. Lub nowy mobilny system operacyjny Mozilli lub Rivertrail, PhoneGap, ExtJS lub WebGL firmy IBM.
Lepsze jest jednak subiektywne: musimy więc przeanalizować i porównać. Co jest lepsze?
Zaczęło się od AJAX ... i nie przestało.
Nieblokujące we / wy. To naprawdę wielka sprawa i warto o tym wiedzieć. W JS jest to wzorzec oddzwaniania. Okazuje się, że za pomocą wywołań zwrotnych można włączyć serwer nieblokujący: Node.js ~ około 8 linii kodu. setTimeout () to callback. Przetwarzanie asynchroniczne jednowątkowe.
Elastyczność. Co? -Java i C mają klasy i interfejs, ale nazywane są obiektowymi. JavaScript ma tylko obiekty. Ale to się nazywa ... coś innego.
-Obsługiwanie tylko obiektów jest zaletą dla elastyczności, ponieważ elementy i metody są w pełni dynamiczne w czasie wykonywania. - Dziedziczenie prototypowe nie jest przerażające. Niektórzy eksperci opisują to jako pakiet-obiekt. -JS jest przyjazny w przypadku błędów. -Kod może się ze sobą łączyć, tworząc Kompozytowe Komponenty, bez większego wysiłku lub znajomości ... „interfejsów”, „abstrakcji”, „dziedziczenia”, „enkapsulacji”, „polimorfizmu”. Dobre rzeczy, ale jak Nike, w JS; po prostu to zróbcie.
Tłumaczenie danych. Dzięki JSON obiekty można przenosić od przodu do tyłu, od tyłu do przodu. Brak tłumaczeń danych XML. JSON jest wyraźnie prosty.
Niska krzywa uczenia się. Możliwe jest wycinanie i wklejanie bardzo złożonego kodu, a następnie etapowe debugowanie go. Słyszę kolegę ... „noobsa”. Ale nie dotyczy to tylko noobów.
-Okazuje się, że jest to naprawdę fajna funkcja do szybkiego prototypowania. Wszędzie pojawiają się witryny, które wykorzystują tę funkcję projektowania w przeglądarce i szerzej; prototypowanie środowiska wykonawczego. Kasa JSFiddle i CodePen, także MicroJS. GitHub.
AKTUALIZACJA: ponieważ ten opublikowany kod JavaScript jest obecnie szeroko stosowany w innych językach.
źródło
Więcej możesz zrobić mniej - jest na to kilka szkół. Szkoła gadatliwości chce wszystkiego, co zostało napisane w najdrobniejszych szczegółach, co każdy idiota może zrozumieć. JS jest członkiem przeciwnej szkoły, w której można warstwować złożoność, dzięki czemu łatwiej jest uzyskać pełny obraz, zanim zrozumie się, jak działają drobniejsze szczegóły. O wiele łatwiej jest pisać do interfejsu w JS niż w większości języków, IMO.
Funkcje pierwszej klasy, zamknięcia, dziedziczenie prototypów - to naprawdę, bardzo elastyczne połączenie. Możemy naśladować zajęcia, jeśli chcemy. Ale jest to postrzegane jako nieco bezcelowe przedsięwzięcie przez tych, którzy naprawdę dobrze rozumieją JS. Komponowanie pasuje do JS znacznie lepiej niż dziedziczenie w łańcuchach.
Blokowanie jest przydatne na wyższym poziomie. Tak, słyszałeś mnie Pomaga skupić się na JS jako komunikatorze, a nie na koniu roboczym, i sam przetwarza kolejki, pozwalając na przerwy w zachowaniu asynchronicznym między wywołaniami funkcji.
Powiedziałbym, że krzywa uczenia się jest trochę stroma w pisaniu potężnego JS, ale kiedy już tam będziesz, jest to huk. Jednak wdrożenie JS na niższym poziomie umiejętności wcale nie jest trudne.
źródło
To pytanie jest trochę przestarzałe, ale powodem użycia JavaScript vs Java / C ++ jest to, że ani Java, ani C ++ nie obsługują fragmentów kodu.
Nawet jeśli JavaScript nigdy nie został wynaleziony, Java ani C ++ byłyby dobrym wyborem dla fragmentów kodu źródłowego, które będą wykonywane po stronie serwera. Wybraliby inny język lub wymyślili własny. W przeszłości produkty używane do tworzenia własnego języka, definiowania własnych reguł produkcji, AST, tłumacza itp., Które specjalizowały się w ich dziedzinie.
Jednak dzięki JavaScript niezwykle łatwo jest stworzyć język specyficzny dla domeny (DSL) dla twojego produktu i osadzić silnik bez martwienia się o stworzenie całej infrastruktury niezwiązanej z domeną.
źródło
Model programowania sterowany zdarzeniami
JavaScript został stworzony z wykorzystaniem opartego na zdarzeniach podejścia do obliczeń bez pamięci współużytkowanej. W rozwoju interfejsu użytkownika jest to całkowicie stary kapelusz. Nie zakłada się, że „aplikacja” kontroluje proces. Brak interfejsu API procesu. Nie ma też głównej funkcji.
Twoja „aplikacja” to zbiór skryptów, które zostaną wykonane, gdy wydarzy się określona rzecz, na przykład
To całkiem dobrze pasuje do niewielkich fragmentów logiki przetwarzania potrzebnych do transformacji danych.
Język skryptowy
Możliwość wykonania bez etapu kompilacji oznacza, że instrukcje przetwarzania można łatwo przechowywać. Możesz łatwo zapisać skrypt jako tekst i przekazywać go bez specjalnych typów danych lub wiedzy.
Całkiem prosta, stabilna i kompatybilna wstecz
Kod, który piszesz dzisiaj, nie różni się zbytnio od 10 lat temu. Przechowywanie wersji prawdopodobnie nie będzie stanowiło większego problemu dla osób go osadzających.
Performant
Istnieje kilka dobrych silników open source z dużą ilością pracy. Działa nieco szybciej niż wiele alternatyw.
Nawiasy klamrowe
Wiele osób ma ograniczony komfort w zakresie języków programowania. Wiedzą tylko na przykład, jak programować Java lub C #. Dlatego oczekują łatwego uczenia się JavaScript, ponieważ wygląda znajomo. To oczywiście złudzenie. Kiedy nauczyłem się języka Python, było prawie w tym samym tempie co nauka JavaScript. Składnia jest istotna emocjonalnie, zakładając, że nie jest całkowicie niejasna.
źródło