5 типичных ошибок, которые часто допускают разработчики Julia.

введение

При выборе нового языка программирования также вполне возможно наловчиться на некоторых плохих практиках. Когда вы начинаете новый язык, может быть трудно знать соглашения этого языка, и иногда это может привести к некоторым ошибкам, которые в ретроспективе покажутся очень глупыми. Таким образом, Julia ничем не отличается, однако с языком программирования Julia все это усугубляется тем фактом, что язык действительно мал, а соглашения также не так хорошо распространены.

В результате вещи часто могут быть написаны таким образом, что их можно легко улучшить, даже не осознавая этого. К счастью, противодействие такого рода проблемам — это просто больше практики и лучшее изучение языка. После многих лет использования Джулии у меня появилось несколько вещей, которые я в какой-то момент делал неправильно, и сегодня я решил поделиться некоторыми!

один и тот же метод дважды

Распространенной ошибкой, которую относительно легко распознать, является использование одного и того же метода дважды. На первый взгляд это может показаться глупым и трудным, но когда я говорю «один и тот же метод дважды», я хочу прояснить, что имею в виду не только двукратное повторение одного и того же метода. Всякий раз, когда один и тот же метод написан дважды в Джулии, метод просто написан — в некоторых случаях это также может нарушить предварительную компиляцию. Хотя, безусловно, нехорошо писать две одинаковые вещи подряд, и это, безусловно, ошибка, которая может произойти, также возможно сделать это гораздо менее очевидно.

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

add_these(vec1::Vector{Float64}, vec2::Vector{Float64}) = begin

end

add_these(vec1::Vector{Int64}, vec2::Vector{Int64}) = begin

end

Обе эти функции, вероятно, делают примерно одно и то же. Однако, обладая надлежащим знанием диспетчеризации, мы можем полностью избежать этой проблемы, используя абстрактные типы для определения того, какие типы входят в какие функции. В Джулии я нахожу это обычно довольно эффективным. Тем не менее, есть некоторые полезные предварительные знания, особенно когда дело доходит до отправки…