Строго типизированные клиентские языки?

Существует множество вариантов для мощных языков на стороне сервера, но я не могу придумать ни одного строго типизированного, действительно мощного языка на стороне клиента. Javascript много работает с формами, базовой математикой и взаимодействует с сервером с помощью AJAX и т. Д., Но у него есть ограничения по сравнению с другими языками.

Я ищу строго типизированный язык на стороне клиента, способный обрабатывать изображения или обрабатывать данные, такие необработанные вещи. Или, если есть библиотеки javascript, которые помогают применять типы данных переменных, это тоже может сработать.


person Corey Ogburn    schedule 30.06.2012    source источник
comment
Вы имеете в виду статически типизированный?   -  person Ned Batchelder    schedule 30.06.2012
comment
Я думаю, вы говорите о Flash, хотя HTML5 быстро наступает ...   -  person McGarnagle    schedule 30.06.2012
comment
Статическая типизация - это шаг в правильном направлении. Flash скомпилирован, требует плагинов и, похоже, скоро исчезнет.   -  person Corey Ogburn    schedule 30.06.2012
comment
@CoreyOgburn: вы использовали слово мощный, не объясняя, почему Javascript неэффективен. Никто не узнает, что вы ищете.   -  person Ned Batchelder    schedule 30.06.2012
comment
Что такое клиентский язык?   -  person Don Roby    schedule 30.06.2012


Ответы (5)


В браузере, что касается строгой типизации, у вас есть Java с GWT (статический), Python (динамический) с пижамой, Dart, Opa (статический) и множество языков, которые могут выполнять кросс-компиляцию в javascript из LLVM (C, C ++, Objective C, Java, Ada и многие многие другие) благодаря emscripten.

Что касается производительности, вы можете взглянуть на Google Native Client и Типизированные массивы Javascript.

Лично я считаю Opa одним из самых интересных веб-языков сегодня.

person Eric des Courtis    schedule 30.06.2012

Haxe - это статически типизированный язык, который компилируется в различные клиентские среды, например JavaScript или Flash.

person thSoft    schedule 24.08.2012
comment
Тьфу, вспышка ... А вот с javascript как вариант проверю. - person Corey Ogburn; 24.08.2012

Возможно, вы захотите взглянуть на ST-JS. Этот инструмент позволяет писать javascript, но заимствуя синтаксис и статическую типизацию java. Инструменты предоставляют набор интерфейсов и классов Java, которые точно отражают стандартную библиотеку javascript, а также некоторые другие общие полезные библиотеки (DOM, jquery и т. Д.). Затем вы можете написать свой исходный код на java, и переводчик ST-JS преобразует этот статически типизированный код в простой ванильный (и, что наиболее важно, читаемый) код javascript. ST-JS также совместим с любой другой библиотекой javascript, которую вы хотели бы использовать, если вы пишете соответствующие интерфейсы java.

Еще одно преимущество ST-JS заключается в том, что, поскольку вы пишете код Java, вы можете использовать все действительно мощные инструменты из экосистемы Java. Инструменты рефакторинга во всех IDE будут работать "из коробки". Инструменты статического анализа, такие как Findbugs, PWD, checkstyle, также отлично работают и очень точны для кода с поддержкой ST-JS.

Вы можете думать, что ST-JS находится где-то посередине между GWT (полностью скрывает от вас стандартные библиотеки javascript и не дает вам использовать внешние библиотеки) и некоторыми инструментами статического анализа javascript, такими как JSLint.

person LordOfThePigs    schedule 30.12.2012
comment
это просто транспилятор. - person OZ_; 24.08.2014

TypeScript, Flow и Dart имеют необязательную статическую типизацию. TypeScript - это надмножество JavaScript (вы можете аннотировать существующие библиотеки информацией о типе); Dart - это отдельный язык, который поставляется с постоянно растущей стандартной библиотекой.

person thSoft    schedule 14.11.2012
comment
В Dart нет опции статической печати. Вы можете писать типы, но они будут иметь значение только для вас и IDE, когда виртуальная машина удалит их как комментарии. - person OZ_; 24.08.2014

Другой вариант - Scala.js. Его совместимость с JavaScript важно прочитать.

person thSoft    schedule 07.04.2015