2009-08-11 6 views
11

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

В чем причина, по которой JavaScript и подобные языки написаны не строго типизированы? Разве это просто означает, что языки «легче» понять и получить больше, или же отсутствие «времени компиляции» - настоящая проблема?

+0

Вы, вероятно, следует разместить свое мнение в ответ - чтобы оценить, насколько сильно люди (DIS) согласен – karim79

+0

Разъяснение: Там ничто не мешает вам от разбора Javascript или любой другой динамический язык. То, о чем вы говорите, семантически оценивает анализируемый текст. – JaredPar

+0

Добавил мой собственный оппонент в качестве ответа. И вы, Джаред, но, предполагая среду браузера, я не знаю об этом (по крайней мере, не знаю?). Если бы у вас был сильно типизированный язык сценариев, вы бы, наверное, были вынуждены это думать? :) – cwap

ответ

15

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

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

+0

+1 для «В чем вред при добавлении его»; люди, которые этого не хотят, не должны его использовать. –

+0

Через 6 лет это очень близко к происходящему - Javascript имеет реальные классы. Хотя, я не слишком уверен в сильной типизации. –

1

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

2

Он получает гибкость от того, что не набирается. Мне лично нравятся слабо типизированные языки.

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

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

+0

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

0

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

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

+1

AS2 строго типизирован. Просто укажите тип после переменной. например: var vector1: Vector – Marius

1

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

+0

Кроме того, сильная типизация, по-видимому, устраняет целые классы ошибок и позволяет легко запомнить, какие методы поддерживает ваш объект. С Javascript два объекта одного типа могут иметь совершенно разные методы. Yippee! – weberc2

2

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

Да, они были бы, JavaScript 2.0 вводит type system:

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

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

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

0

Корпорация Майкрософт внесла большой вклад в решение проблемы сильной печати проблемы в период с машинописным текстом. Посмотрите:

http://www.typescriptlang.org/