LINUX.ORG.RU

Язык для работы с массивами

 


1

2

Какой язык самый лучший для работы с массивами? Лучший - не с самой производительной реализацией, а в котором лаконичней всего описываются различные операции с массивам: трансформации, итераторы, разнообразные произведения между массивами.

★★★★★

Последнее исправление: ados (всего исправлений: 1)

Ответ на: комментарий от questvimnode

пилю то что хочу

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

По-моему, ты как раз отлично прорекламировал K/Q, где уже больше полувека сначала Иверсон, а теперь Уитни думали, как всё сделать правильно.

Конечно, если тебе кажется, что ты лучше знаешь, то вперёд — но ведь вопрос у ТС был про самый лучший язык для вычислений над массивами, а не про самый лучший язык для написания сомнительной ценности функций для вычислений нам массивами.

anonymous
()
Ответ на: комментарий от nezamudich

Нотация заимствована от математиков же

В математике она, как бы сказать, двухмерная. Вообще, втискивать математическую нотацию в синтаксис ЯП - так себе идея.

в питоне те же яйца, кстати.

В Python есть list comprehensions, да. Но для манипуляций с массивами используется numpy, там вполне обычный синтаксис вызовов.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

ты что, реально не понимаешь разницы между кастомным и захардкоренным поведением, или ты придуриваешься?

questvimnode
()
Ответ на: комментарий от tailgunner
>>> np.fromiter(((x, y, z) for x in np.arange(1, 10) for y in np.arange(1, 10) for z in np.arange(1, 10) if x ** 2 + y ** 2 == z ** 2), dtype = 'i4, i4, i4')
array([(3, 4, 5), (4, 3, 5)], 
      dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<i4')])

Вполне себе по-numpy'ному. В алгоритмах так не попишешь, конечно, но в инженерных расчётах очень даже ОК.

То же самое касается и Haskell. В рабочем коде, а не в расчётных скриптах, list comprehensions пролетают мимо.

nezamudich ★★
()
Ответ на: комментарий от amaora

Да чо вы присосались так к матлабу, в матлабовском языке только матрицы делить удобно, потому что для этого сделали несколько разных операторов и функций. На этом удобство заканчивается.

nezamudich ★★
()
Ответ на: комментарий от nezamudich

Вполне себе по-numpy'ному

Так можно, но никто (или почти никто) так не пишет - во-первых, для многомерных массивов неудобно, во-вторых, медленно.

tailgunner ★★★★★
()

Ну, кстати, поддержу Miguel в позиции «за Haskell», только не в сторону list comprehensions, а в просто list-монаду:

powerset :: [a] -> [[a]]
powerset = filterM (const [True, False])

Это знаменитый пример, который делает то, о чём можно догадаться из названия функции:

Prelude Control.Monad> powerset [3, 8, 1]
[[3,8,1],[3,8],[3,1],[3],[8,1],[8],[1],[]]
nezamudich ★★
()
Ответ на: комментарий от nezamudich

только не в сторону list comprehensions, а в просто list-монаду

Пребываю в заблуждении, что лист компрехеншенс это просто сахар над дунотационным лист-монадным кодом, в который он разворачивается, с гуардами и <-

ЗЫ и предложения иммутабельных ленивых списков, когда ТС говорил о мутабельных строгих массивах - это смешно. Понятно, что мутабле вектор еще туда-сюда... Но массивы - это по умолчанию мутабельная строгая структура данных, гарантирующая доступ к любому элементу по числовому индексу за О(1). А ленивые хаскельные списки больше из области контрол флоу, чем дата.

Ivana
()
Ответ на: комментарий от tailgunner

думаю, на порядок-два.

Не, мой вопрос был о том, как именно делать правильно. Сравнение производительностей я сам сделаю — было бы что сравнивать.

nezamudich ★★
()
Последнее исправление: nezamudich (всего исправлений: 1)

Обрати своё внимание на вольфрам математику. Не мой идеал, но работа сотвсякими спанами/слайсами чисто синтаксически сделана _крайне_ удобно, ну и в наличии всё, что может понадобиться: от dot- до kroneker- product, лямбды и разные сорта map'ов и reduce'ов, сортировки, фильтры, поэлементное действие у многих функций по умолчанию(но можно отключить, убрав соответствующий аттрибут) - всё в лучшем виде. ИМХО, удобнее матлаба.

anonymous
()

всяк кулик свое болото хвалит

dave ★★★★★
()
Ответ на: комментарий от WRG

буду оригинален: Tcl

там array — это hash

anonymous
()

Swift уже предлагали?

Deleted
()

для части задач halide не плох, например.

qnikst ★★★★★
()
Ответ на: комментарий от Miguel

ну офигеть теперь, генераторы. это так-то фишкой хацкиля не является

anonymous
()

Самый лаконичный - тот, который в букварях по векторной, матричной и т.д. алгебре. В него вложено больше всего человеко-лет. Он же - самый универсальный. Устройства для использования - голова и бумажка с ручкой. (Голова, кмк, самый быстрый прибор, кроме расчетных задач.) В разных прогах - его разные подмножества, все урезанные в чем-то.

Прога, которую мне хотелось бы найти - для ускорения набивания инфы в башку.

anonymous
()

Только не педон! Что угодно, но не педон!

anonymous
()
Ответ на: комментарий от zaban

лаконичность требует жертв!

Для плюсов есть туева хуча либ, почти столь же лаконичных. Матлабья тормознутость слишком большая жертва для любой лакончиности - там разница с плюсами на порядки выходит.

AIv ★★★★★
()
Ответ на: комментарий от tailgunner

В математике она, как бы сказать, двухмерная.

В смысле? Например тензорное исчисление ... О_О??

Но для манипуляций с массивами используется numpy, там вполне обычный синтаксис вызовов.

Это смотря с какими массивами. Ну и там же поддеживается вся эта фигня, типа A=B+C*D где A, B, C, D - массивы?

AIv ★★★★★
()
Ответ на: комментарий от AIv

утром может бы и согласился,
но сегодня нужно было «срочно» посмотреть график (посчитать) I0(f(x)),
где I0 - Модифицированные функции Бесселя первого рода.
далее история окутана тайнами...
p.s. хоть и тормознутая, но со своими мелкими задачами справляется.

zaban
()
Ответ на: комментарий от zaban

Не поручучь, но что то мне подсказывает что для плюсов есть либа с бесселем.

ну и вообще то gnuplot умеет бесселя из коробки.

AIv ★★★★★
()
Ответ на: комментарий от AIv

gsl умеет.
но сколько писанины... ради «посмотреть»?
посмотрел.
а потом добавил в плюсы.
гнуплот не люблю.

zaban
()
Ответ на: комментарий от zaban

Это безусловно, с этим спорить невозможно;-)

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.