Size: a a a

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

2021 July 06

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Поэтому более правильный способ писать foo(a,b) = a/b и вызвать foo(big(a), big(b)) к примеру
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Либо чтобы a и b заранее уже в результате других вычислений имели тип BigFloat
источник

АО

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

Из-за этого возникает неправильное применение этой штуки.
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Да, я тоже на этом погорел и это усложняет вход в язык из других языков где это обозначает другое
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Это не ошибка разработчиков имо, просто такая конструкция в принципе в джулии нужна только чтобы сделать convert в одну строчку
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Что то вроде синтаксического сахара
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Но лучше в целом никогда не аннотировать типы кроме как в объявлении аргументов функции
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Даже возвращаемое значение лучше никогда не аннотировать
источник

DB

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

DB

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

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Это очень неинтуитивный момент в джулии, что типы лучше вообще по меньше указывать)
источник

KF

Konstantin Firsov in Язык программирования Julia / Julia programming language
ммм... а без указания типов читаемость скрипта никак не страдает?
источник

DB

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

АО

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

АО

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

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Я практически на сто процентов уверен что функцию foo(a,b)::Float64 = a/b нельзя продифференцировать пакетом типа ForwardDifd
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Я, к сожалению, не за компьютером чтобы проверить
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
На самом деле на функции джулии можно смотреть как на template функции из C++ где все аргументы шаблонные
источник

KF

Konstantin Firsov in Язык программирования Julia / Julia programming language
> Зависит от скрипта наверное
ну, например, наличие подсказки float\bigfloat автоматически намекает на возможность !isfinite, что напомнит лишний раз о проверке, если это значение передается куда-либо или же с ним что-то делают. Если сторонний пакет не будет с этим работать, то я просто не буду его использовать и возьму другой инструмент - все просто).
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
И хочется чтобы шаблонная функция работала как можно с более широким набором входных аргументов
источник