Size: a a a

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

2020 October 25

АО

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

MW

Merlin Wizard in Язык программирования Julia / Julia programming language
Понял, спс, а о везде в гайдах про всякие макросы, функции, а как писать на Джулии так, чтобы потом не запутаться - не пишут и ощущение что язык игрушечный, ну для написания пары расчётов
источник

MW

Merlin Wizard in Язык программирования Julia / Julia programming language
Хотя такое сочетание гомоиконности, метапрограммирования, динамичности и скорости есть буквально всего в паре языков наверное
источник

MW

Merlin Wizard in Язык программирования Julia / Julia programming language
А статическая типизация возможна впринципе? Ну чтобы на этапе компиляции были проверки. Есть какие то средства расширения компилятора? Например в Rust есть возможность писать плагины к компилятору.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Merlin Wizard
Понял, спс, а о везде в гайдах про всякие макросы, функции, а как писать на Джулии так, чтобы потом не запутаться - не пишут и ощущение что язык игрушечный, ну для написания пары расчётов
источник

MW

Merlin Wizard in Язык программирования Julia / Julia programming language
ну там нет ничего про приёмы применения множественной диспетчеризации или про функциональное программирование, а только про то как собрать проект. Когда я спрашивал про "не запутаться" имел ввиду, что используя язык, ты при написании когда используешь парадигму программирования этого языка например в Паскале показывают как организовывать код программы в процедуры - это процедурное программирование, в Haskell показывают как организовывать код программы в функции - это функциональное программирование, в Java показывают как организовывать код программы в классы - это объектно-ориентированное программирование + всякие паттерны проектирования и т.д. А в Джулии непонятно...
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Merlin Wizard
ну там нет ничего про приёмы применения множественной диспетчеризации или про функциональное программирование, а только про то как собрать проект. Когда я спрашивал про "не запутаться" имел ввиду, что используя язык, ты при написании когда используешь парадигму программирования этого языка например в Паскале показывают как организовывать код программы в процедуры - это процедурное программирование, в Haskell показывают как организовывать код программы в функции - это функциональное программирование, в Java показывают как организовывать код программы в классы - это объектно-ориентированное программирование + всякие паттерны проектирования и т.д. А в Джулии непонятно...
Там ещё ссылки на то, как именовать модули и организовывать код
источник

ВФ

Виктор Федоров... in Язык программирования Julia / Julia programming language
Евгений Погребняк
Вы наверное в курсе сначала какие-то простые примеры даете, потом это все обрастает? Или они сразу должны разобраться в коде, которые в репо?
Код, который в репо, с ним разбираться не надо. Это просто реализация исполнителя, т.е. робота.

Этот код надо рассматривать, как черный ящик. Надо только ознакомиться с системой команд робота, их всего 8. Это как в Кумире, языке программирования для школьников, есть такой.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Merlin Wizard
ну там нет ничего про приёмы применения множественной диспетчеризации или про функциональное программирование, а только про то как собрать проект. Когда я спрашивал про "не запутаться" имел ввиду, что используя язык, ты при написании когда используешь парадигму программирования этого языка например в Паскале показывают как организовывать код программы в процедуры - это процедурное программирование, в Haskell показывают как организовывать код программы в функции - это функциональное программирование, в Java показывают как организовывать код программы в классы - это объектно-ориентированное программирование + всякие паттерны проектирования и т.д. А в Джулии непонятно...
А еще, есть книга https://www.packtpub.com/product/hands-on-design-patterns-and-best-practices-with-julia/9781838648817

Где-то в чате проскакивала ссылка на неё
источник
2020 October 26

ЕП

Евгений Погребняк... in Язык программирования Julia / Julia programming language
У Pakt репутация трешевой конторы в сфере издательства, может есть какие-,то исключения, но в целом уровень не очень
источник

RS

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

RS

Roman Samarev in Язык программирования Julia / Julia programming language
https://habr.com/ru/post/524368/

Немного квантовых вычислений
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
(Я к этому переводу отношения не имею. Аккаунт не мой)
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
Евгений Погребняк
У Pakt репутация трешевой конторы в сфере издательства, может есть какие-,то исключения, но в целом уровень не очень
Тут надо каждую отдельную книгу брать и смотреть, я несколько приличных видел по Джулии. Наверное, выбрали Пакт, потому что там скорее всего быстрее весь процесс от подачи бумаг до печати
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
А программирование кажется мне везде +- одинаковым.
Сначала человек сидит о чем-то думает, а потом что-то пишет ))

В данном случае сначала думает о типах и об их иерархии
Потом пишет иерархию типов и обвязку к ним в виде функций
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Merlin Wizard
А статическая типизация возможна впринципе? Ну чтобы на этапе компиляции были проверки. Есть какие то средства расширения компилятора? Например в Rust есть возможность писать плагины к компилятору.
Нет, этого нет, потому что вся идеология Джулии построена на JIT. Хотя с другой стороны, так как весь код можно записать как Expression, то наверное можно написать какой-нибудь парсер, который будет пытаться вычислить типы результирующего выражения, но работать это будет скорее всего только в простейших случаях.

Я могу ошибаться, но одна из проблем в том, что в Джулии нельзя построить маппинг между входными и выходными типами, то есть она позволяет писать type unstable функции. Это иногда плохо, иногда хорошо.

function f(i::Int)
 if i == 1
   x = 1
 elseif i == 2
  x = ""
 else
  x = 1.0
 end

return x*x
end


У такой функции нет маппинга между входными и выходными типами. Можно конечно сказать, что на выходе Union{Int, Float64, String}, но это тоже не совсем правильно.

Или можно так
function f()
 if rand() < 2
   x = 1
 else
  x = ""
 end
 
 x * x
end


Формально здесь должен быть Union{Int, String}, но мы то знаем, что выходным типом всегда будет Int.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Что касается расширений языка в виде плагинов, то был проект https://github.com/jrevels/Cassette.jl, но какую-то большую популярность он не набрал.

В целом, макросы + всё, что есть в самой Джулии покрывает 99.9% задач.
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
Кто-нибудь в курсе, почему общий табличный интерфейс в Julia не является абстрактным типом, а просто набором методов, которые надо поддержать? https://juliadata.github.io/Tables.jl/stable/
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
абстрактный тип часто не сработает, например если у меня есть мой тип MyCoolArray <: AbstractArray, и я хочу его сделать ещё и таблицей
да и вообще это типичная практика в джулии, задавать интерфейс трейтом а не абстрактным супертипом
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
вот и в Tables.jl тоже трейты, начиная с Tables.istable()
источник