В каких примерах динамическая типизация предпочтительнее статической?

Возьмем простую функцию, которая увеличивает целое число:

Статический ввод:

function incrementNumber(int n) {
    n = n + 1;
}    

Динамический ввод:

function incrementNumber(n) {
    if (type of n != int) {
        throw Error;
    }
    n = n + 1;
}    

Они достигают того же самого, но динамический подход намного уродливее и длиннее из-за необходимости «проверки типов».

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

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


person Jason Node    schedule 03.08.2015    source источник
comment
Если вы выполняете проверку типа для динамической типизации, цель теряется. Вместо этого вам следует просто позаботиться о том факте, что оператор + определен для любого входящего типа. Итак, независимо от того, является ли он int, десятичным или строковым, он должен работать, пока они знают, как выполнять операцию +, не так ли ?   -  person Pradeep Kumar    schedule 04.08.2015
comment
Именно поэтому я был сбит с толку: проверка типов лишает динамическую типизацию цели, но в то же время я видел, как это делают многие разработчики. Так это плохая практика?   -  person Jason Node    schedule 04.08.2015
comment
Это может быть больше связано с недостаточными знаниями или новичком в программировании, чем с плохой практикой. :)   -  person Pradeep Kumar    schedule 04.08.2015


Ответы (1)


Если вы собираетесь проверить тип данных перед тем, как что-либо делать, это не принесет пользы.

Динамическая типизация имеет смысл только тогда, когда вы знаете, что функция существует или может быть применен оператор, но компилятор не знает этого до времени выполнения. Или создавать объекты без определения его свойств.

person Francisco Goldenstein    schedule 03.08.2015
comment
Именно поэтому я был сбит с толку: проверка типов лишает динамическую типизацию цели, но в то же время я видел, как это делают многие разработчики. Разве так подходить к динамической типизации - неправильно? - person Jason Node; 04.08.2015
comment
Верно! Проверка шрифта при работе с динамикой неправильна, потому что она не использует преимущества динамической печати. - person Francisco Goldenstein; 04.08.2015