И он должен работать нормально
Проблема с javascript не в самом языке - это совершенно хороший прототип и динамический язык. Если у вас опыт объектно-ориентированного проектирования, вам придется немного потрудиться, но это не вина языка.
Большинство людей полагают, что Javascript похож на Java, потому что он имеет похожий синтаксис и похожее имя, но на самом деле это больше похоже на шепелявить На самом деле он очень хорошо подходит для манипуляций с DOM.
Настоящая проблема в том, что он компилируется браузером, а это означает, что он работает по-разному в зависимости от клиента.
Не только фактический DOM отличается в зависимости от браузер, но есть огромная разница в производительности и макете.
Отредактируйте следующее уточнение в вопросе
Предположим, поддерживалось несколько интерпретируемых языков - у вас остались те же проблемы. Различные браузеры по-прежнему будут содержать ошибки и будут иметь разные модели DOM.
Кроме того, вам потребуется встроенный в браузер интерпретатор или как-то установить его в качестве подключаемого модуля (который вы могли бы проверить перед тем, как обслуживать страницу) для каждого язык. Потребовались годы, чтобы согласовать Javascript.
Вы не можете использовать скомпилированные языки таким же образом - тогда вы представляете исполняемый файл, который нелегко изучить на предмет того, что он делает. Многие пользователи предпочли бы не запускать его.
Хорошо, а что насчет какой-то песочницы для скомпилированного кода? Для меня это похоже на Java-апплеты. Или ActionScript во Flash. Или C # в Silverlight.
А что насчет какого-то стандарта IL? В этом больше возможностей. Разработайте на любом языке, который вы хотите, а затем скомпилируйте его в IL, который затем будет JIT браузером.
За исключением того, что Javascript уже является своего рода IL - просто посмотрите GWT . Он позволяет писать программы на Java, но распространять их как HTML и JS.
Отредактируйте, следуя дальнейшим разъяснениям в вопросе
Javascript не является или, скорее, не был единственным языком, поддерживаемым браузерами: назад в Интернете Проводник темных веков мог выбирать между Javascript или VBScript для запуска в IE. Технически IE даже не запускал Javascript - он запускал JScript (в основном, чтобы не платить Sun за слово java , Oracle по-прежнему владеет именем Javascript ) .
Проблема заключалась в том, что VBScript был собственностью Microsoft, но также что это было не очень хорошо. В то время как Javascript добавлял функциональные возможности и получал высокопроизводительные инструменты отладки в других браузерах (например, FireBug), VBScript оставался только для IE и в значительной степени не отлаживался (инструменты разработчика в IE4 / 5/6 отсутствовали). Тем временем VBScript также расширился и стал довольно мощным инструментом написания сценариев в ОС, но ни одна из этих функций не была доступна в браузере (а когда они были, они превратились в огромные дыры в безопасности).
Все еще существуют некоторые корпоративные внутренние приложения, которые используют VBScript (а некоторые полагаются на эти дыры в безопасности), и они все еще работают с IE7 (они остановили IE6 только потому, что MS окончательно его отключила).
Приведение Javascript в текущее состояние было кошмаром и заняло 20 лет . У него по-прежнему нет постоянной поддержки, при этом языковые функции (указанные в 1999 году) по-прежнему отсутствуют в некоторых браузерах, и требуется множество прокладок.
Добавление альтернативного языка для интерпретации в браузерах сталкивается с двумя основными проблемами:
Заставить всех поставщиков браузеров внедрить новый стандарт языка - то, чего они до сих пор не добились для Javascript за 20 лет.
Второй язык потенциально ослабляет уже имеющуюся у вас поддержку, позволяя (например) IE иметь второстепенную поддержку Javascript, но отличный VBScript (снова). Я действительно не хочу писать код на разных языках для разных браузеров.
Следует отметить, что Javascript не «закончен» - он все еще развивается, чтобы стать лучше в новых браузерах. Последняя версия на годы опередила реализации браузеров, и они
Многие люди понимают, что Javascript - не лучший и не самый красивый язык. Однако в настоящее время он поддерживается браузерами, и поэтому будет чрезвычайно сложно ввести другой язык. Нам просто не нужна еще одна война браузеров.
Это объясняет, почему я не знаю о планах перехода на другой клиентский язык.
Но я думаю, что Javascript не так уж и плох, если вы начнете думать о модели DOM. и как с этим работать. Многие беспорядки в JS являются результатом того, как работает модель DOM.
Может быть, вам поможет что-нибудь вроде haxe (см. Haxe.org). Это язык, который кажется более чистым, чем JavaScript, и может быть скомпилирован в JavaScript, поэтому его можно запускать в браузере.
Я знаю, что это не прямой ответ на ваш вопрос, но я подумал, что это может быть интересно для вы, тем не менее.
Я не думаю, что Javascript будет заменен в ближайшее время. Для совершенно другого подхода к многофункциональным клиентам вы можете изучить Flex, технологию на основе Flash.
JQuery (все еще javascript, но) он действительно поможет вам, они поддерживают почти все браузеры, и это не так сложно изучить :)
Нет. JavaScript - это то, что нужно, но он будет развиваться. Следующая версия - «JavaScript Harmony», и вы можете узнать больше, если загуглите ее.
Время от времени кто-то предлагает добавить интерпретатор байтового кода в браузеры наряду с JavaScript. Вероятно, этого не произойдет, по крайней мере, какое-то время.
Я люблю JavaScript. Но есть и другие решения, в том числе GWT, который компилирует Java в JavaScript, и Script #, который компилирует C # в JavaScript.
Одна вещь, о которой я не упоминал (о, я вижу, что Алсидес упомянул HotRuby, пока я писал, а Носредна упомянул GWT и Script #), и хотел бы выкинуть там номер реализаций [вставить язык] -на-JavaScript (например, переводчики, которые позволяют преобразовывать Ruby , Python , C # , Java ], Obj-J / Cappuccino [аналогично Obj-C / Cocoa] или Обработка [для Canvas] в JavaScript либо на клиенте, либо перед развертыванием [и некоторые из них также имеют различные библиотеки абстракций]). Конечно, если он переводится на клиенте, возникают накладные расходы на производительность, но если вам удобнее работать с другим языком, это даст вам некоторую гибкость.
Лично, однако, Я рекомендую научиться любить JavaScript. Это отличный, мощный язык и довольно элегантный, если вы с ним познакомитесь. Я столкнулся с противоположной дилеммой, пытаясь получить способное серверное решение JavaScript / DOM, отвечающее всем моим потребностям. / незапрошенное мнение
Как уже было сказано, у вас есть Flash (ActionScript, производный язык от Javascript) и Silverlight / Moonlight (IronPython, IronRuby, JScript, VBScript, C #), которые можно запускать в браузере через плагины (первый из них гораздо более распространен).
Существует также другая альтернатива, если вам нравится Ruby: HotRuby , это рубиновая реализация на javascript, которая будет работать в браузере. Он еще не очень зрелый, но вы можете на него взглянуть.
Если вы хотите ограничить своих клиентов / посетителей определенными браузерами и, возможно, хотите потребовать от них установки подключаемого модуля, вы можете посмотреть MS Silverlight - читаемый обзор находится в википедии . С Silverlight 2 вы можете запускать на стороне клиента код, написанный на C #, IronPython, IronRuby, VB.NET и т. Д .; бесплатный клон Silverlight Moonlight из проекта Mono обещает привнести ту же функциональность в Linux.
На практике большинство разработчиков веб-приложений и сайтов предпочитают охватить более широкую аудиторию, чем Silverlight (и в конечном итоге Moonlight) в настоящее время может доставлять - что означает использование Javascript или, возможно, Flash (в котором используется аналогичный язык программирования, Actionscript).
Таким образом, получая значительную долю внимания, принятие и продвижение чего-либо еще оказывается трудной борьбой даже для Microsoft с ее большими группами инженеров и маркетинговыми бюджетами и сторонним проектом свободного программного обеспечения (чтобы, возможно, облегчить беспокойство по поводу несвободной привязки ) - что может помочь объяснить, почему очень мало интереса, например, со стороны Mozilla Foundation, в продвижении к такой цели. «Помимо взаимодействия», - скажете вы: но ясно, что проблема взаимодействия - САМАЯ важная деталь, учитывая то, что мы наблюдаем в отношении прогресса Silverlight ...
Очень мало интереса, например, со стороны Mozilla Foundation, в продвижении к такой цели. «Помимо взаимодействия», - скажете вы: но ясно, что проблема взаимодействия - САМАЯ важная деталь, учитывая то, что мы наблюдаем в отношении прогресса Silverlight ... Очень мало интереса, например, со стороны Mozilla Foundation, в продвижении к такой цели. «Помимо взаимодействия», - скажете вы: но ясно, что проблема взаимодействия - САМАЯ важная деталь, учитывая то, что мы наблюдаем в отношении прогресса Silverlight ...Internet Explorer поддерживает подключаемые языки сценариев, хотя единственный надежно включенный в IE, помимо JScript, язык - это VBScript.
Насколько я видел, кажется, что существует некоторая предвзятость в сторону динамические языки в браузере, а JavaScript, кажется, удовлетворяет эту потребность в достаточной мере, чтобы сетевые эффекты сделали любой другой язык непригодным для использования. Язык на самом деле довольно мощный, хотя его реализация в браузерах оставляет желать лучшего.
С точки зрения клиента Javascript - это единственный способ манипулировать DOM.
Если вы думаете, что у JavaScript есть серьезные проблемы, я рекомендую книгу Дуга Крокфорда JavaScript: хорошие части . (Или Google по запросу "Crockford JavaScript", чтобы найти несколько видеопрезентаций, которые он сделал.) Крокфорд набрасывает безопасное подмножество и набор практик, и конкретно перечисляет некоторые части языка, которых следует избегать.
Я не знаю о планах по замене. JavaScript как де-факто средство управления DOM. Так что лучше научитесь пользоваться им безопасно и хорошо.
В ближайшее время я бы использовал такие вещи, как jQuery, чтобы скрыть несовместимость браузеров. В долгосрочной перспективе такие технологии, как Silverlight или Adobe AIR, могут превратить это поле в совсем другое (но все же минное поле) в будущем.
Дуг Крокфорд выступил с докладом для Google , в котором подробно рассказал о плохих и хороших сторонах JavaScript и его будущем. На самом деле он практически не изменился с 1999 года - что можно назвать хорошей вещью (практически все браузеры могут запускать один и тот же код, если вы знаете об их ограничениях), и Дуг показывает, где хорошие части в основном были недоразумения, которые оказались очень мощными.
Для манипуляций с DOM посмотрите на JQuery как на клиентскую библиотеку, которая заменяет большую часть ужасного DOM API операциями, которые сложно написать, в довольно элегантные фрагменты кода, которые писать легче.
Это правда, что в какой-то момент с Javascript было трудно справиться, но с тех пор сообщество веб-разработчиков проделало большой путь. Вместо этого я бы посоветовал вам взглянуть на jQuery . Это просто и позволяет абстрагироваться от всех различных проблем.
И действительно нет альтернатив, которые работают повсеместно. На ум приходит Flash, но это тоже скрипт ECMA, и он, вероятно, перебивает большинство вещей.