Size: a a a

Clojure — русскоговорящее сообщество

2020 May 08

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
В CL он кучу варнингов накидает. И сразу понятно становится.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
Вопрос в этом ключе не про статическую типизацию, а про статическую компиляцию. То есть ошибки у тебя на этапе компиляции возникают. Статическая типизация - ну хз, такую не знаю. Знаю только компиляцию, которая типизацию в компайл-тайм проверяет.
Компайл тайм далеко не все проверяет и зачастую совсем не то что нужно
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Anton Chikin
Компайл тайм далеко не все проверяет и зачастую совсем не то что нужно
Ну не всё, да. Но много чего.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
Я вот реально из опыта рассказываю. Программирую на CL (на самом деле там хоть и опциональная, но статическая компиляция) и на Scheme. Это то, что я веду в текущий момент. На схеме, бывает, опечатаешься в названии функции. Где-то тесты ловят. Где-то нет.
опечатки в названии функции или в количестве аргументов - это не про типизацию
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Anton Chikin
опечатки в названии функции или в количестве аргументов - это не про типизацию
Это про компиляцию. Я выше ремарку делал.
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
А типизация - это инструмент для этой компиляции.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
Ну не всё, да. Но много чего.
Ловит ошибки в рукописных типах - нет типов нет ошибок 🙂
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
Это про компиляцию. Я выше ремарку делал.
ну почему - это и интерпретатор может проверять
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Он полюбому парсит твой код и делает какие - то проверки
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Anton Chikin
ну почему - это и интерпретатор может проверять
Ну если мы говорим про строгую типизацию, то да. Но смысл в статической компиляции, что ты это проверяешь сильно раньше.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Например что у тебя в коде нет необъявленных переменных
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Anton Chikin
Он полюбому парсит твой код и делает какие - то проверки
Он не парсит код. Он внутри метода проверяет на соответствие контракту при вызове. Нет вызова - нет проблем.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Да можно и без типизации много чего проверить
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
Он не парсит код. Он внутри метода проверяет на соответствие контракту при вызове. Нет вызова - нет проблем.
ну как нет проблем. есть например необъявленные переменные, несовпадение числа аргументов функции, в конце концов невалидный синтаксис
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
И без явного объявления типов можно много чего проверить
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Anton Chikin
ну как нет проблем. есть например необъявленные переменные, несовпадение числа аргументов функции, в конце концов невалидный синтаксис
Ну если вызова метода нет, то и проблем тоже.
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Ну интерпретатор так работает.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
ну как нет когда они есть
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
не любой
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
в кложе он например делает проверки
источник