Альтернативы JavaScript

  1. Go здесь
  2. Введите URL вашего видео YouTube
  3. Нажмите «Получить новую информацию о царапинах»
  4. Вернуться назад в Facebook
  5. Перезагрузите страницу
  6. Введите URL снова
  7. И он должен работать нормально

139
задан sawa 31 July 2013 в 14:05
поделиться

15 ответов

Проблема с 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 не «закончен» - он все еще развивается, чтобы стать лучше в новых браузерах. Последняя версия на годы опередила реализации браузеров, и они

39
ответ дан 23 November 2019 в 23:16
поделиться

Многие люди понимают, что Javascript - не лучший и не самый красивый язык. Однако в настоящее время он поддерживается браузерами, и поэтому будет чрезвычайно сложно ввести другой язык. Нам просто не нужна еще одна война браузеров.

Это объясняет, почему я не знаю о планах перехода на другой клиентский язык.

Но я думаю, что Javascript не так уж и плох, если вы начнете думать о модели DOM. и как с этим работать. Многие беспорядки в JS являются результатом того, как работает модель DOM.

1
ответ дан 23 November 2019 в 23:16
поделиться

Может быть, вам поможет что-нибудь вроде haxe (см. Haxe.org). Это язык, который кажется более чистым, чем JavaScript, и может быть скомпилирован в JavaScript, поэтому его можно запускать в браузере.

Я знаю, что это не прямой ответ на ваш вопрос, но я подумал, что это может быть интересно для вы, тем не менее.

1
ответ дан 23 November 2019 в 23:16
поделиться

Я не думаю, что Javascript будет заменен в ближайшее время. Для совершенно другого подхода к многофункциональным клиентам вы можете изучить Flex, технологию на основе Flash.

1
ответ дан 23 November 2019 в 23:16
поделиться

JQuery (все еще javascript, но) он действительно поможет вам, они поддерживают почти все браузеры, и это не так сложно изучить :)

2
ответ дан 23 November 2019 в 23:16
поделиться

Нет. JavaScript - это то, что нужно, но он будет развиваться. Следующая версия - «JavaScript Harmony», и вы можете узнать больше, если загуглите ее.

Время от времени кто-то предлагает добавить интерпретатор байтового кода в браузеры наряду с JavaScript. Вероятно, этого не произойдет, по крайней мере, какое-то время.

Я люблю JavaScript. Но есть и другие решения, в том числе GWT, который компилирует Java в JavaScript, и Script #, который компилирует C # в JavaScript.

2
ответ дан 23 November 2019 в 23:16
поделиться

Одна вещь, о которой я не упоминал (о, я вижу, что Алсидес упомянул HotRuby, пока я писал, а Носредна упомянул GWT и Script #), и хотел бы выкинуть там номер реализаций [вставить язык] -на-JavaScript (например, переводчики, которые позволяют преобразовывать Ruby , Python , C # , Java ], Obj-J / Cappuccino [аналогично Obj-C / Cocoa] или Обработка [для Canvas] в JavaScript либо на клиенте, либо перед развертыванием [и некоторые из них также имеют различные библиотеки абстракций]). Конечно, если он переводится на клиенте, возникают накладные расходы на производительность, но если вам удобнее работать с другим языком, это даст вам некоторую гибкость.

Лично, однако, Я рекомендую научиться любить JavaScript. Это отличный, мощный язык и довольно элегантный, если вы с ним познакомитесь. Я столкнулся с противоположной дилеммой, пытаясь получить способное серверное решение JavaScript / DOM, отвечающее всем моим потребностям. / незапрошенное мнение

3
ответ дан 23 November 2019 в 23:16
поделиться

Как уже было сказано, у вас есть Flash (ActionScript, производный язык от Javascript) и Silverlight / Moonlight (IronPython, IronRuby, JScript, VBScript, C #), которые можно запускать в браузере через плагины (первый из них гораздо более распространен).

Существует также другая альтернатива, если вам нравится Ruby: HotRuby , это рубиновая реализация на javascript, которая будет работать в браузере. Он еще не очень зрелый, но вы можете на него взглянуть.

3
ответ дан 23 November 2019 в 23:16
поделиться

Если вы хотите ограничить своих клиентов / посетителей определенными браузерами и, возможно, хотите потребовать от них установки подключаемого модуля, вы можете посмотреть 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 ...

4
ответ дан 23 November 2019 в 23:16
поделиться

Internet Explorer поддерживает подключаемые языки сценариев, хотя единственный надежно включенный в IE, помимо JScript, язык - это VBScript.

Насколько я видел, кажется, что существует некоторая предвзятость в сторону динамические языки в браузере, а JavaScript, кажется, удовлетворяет эту потребность в достаточной мере, чтобы сетевые эффекты сделали любой другой язык непригодным для использования. Язык на самом деле довольно мощный, хотя его реализация в браузерах оставляет желать лучшего.

4
ответ дан 23 November 2019 в 23:16
поделиться

С точки зрения клиента Javascript - это единственный способ манипулировать DOM.

4
ответ дан 23 November 2019 в 23:16
поделиться

Если вы думаете, что у JavaScript есть серьезные проблемы, я рекомендую книгу Дуга Крокфорда JavaScript: хорошие части . (Или Google по запросу "Crockford JavaScript", чтобы найти несколько видеопрезентаций, которые он сделал.) Крокфорд набрасывает безопасное подмножество и набор практик, и конкретно перечисляет некоторые части языка, которых следует избегать.

Я не знаю о планах по замене. JavaScript как де-факто средство управления DOM. Так что лучше научитесь пользоваться им безопасно и хорошо.

5
ответ дан 23 November 2019 в 23:16
поделиться

В ближайшее время я бы использовал такие вещи, как jQuery, чтобы скрыть несовместимость браузеров. В долгосрочной перспективе такие технологии, как Silverlight или Adobe AIR, могут превратить это поле в совсем другое (но все же минное поле) в будущем.

6
ответ дан 23 November 2019 в 23:16
поделиться

Дуг Крокфорд выступил с докладом для Google , в котором подробно рассказал о плохих и хороших сторонах JavaScript и его будущем. На самом деле он практически не изменился с 1999 года - что можно назвать хорошей вещью (практически все браузеры могут запускать один и тот же код, если вы знаете об их ограничениях), и Дуг показывает, где хорошие части в основном были недоразумения, которые оказались очень мощными.

Для манипуляций с DOM посмотрите на JQuery как на клиентскую библиотеку, которая заменяет большую часть ужасного DOM API операциями, которые сложно написать, в довольно элегантные фрагменты кода, которые писать легче.

6
ответ дан 23 November 2019 в 23:16
поделиться

Это правда, что в какой-то момент с Javascript было трудно справиться, но с тех пор сообщество веб-разработчиков проделало большой путь. Вместо этого я бы посоветовал вам взглянуть на jQuery . Это просто и позволяет абстрагироваться от всех различных проблем.

И действительно нет альтернатив, которые работают повсеместно. На ум приходит Flash, но это тоже скрипт ECMA, и он, вероятно, перебивает большинство вещей.

14
ответ дан 23 November 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: