Size: a a a

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

2021 July 06

DB

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

DB

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

DB

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

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Функция по типу foo(a,b) = a/b работает со всеми типами которы определили деление между собой (например даже для матриц), функция foo(a,b)::BigFloat = a/b работает только для типов результат деления которых можно сконвертировать в BigFloat. Производительности тут вообще ничто не добавляет
источник

A

Alexandr in Язык программирования Julia / Julia programming language
Ну вообщем-то явно аннотировать возвращаемый тип даже в современных c++ не обязательно - есть автовывод типа
источник

DB

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

DB

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

A

Alexandr in Язык программирования Julia / Julia programming language
Этим она мне и понравилась. И тем что она идеи stdlib возводит в абсолют 🙂
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
Это очень не интуитивный момент как по мне
источник

DB

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

DB

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

A

Alexandr in Язык программирования Julia / Julia programming language
Явный тип, кстати, может быть, как мне кажется полезен при декларировании переменных. Что-нить типа:
function f(x)
      local path::String
      if x > 10
         path = "10"
      else
         path = "30"
      end
..........    
end
В качестве подсказки и как удобный typeassert
источник

АО

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

A

Alexandr in Язык программирования Julia / Julia programming language
https://www.packtpub.com/product/hands-on-design-patterns-and-best-practices-with-julia/9781838648817 - уже вчера рекомендовал ее. Мне сильно помогла именно в плане понимания стиля
источник

IY

Igor Yegin in Язык программирования Julia / Julia programming language
+
источник

IY

Igor Yegin in Язык программирования Julia / Julia programming language
В R к тому же и типов данных не так много
источник

DB

Dmitry Bagaev in Язык программирования Julia / Julia programming language
В вашем случае да, имеет право на жизнь, но функция к примеру
function foo(a, b)
   local r::Float64
   if some_condition
      r = a/b
   else
      r = b/a
   end
   return r
end  
страдает той же проблемой, что я описал
источник

KF

Konstantin Firsov in Язык программирования Julia / Julia programming language
ммм... допустим библиотека работает с финансами. Какой тип должна возвращать функция, которая оперирует деньгами?
источник

АО

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

A

Alexandr in Язык программирования Julia / Julia programming language
Так я к тому, что это может быть полезно, если вам почему-то нужно чтобы локальная переменная имела конкретный тип и вы хотите гарантировать что опечатка в какой-то из ветвей if вам это не сломает
источник