Может ли javascript и подобные языки сценариев получать выгоду от строго типизированного?

Просто мой ум шел сегодня. Я провел некоторое время в режиме отладки IE, просматривая веб-интерфейс, как обычно, и, о, мальчик, я вижу много ошибок:) Большинство из этих ошибок связаны с тем, что какое-то значение отличается от ожидаемого (по крайней мере, насколько я интерпретирую ошибку сообщения).

В чем причина того, что JavaScript и подобные языки сценариев не сильно типизированы? Это просто, чтобы "легче" было понятнее и доступнее, или отсутствие "времени компиляции" - настоящая проблема?

Ответ 1

Он должен обязательно иметь сильную типизацию. ActionScript 3 строго типизирован, но все же имеет наследование прототипа и тип подстановочных знаков, если вам нужны динамические объекты.

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

Ответ 2

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

Таким образом, ответ будет заключаться в преимуществах и недостатках.

Для людей, которым требуется строго типизированный язык в браузере, доступны GWT и Script #.

Ответ 3

Может ли javascript и подобные языки сценариев быть сильно набраны?

Да, они бы, JavaScript 2.0 вводит систему типов :

Тип системы JavaScript 2.0 поддерживает понятие типа, который можно рассматривать как подмножество всех возможные значения. Есть встроенные типы, такие как Object, Number и Строка; каждый пользовательский класс (раздел 6) также является типом.

Также см.: http://timkadlec.com/2008/04/an-objective-look-at-javascript-2-0-strong-typing/

В целом поддержка сильной типизации предоставляет много интересных возможностей для прохождения компиляции и оптимизации.

Ответ 4

Мой собственный подход: вы можете разбирать скрипты перед их исполнением. Это уловило бы большинство ошибок типа и означало бы, что пользователю не нужно видеть частично выполненный-затем-завершенный сценарий. Еще лучше, было бы намного легче отладить эту вещь, если бы у нее был парсер:)

Ответ 5

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

Ответ 6

Я создаю структуру быстрого прототипа для eLearning в ActionScript 2, когда. Моя самая большая проблема заключалась в том, что AS2 не был строго типизирован, и это вызывает много головной боли при отладке. Я думаю, что сильная ввод текста делает код более удобным для чтения. Я думаю, что слабо типизированный язык предлагает большую гибкость.

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

Ответ 7

Microsoft проделала длинный путь к решению проблемы сильной печати в промежутке времени с typescript. Посмотрите:

http://www.typescriptlang.org/