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

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

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

7 ответов

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://www.typescriptlang.org/

Другие вопросы по тегам