Size: a a a

Язык программирования Julia / Julia programming language

2021 February 24

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
Андрей Оськин
На дискурсе очередная драма :-)
не драма а живая дискуссия :)
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
:-)))
источник

A

Alexandr in Язык программирования Julia / Julia programming language
Я вообще из плюсов пришел, поэтому у процесс шел в направлении "научиться не размечать типы там, где не нужно"
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Я вот сейчас подумал, что я кучу день ETL занимался, поэтому для меня логические ошибки на порядок важнее ошибок типов. В конце концов у меня все было датафреймами и проверка на типы все равно ничего бы не дала. А вот не по тому ключу умножить очень легко и никак иначе кроме чтения кода и прописывания тестов это не решалось.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Поэтому убежденность, что если компилятор переварил, то значит все в порядке, от меня очень далека...
источник

A

Alexandr in Язык программирования Julia / Julia programming language
Ну у меня подход примерно как в плюсах к auto  и template<typename T>. Если функция ожидает аргумент конкретного класса/абстратного класса и производит над ним более-менее сложные действия то я указываю тип явно или через where T <: Base с одной стороны для документирования - по сигнатуре сразу ясно что в эту функцию надо передавать, а с другой чтобы ошибка была о том эту функцию нельзя вызвать с каким-то типом, а не о "getproperty(T) неопределено" с трейсом на 1.5 страницы
источник

A

Alexandr in Язык программирования Julia / Julia programming language
Если функция в 2 строчки, то смысл специализировать типы вижу только в случае перегрузки
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
А как же тесты? Я помню, что ещё когда я в первый раз открыл книжку по рельсам, там чуть ли не на первой странице было написано: TDD наше всё. Сначала пишешь тесты, потом под них код, пока не позеленеет. Что с этим сейчас? От TDD отказались?
источник

A

Alexandr in Язык программирования Julia / Julia programming language
А в чем противоречие? Тесты я пишу всегда. Просто задачи у явной типизации и тестов разные и почти не пересекающиеся
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Почему? Если есть функция, которая проглатывает нужный инпут, прогоняет его через все внутренности и возвращает правильный результат, то это значит, что типы везде правильные передаются, разве не так?

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

A

Alexandr in Язык программирования Julia / Julia programming language
>то это значит, что типы везде правильные передаются, разве не так
Да так, но типы решают другую задачу для меня во всяком случае. Во-первых гарантируют что функуцию не вызовут с неподходящим для нее типом и непредсказуемыми последствиями например из консоли. Во-вторых явно говорит пользователю, в том числе и мне что туда надо передавать. Странно лезть в тексты проекта, чтобы узнать какого типа аргумент ожидает функция
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
😊 Это обычно первое, что я делаю 😊 В смысле залезаю в текст проекта, чтобы прочитать, чего от меня хотят. Обычно это самый быстрый способ разобраться, что там происходит (и заодно вылить ушат помоев на разрабов, которые пишут ужасно кривой код 😊 )
источник

A

Alexandr in Язык программирования Julia / Julia programming language
Опечатался, сорри, тяжелый день - я имел ввиду "лезть в тесты"
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
А, это второе, что я делаю 😊 Хорошие тесты - это самый лучший мануал.
источник

A

Alexandr in Язык программирования Julia / Julia programming language
в тексты лезть нормально и как раз для облегчения этого залезания типизация полезна
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Если они правильно написаны, то там как раз обычно логика разрабов высвечивается, как именно они предполагают использование своих функций.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Кстати по поводу типизации, это хороший комментарий.




Statement:    When I write a method to handle an HTTP.Request and return an HTTP.Response there is no need for generalization unless someone creates a new HTTP package and mirrors the HTTP.jl package’s API, which I find significantly less likely than defining a function for Ints that could also be used for Floats.

Answer: And so, you lose the possibility, for example, of making a test suite using a mock HTTP object, that acts as is expected of one, but does not really make an HTTP connection, speeding up tests and making sure you are not at the whim of other network problems.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Моки в Джулии это та ещё боль, но в самом деле, при жёсткой типизации, тестить некоторые задачи будет довольно сложно.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Без типизации это непросто, но по крайней мере возможно.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
У меня был опыт с Растом (да простят меня растоманы этого чата). Он вроде как тоже позиционируется, как язык в котором если уж программа скомпилируется, то она гарантировано будет работать.

В результате когда я устал бороться с bound checker я просто везде начал лепить clone/copy (не помню точного названия), все типы преобразовывал максимально безобразным (но коротким) образом. Ну и в общем, качество кода и выполнения было ниже плинтуса. Это конечно больше говорит о моих способностях как разработчика на расте 😊 Но в целом, если на всё плевать, то типизация мало чем помочь.
источник