Size: a a a

2019 February 21

ЕР

Евгений Ромашкан in pro.elixir
Есть ещё неплохие практики получающие получть плюшки строгой типизации, формально используя не строгую, типа каст типов только в большую сторону, то есть безопасно, потому что без потерь
источник

YZ

Yuri Zhloba in pro.elixir
Угу. И языков с по-настоящему строгой типизацией мало. Я знаю только один такой - - OCaml
источник

YZ

Yuri Zhloba in pro.elixir
Там даже разные наборы операторов для арифметических действий над целыми числами, и над вещественными числами.
источник

ЕР

Евгений Ромашкан in pro.elixir
Вот статья которая практически всё объясняет - https://habr.com/ru/post/161205/
источник

YZ

Yuri Zhloba in pro.elixir
Да, хорошая статья
источник

EV

Eugene Vasiliev in pro.elixir
Евгений Ромашкан
Не знаю о чем спор.
Если типы определяются в рантайме - типизация динамическая, на этапе компиляции - статическая.
Если в языке есть неявный каст типов, то есть 1 + "2" = 3, типизация нестрогая(слабая), если 1 + "2" выдает ошибку - строгая(сильная)
хохохохохохо
источник

EV

Eugene Vasiliev in pro.elixir
в С нельзя складывать 1 и «2»
источник

EV

Eugene Vasiliev in pro.elixir
а типизация там слабая
источник

EV

Eugene Vasiliev in pro.elixir
как так?
источник

ЕР

Евгений Ромашкан in pro.elixir
Eugene Vasiliev
как так?
Вот так
#include <stdio.h>

int main(void) {
 int a=1;
 float b = 2;
 float c = a + b;
 printf("%f", c);
}
источник

ЕР

Евгений Ромашкан in pro.elixir
Или даже так, ещё веселее
#include <stdio.h>

int main(void) {
 int a=1;
 char b = '2';
 float c = a + b;
 printf("%f", c);
}
источник

EV

Eugene Vasiliev in pro.elixir
хмммм
источник

EV

Eugene Vasiliev in pro.elixir
Евгений Ромашкан
Вот так
#include <stdio.h>

int main(void) {
 int a=1;
 float b = 2;
 float c = a + b;
 printf("%f", c);
}
float с int можно много где складывать
источник

EV

Eugene Vasiliev in pro.elixir
например, в ruby, а он сильно типизированный
источник

EV

Eugene Vasiliev in pro.elixir
Евгений Ромашкан
Или даже так, ещё веселее
#include <stdio.h>

int main(void) {
 int a=1;
 char b = '2';
 float c = a + b;
 printf("%f", c);
}
а строку с числом можно сложить в Java
источник

EV

Eugene Vasiliev in pro.elixir
и Java тоже сильно типизированный
источник

EV

Eugene Vasiliev in pro.elixir
что тут все ещё не вяжется
источник

ЕР

Евгений Ромашкан in pro.elixir
Евгений Ромашкан
Есть ещё неплохие практики получающие получть плюшки строгой типизации, формально используя не строгую, типа каст типов только в большую сторону, то есть безопасно, потому что без потерь
.
источник

ЕР

Евгений Ромашкан in pro.elixir
Ок Int+float неудачный пример пример
источник

EV

Eugene Vasiliev in pro.elixir
но ведь 1 + "2" = 3 в JS достигается как раз через касти типов
источник