LINUX.ORG.RU
ФорумTalks

[Haskell] Origin со скриптами на Хаскелле

 


0

0

А существует что-то вроде сабжа? Сея бредовая идея пришла к мне в голову после длительного использования ghci в качестве программируемого калькулятора. Я видел несколько открытых проектов, имеющих целью предоставить линуксоидам функционал подобный Origin или Matlab. Все они любят Python. Я не готов обсуждать достоинства питона как языка программирования, но Haskell в обработке чисел кажется уместнее (не напрягающая строгая типизация, параметрический полиморфизм, потенциал для неявного параллелизма). В то же время основные недостатки Хаскелля в данном случае не значительны: чистота функций в математической обработке данных это практически норма жизни, ввода-вывода мало. Да и целевая аудитория программ такого класса (учёные мужи и неучёные студенты) должна без проблем осилить Хаскелл (хотя бы ту часть где нет монад :^)).

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

OriginLab - проприетарный пакет для обработки и визуализации экспериментальных данных (по крайней мере для этого чаще всего используется). Расширяем.

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

хз, может быть и та (http://en.wikipedia.org/wiki/Origin_%28software%29), но что-то подозрительная она. По теме скажу, что искал CAD на хаскелле, но нашел только некоторые библиотеки математические. Обычно пользую ручную связку хаскелл+гнуплот.

yet_another_lor_account
()

А что собственно нужно? Статистическая обработка + визуализация? Язык хорош, но с библиотеками наблюдается разброд и шатания.

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

Я видел привязки Хаскелля к Qt. К gsl тоже вроде есть. С другой стороны того что есть ghci искоропки для написания плагинов класса «посчитать касательную к этому ряду экспериментальных данных в этой точке» или «экстраполировать карту звёздного неба экспонентой». А гуй и графопостроитель можно и на Qt написать.

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

Мне как человеку далёкому от инженерии так и не смогли объяснить что такое CAD, что он делает и для чего нужен. А вот обработка экспериментальных данных мне худо бедно ясна. И связка голый интерпретатор + гнуплот + редактирование данных в vim'е мне кажется слишком брутальной.

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

Подтверждаю, привязки к gsl & LAPACK есть. Только сегодня использовал. Всё равно для полноценной обработки многого не хватает, и приходится писать самому... Библиотеки немного сыроваты и приходится лезть в исхожники...

Я так вот брутально и работаю: emacs & ghc[i] & gnuplot/ROOT. Наборы данных у меня большие, поэтому только компиляция, иначе не хватит производительности.

Shimuuar
()

> основные недостатки Хаскелля в данном случае не значительны: чистота функций в математической обработке данных это практически норма жизни

Как показывает практика, в математической обработке экспериментальных данных важна не столько чистота функций, сколько мощность числодробилки. Поэтому в данной области Пайтон за счёт pyCUDA обладает ощутимым преимуществом перед Хаскеллом (ибо в последнем проект по связке с CUDA стабильно анабиозен).

Ну а преимущество Matlab/Octave перед „голым“ ghci — в наличии массы функций, уже написанных под конкретные задачи (численное интегрирование, нелинейная оптимизация, сплайны &c).

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

Если речь заходит о CUDA, то тут можно забыть о чём либо кроме C вообще. Более того если ты способен написать ядро на CUDA которое будет заниматься счётом, а не банк-конфликтами, то написать ещё с дюжину строк на том же C для предоставления данных в няшной форме тебе не проблема. И да, при всём вышеперечисленном ты не учёный муж или неучёный студент (если речь не идёт о ВМиК, конечно). Вообще речь шла о продукте для немного другой ниши. А функции можно и написать, благо в краткости изложения алгоритмов с Хаскеллем тягаться сложно. К слову, где можно посмотреть на pyCUDA и на то как на ней пишут?

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

> при всём вышеперечисленном ты не учёный муж или неучёный студент

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

где можно посмотреть на pyCUDA и на то как на ней пишут?

http://pypi.python.org/pypi/pycuda http://documen.tician.de/pycuda/

ВМиК

В компьютерной алгебре, естественно, функциональные языки решают. Но тогда непонятно, причём тут Matlab и Origin.

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

http://pypi.python.org/pypi/pycuda http://documen.tician.de/pycuda/

FUUUUUUUUUUUUUUUUUUUUUUUUUUU

В компьютерной алгебре, естественно, функциональные языки решают.

Речь идёт не о компьютерной алгебре, а о примитивной обработке результатов, которую лет десять назад проводили при помощи калькулятора, а 20 лет назад вырезая из спектров пики и взвешивая их на весах.

KblCb ★★★★★
() автор топика
Ответ на: комментарий от k336184
import pycuda.autoinit
import pycuda.driver as drv
import numpy

from pycuda.compiler import SourceModule
mod = SourceModule("""
__global__ void multiply_them(float *dest, float *a, float *b)
{
  const int i = threadIdx.x;
  dest[i] = a[i] * b[i];
}
""")

multiply_them = mod.get_function("multiply_them")

a = numpy.random.randn(400).astype(numpy.float32)
b = numpy.random.randn(400).astype(numpy.float32)

dest = numpy.zeros_like(a)
multiply_them(
        drv.Out(dest), drv.In(a), drv.In(b),
        block=(400,1,1))

print dest-a*b

FUUUUUUUUUUUUUUUUUUUUUUUUUUU

В компьютерной алгебре, естественно, функциональные языки решают.

Речь идёт не о компьютерной алгебре, а о примитивной обработке результатов, которую лет десять назад проводили при помощи калькулятора, а 20 лет назад вырезая из спектров пики и взвешивая их на весах.

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