Плюсы и минусы слабой и сильной типизации

Я перехожу с Java на PHP / Javascript и открываю для себя все практические аспекты использования слабо типизированного языка.

Поскольку я могу полностью сравнить эти два подхода, я хотел бы знать плюсы и минусы каждого подхода. Кроме того, существуют ли какие-либо другие формы набора текста?


person James P.    schedule 09.04.2011    source источник
comment
Все плюсы и минусы зависят от задачи   -  person Andrey Sboev    schedule 09.04.2011
comment
может вас также заинтересовать: stackoverflow.com/questions/3376252/   -  person Spyros    schedule 10.04.2011


Ответы (4)


В языке программирования со слабой динамической типизацией (например, PHP) ошибки программиста проявляются в виде несогласованного поведения (например, программа будет отображать глупую информацию).

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

Наконец, с помощью строго статически типизированного языка (например, Java, Ada, OCaml, Haskell, ...) некоторые ошибки могут быть обнаружены во время компиляции и, следовательно, уменьшаются риски предоставления ошибочной программы. (но релиз происходит позже)

person BenjaminB    schedule 09.04.2011
comment
Релиз происходит позже. - какие-нибудь доказательства этого? Если не говорить о каких-то 100-строчных тривиальных программах, я в этом сомневаюсь. - person Ingo; 10.04.2011
comment
PHP - единственный из перечисленных вами языков, который был разработан исключительно для контекста Интернета. Контекст Интернета имеет дело только со строками. - person Pete; 18.09.2013

да. Python использует динамический ввод.

Как правило, это вопрос личных предпочтений и роли, которую предполагают использовать разработчики данного языка.

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

person jondavidjohn    schedule 09.04.2011

Что касается вашего последнего вопроса, Mathematica считается "бестиповым". "

Высокоуровневый, не имеющий типов, динамический язык с согласованным символьным синтаксисом и семантикой для всех данных, функций и интерфейсов

person Mr.Wizard    schedule 10.04.2011

PHP / javascript можно использовать для разработки более привлекательного пользовательского интерфейса, чем Java. PHP будет иметь меньше ограничений, и его будет проще изучать и выполнять, чем java.

person JavaBits    schedule 09.04.2011
comment
Это не совсем вопрос сильной / слабой типизации, не так ли? - person martinstoeckli; 10.04.2011
comment
PHP и Javascript выполняют разные роли в веб-стеке, и вопрос о том, легче ли изучать и выполнять PHP или Java, чем Java, является довольно спорным. И JavaBits прав; это даже не решает вопрос. - person David Ehrmann; 12.07.2013