Информация об изменениях

Сообщение Re[4]: Julia - holy grail! от 12.12.2019 14:03

Изменено 12.12.2019 22:52 novitk

Re[4]: Julia - holy grail!
Здравствуйте, Буравчик, Вы писали:

Б>Не думаю, что наличие макросов и мультиметодов сами по себе дадут существенное улучшение в производительности программиста.

Не утверждаю, что производительность на J будет лучше чем на Py, скорее что она будет не хуже.

Что до мултиметодов, то я очень люблю единые и разделенные подходы, которые мы сейчас имеем например в Хаскеле, Ерланге и Clojure. Есть данные, есть функции — все. В Питоне и прочих гибридах все намешано из за того, что единственный удобный adhoc полиморфизм это single-dispatch. В результате в Питоне нужно все время думать как запихнуть модель в это прокрустово ложе и очень часто этот выбор достаточно субъективен и может быть не оптимален по мере эволюции кода или не работать вообще, то есть требовать multi-dispatch, который красиво просто не сделать.

Б>Скорее, они будут использоваться для создания удобных библиотек. Т.е. библитеки должны уметь то же, что и питон, причем стать еще более удобными из-за макросов и мультиметодов. И когда это будет?

Я не вижу причин почему это не будет. Clojure например уже имеет библиотеки в некоторых областях лучше питона.

Б>Про numba не знаю, не использовал пока. Есть пример сложного кода, с которым numba не работает?

numba оптимизирует нижние функции индивидуально, это такой локальный pypy. Если внутри типы выводятся и ничего внешнего о чем она не знает не вызывается — ок. Нет? досвидос.

N>>В показательном комментарии имхо написан бред. Вот тебе показательные примеры:

Б>С чем ты не согласен?
С тем, что создание dataflow graphs очень удобно делать на Py, а на J почему-то нет. На самом деле Питон довольно средний язык для создания внутренних DSL. Лучше конечно Java, но по сравнению например со Скалой все очень плохо. Например макросы в этом деле сильно помогают. В качестве показательного примера сравни pandаs, в котором на каждый чих надо смотреть stackoverflow, и LINQ, который прост и понятен. Если что, в J linq это завезли:
https://github.com/JuliaData/DataFramesMeta.jl/blob/master/src/linqmacro.jl
Re[4]: Julia - holy grail!
Здравствуйте, Буравчик, Вы писали:

Б>Не думаю, что наличие макросов и мультиметодов сами по себе дадут существенное улучшение в производительности программиста.

Не утверждаю, что производительность на J будет лучше чем на Py, скорее что она будет не хуже.

Что до мултиметодов, то я очень люблю единые и разделенные подходы, которые мы сейчас имеем например в Хаскеле, Ерланге и Clojure. Есть данные, есть функции — все. В Питоне и прочих гибридах все намешано из за того, что единственный удобный adhoc полиморфизм это single-dispatch. В результате в Питоне нужно все время думать как запихнуть модель в это прокрустово ложе и очень часто этот выбор достаточно субъективен и может быть не оптимален по мере эволюции кода или не работать вообще, то есть требовать multi-dispatch, который красиво просто не сделать.

Б>Скорее, они будут использоваться для создания удобных библиотек. Т.е. библитеки должны уметь то же, что и питон, причем стать еще более удобными из-за макросов и мультиметодов. И когда это будет?

Я не вижу причин почему это не будет. Clojure например уже имеет библиотеки в некоторых областях лучше питона.

Б>Про numba не знаю, не использовал пока. Есть пример сложного кода, с которым numba не работает?

numba оптимизирует нижние функции индивидуально, это такой локальный pypy. Если внутри типы выводятся и ничего внешнего о чем она не знает не вызывается — ок. Нет? досвидос.

N>>В показательном комментарии имхо написан бред. Вот тебе показательные примеры:

Б>С чем ты не согласен?
С тем, что создание dataflow graphs очень удобно делать на Py, а на J почему-то нет. На самом деле Питон довольно средний язык для создания внутренних DSL. Лучше конечно чем Java, но по сравнению например со Скалой все очень плохо. Например макросы в этом деле сильно помогают. В качестве показательного примера сравни pandаs, в котором на каждый чих надо смотреть stackoverflow, и LINQ, который прост и понятен. Если что, в J linq это завезли:
https://github.com/JuliaData/DataFramesMeta.jl/blob/master/src/linqmacro.jl