Я просто пытаюсь понять концепцию того, когда является языком программирования, который считается статически или динамически типизированным или одновременно рассматривается как статически типизированный и динамический язык или как динамически типизированный и динамический язык.
Что меня смущает, так это то, что если известно, что язык статически типизирован, когда тип переменной известен или определен во время компиляции в случае Java, т.е.
//Java illustration of statically typed
int x, y; //explicit type declaration
x = 5, y = 10; //Now we use the variables
//Groovy illustration of statically typed
def x, y //explicit type declaration
x = 1, y = 10 //now we use the variables
На основании чтения различных онлайн-источников говорится, что список языков, которые считаются статически типизированными, не включает Groovy, но включает Java и C ++.
Также, если Groovy является динамическим языком (определение DL - DL - это язык, который мало проверяет или не выполняет никаких проверок во время компиляции, вместо этого проверки выполняются во время выполнения). Разве это не означает, что Groovy также является языком с динамической типизацией, потому что переменная считается динамически типизированной «тогда, когда тип переменной известен во время выполнения, а не во время компиляции».
//Illustration of a language being dynamically typed according to DT and DL definition
x = 5 //directly using the variable (exceptable in Python and PHP but not in Java/Groovy)
Если это так в Groovy, то приведенная выше иллюстрация кода статической типизации Groovy противоречит определению Groovy проверок, выполняемых во время выполнения.
Означает ли это, что оба java groovy не являются динамически типизированными языками, потому что прямое использование переменной вызовет ошибку компилятора как в Java, так и в groovy.
Пожалуйста, поправьте меня, если ошибаюсь. Пожалуйста, предоставьте свои примеры с иллюстрацией кода.
def x; x = 1
статически типизированным? Информация о типе не предоставляется. - person Dave Newton   schedule 25.01.2013x
, может измениться. - person Dave Newton   schedule 25.01.2013def
не тип. Это любой тип. Что-либо. Если тип значения может измениться, то он динамический. - person Dave Newton   schedule 25.01.2013def
для устранения неоднозначности в объявлениях переменных не делает их статически типизированными. - person Dave Newton   schedule 25.01.2013def
не является обязательным префиксом. вы можете использоватьx=5
, и он будет работать. - person daggett   schedule 23.06.2021