Problem z javascriptem nie polega na samym języku - to doskonale prototypowany i dynamiczny język. Jeśli pochodzisz z wykształcenia OO, jest trochę krzywej uczenia się, ale nie jest to wina języka.
Większość ludzi zakłada, że Javascript jest podobny do Java, ponieważ ma podobną składnię i podobną nazwę, ale w rzeczywistości bardziej przypomina lisp. Właściwie całkiem dobrze nadaje się do manipulacji DOM.
Prawdziwym problemem jest to, że jest kompilowany przez przeglądarkę, a to oznacza, że działa w bardzo różny sposób w zależności od klienta.
Nie tylko rzeczywisty DOM różni się w zależności od przeglądarki, ale istnieje ogromna różnica w wydajności i układzie.
Edytuj następujące wyjaśnienie
Załóżmy, że obsługiwanych jest wiele języków tłumaczonych - nadal masz te same problemy. Różne przeglądarki nadal byłyby wadliwe i miały różne DOM.
Ponadto musiałbyś mieć interpreter wbudowany w przeglądarkę lub w jakiś sposób zainstalowany jako wtyczkę (którą możesz sprawdzić przed wyświetleniem strony) dla każdego języka. Ujednolicenie języka JavaScript zajęło wieki.
Nie możesz używać języków kompilowanych w ten sam sposób - wtedy wprowadzasz plik wykonywalny, którego nie można łatwo zbadać pod kątem tego, co robi. Wielu użytkowników nie pozwoliłoby mu działać.
OK, a co z jakąś piaskownicą dla skompilowanego kodu? Brzmi jak aplety Java. Lub ActionScript we Flashu. Lub C # w Silverlight.
A co z jakimś standardem IL? To ma większy potencjał. Opracuj w dowolnym języku, a następnie skompiluj go do IL, który przeglądarka następnie JIT.
Z wyjątkiem tego, że Javascript jest już tym IL - wystarczy spojrzeć na GWT . Pozwala pisać programy w Javie, ale rozprowadzać je jako HTML i JS.
Edytuj po dalszych wyjaśnieniach
Javascript nie jest, a raczej nie był, jedynym językiem obsługiwanym przez przeglądarki: w ciemnych epokach Internet Explorera można było wybierać między Javascriptem a VBScriptem do uruchamiania w IE. Technicznie rzecz biorąc, IE nawet nie uruchamiał Javascript - uruchamiał JScript (głównie w celu uniknięcia konieczności płacenia firmie Sun za słowo java , Oracle nadal posiada nazwę Javascript ).
Problem polegał na tym, że VBScript był własnością Microsoftu, ale także po prostu nie był zbyt dobry. Podczas gdy JavaScript dodawał funkcjonalność i uzyskiwał najlepsze narzędzia do debugowania w innych przeglądarkach (takich jak FireBug), VBScript pozostał tylko dla IE i praktycznie nie można go było debugować (narzędzia deweloperskie w IE4 / 5/6 nie istniały). W międzyczasie VBScript również się rozwinął, stając się całkiem potężnym narzędziem do tworzenia skryptów w systemie operacyjnym, ale żadna z tych funkcji nie była dostępna w przeglądarce (a kiedy były, stały się ogromnymi lukami w zabezpieczeniach).
Wciąż istnieją korporacyjne aplikacje wewnętrzne, które używają VBScript (a niektóre opierają się na tych lukach w zabezpieczeniach) i nadal działają z IE7 (zatrzymały IE6 tylko dlatego, że MS w końcu go zabiło).
Przywrócenie JavaScript do jego obecnego stanu było koszmarem i zajęło 20 lat. Wciąż nie ma spójnego wsparcia, z funkcjami językowymi (określonymi w 1999 r.) Wciąż brakuje niektórych przeglądarek i wymaganych jest wiele podkładek.
Dodanie alternatywnego języka do tłumaczenia w przeglądarkach wiąże się z dwoma głównymi problemami:
Skłonienie wszystkich dostawców przeglądarek do wdrożenia nowego standardu językowego - coś, czego wciąż nie zarządzali w Javascript od 20 lat.
Drugi język potencjalnie osłabia wsparcie, które już masz, pozwalając (na przykład) IE na obsługę JavaScript drugiej klasy, ale świetny VBScript (ponownie). Naprawdę nie chcę pisać kodu w różnych językach dla różnych przeglądarek.
Należy zauważyć, że Javascript nie jest „skończony” - wciąż ewoluuje, aby stać się lepszym w nowych przeglądarkach. Najnowsza wersja jest rok przed wdrożeń przeglądarek, a oni pracują na następny.