LINUX.ORG.RU

История изменений

Исправление vbr, (текущая версия) :

Динамическая типизация это когда я могу написать код вида

function length2(p) {
  return p.x * p.x + p.y * p.y;
}

function unit_length2(id) {
  const resp = fetch("/unit/" + id);
  const resp_body = JSON.parse(resp.body);
  return length2(resp_body.position);
}

В общем когда разница между статически определёнными структурами (т.е. определёнными до запуска программы) и динамически определёнными структурами (т.е. определёнными во время работы программы) размывается.

Рефлексия частично позволяет перекрыть эту разницу в статически-типизированных ЯП.

А auto есть нынче практически в каждом языке программирования и это просто синтаксический сахар. В том же rust есть фича shadowing, которая позволяет переопределять переменную с тем же именем и с другим типом. Что-то вроде

let x = 1
let x = x.to_string()

Но это, конечно, не является динамической типизацией. По сути это простой синтаксический сахар для чего-то вроде

let x_1: int32 = 1
let x_2: string = x_1.to_string()

Исправление vbr, :

Динамическая типизация это когда я могу написать код вида

function length2(p) {
  return p.x * p.x + p.y * p.y;
}

function unit_length2(id) {
  const resp = fetch("/unit/" + id);
  const resp_body = JSON.parse(resp.body);
  return length2(resp_body.position);
}

В общем когда разница между статически определёнными структурами (т.е. определёнными до запуска программы) и динамически определёнными структурами (т.е. определёнными во время работы программы) размывается.

А auto есть нынче практически в каждом языке программирования и это просто синтаксический сахар. В том же rust есть фича shadowing, которая позволяет переопределять переменную с тем же именем и с другим типом. Что-то вроде

let x = 1
let x = x.to_string()

Но это, конечно, не является динамической типизацией. По сути это простой синтаксический сахар для чего-то вроде

let x_1: int32 = 1
let x_2: string = x_1.to_string()

Исправление vbr, :

Динамическая типизация это когда я могу написать код вида

function length2(p) {
  return p.x * p.x + p.y * p.y;
}

function unit_length2(id) {
  const resp = fetch("/unit/" + id);
  const resp_body = JSON.parse(resp.body);
  return length2(resp_body.position);
}

В общем когда разница между статически определёнными структурами (т.е. определёнными до запуска программы) и динамически определёнными структурами (т.е. определёнными во время работы программы) размывается.

Исправление vbr, :

Динамическая типизация это когда я могу написать код вида

function length2(p) {
  return p.x * p.x + p.y * p.y;
}

function unit_length2(id) {
  const resp = fetch("/unit/" + id);
  const resp_body = JSON.parse(resp.body);
  return length2(resp_body.position);
}

В общем когда разница между статически определёнными структурами и динамически определёнными структурами размывается.

Исправление vbr, :

Динамическая типизация это когда я могу написать код вида

function length2(p) {
  return p.x * p.x + p.y * p.y;
}

function unit_length2(id) {
  const resp = fetch("/unit/" + id);
  const resp_body = JSON.parse(resp.body);
  return length2(resp_body.position);
}

Исправление vbr, :

Динамическая типизация это когда я могу написать код вида

function length2(p) {
  return p.x * p.x + p.y * p.y;
}

function unit_length2(id) {
  const resp = fetch("/unit/" + id);
  const respBody = JSON.parse(resp.body);
  return length2(respBody.position);
}

Исходная версия vbr, :

Динамическая типизация это когда я могу написать код вида

function length2(p) {
  return p.x * p.x + p.y * p.y;
}

И передавать туда что угодно. Если у переданного чего-угодно есть свойства x и y, то оно сработает. Если нет - то упадёт. В рантайме.