LINUX.ORG.RU
ФорумTalks

Glasgow Haskell Compiler 7.6.3

 , ,


0

3

21 апреля вышло минорное обновление GHC 7.6.3 — одного из самых мощных и развитых на сегодняшний день компиляторов функционального языка программирования Haskell, который разрабатывается свободной рабочей группой из многочисленных разработчиков, собранных по всему миру и координируемых из лаборатории университета Глазго. Релиз включает в себя только исправления багов.

Подробности

★★★★★

чота как-то *slow... уже с неделю в оверлее и с пятницы на нём сижу.

qnikst ★★★★★
()

Как может быть полезен Haskell в задачах математической физики?
Например, какие математические задачи с помощью него легко решаются? Есть ли на нём реализованные системы символьных вычислений?

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

Как может быть полезен Haskell в задачах математической физики?

При желании можно использовать, хотя особых преимуществ по сравнению с C++/CUDA + LAPACK + thrust я не заметил. Думаю, стоит обратить внимание на пакет repa.

Есть ли на нём реализованные системы символьных вычислений?

Была одна. Вроде не шевелится.

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

Как может быть полезен Haskell в задачах математической физики?

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

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

Например, какие математические задачи с помощью него легко решаются?

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

Для матфизики скорее важны библиотеки и возможность байтоложества, а не выразительная сила языка.

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

Ну а что-нибудь вне хаскелля? А то прям получается хаскелль супер пупер язык для решения проблем самого хаскелля

pylin ★★★★★
()

свободной рабочей группой

Это как?

provaton ★★★★★
()

О боги, Годзилла шевелится!

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

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

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

Это не троллинг, а факт. Задачи математический физики и функциональное программирование не совместимы. Это я тебе как к.ф.м.н. по специальности 01.01.07 (вычислительная математика) говорю. А если тебе не нравится слышать от меня факты, можешь заигнорить, разрешаю.

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

Допустим хотя и опять на убийцу не тянет, тайловых WM с куда большим сообществом можно привести минимум 2-3.

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

Это лишь строительные блоки, а готовые приложения на нем есть? Ведь это есть вполне объективный показатель «убийственности»

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

факт, в том, что ты не знаешь haskell и его возможностей. А про к.ф.м.н. через полтора года поговорим, когда этот пункт не будет выгодно отличать тебя от меня :P.

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

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

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

Я в PR-отделе haskell не состою, денег за рекламу на ЛОРе мне не платят. Ссылку на список большей части приложений я вам дал, дальше судите сами.

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

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

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

При этом haskell не вносит никаких фундаментальных ограничений

Не вносит, но вынуждает танцевать с бубном.

а так же позволяет использовать нативные либы

А зачем тогда хаскель?

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

Мне кажется, что сейчас самое крутое сообщество у xmonad как раз, на втором месте awesome.

Но полностью согласен, что на «убийцу» не тянет.

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

Вот если бы accelerate довели до вменяемого состояния, может и появился бы смысл писать численные методы на haskell. Но этого не произойдёт никогда, поскольку там внутри Содом и Гоморра, проще всё выкинуть и написать заново.

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

haskell в численных методах можно использовать, но не на прямую. Численная программа обычно состоит из однотипных портянок на фортране/си/куде ... так вот, на хаскеле их можно было бы генерить, описывая алгоритмы каким-либо более простым высокоуровневым способом.

Я когда-то такое на схеме писал :)

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

Не вносит, но вынуждает танцевать с бубном.

Не могу согласиться, если понимаешь что делаешь и зачем, то все просто.

А зачем тогда хаскель?

затем же зачем и яву в тех же задачах рассеяния пользуют - быстрое прототипирование, простой hi-level, при этом низкоуровневые алгоритмы дергать из написанных либ, та же фигня что и с сями + почти теже накладные расходы. Т.е. написать автомат для решения диффуров (matlab-style) мне сильно приятнее на haskell.

Я бы ещё мог поговорить про fusion, dph, accelerate, но я их не умею.

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

Но этого не произойдёт никогда, поскольку там внутри Содом и Гоморра, проще всё выкинуть и написать заново.

в accelerate?

ну и он так же как и прочие вычисления на GPU подходит лишь для подкласса задач.

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

так вот, на хаскеле их можно было бы генерить, описывая алгоритмы каким-либо более простым высокоуровневым способом.

accelerate как раз и пример такого подхода. Но эта библиотека написана просто отвратительно, более сильной связности кода я не видел.

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

ну и он так же как и прочие вычисления на GPU

В принципе, там можно сделать и CPU backend. Но поскольку accelerate копирует Prelude, это не особо-то и нужно.

dmfd
()
Последнее исправление: dmfd (всего исправлений: 1)
Ответ на: комментарий от dmfd

это совсем не нужно. А я говорил к тому, что не все алгоритмы хорошо ложатся на gpu, часть нужно доводить руками, напр. объединяя много независимых блоков в одну gpu операцию и обучить этому ЯП было бы круто, а для части не сделать ничего (ну или пока не известно что). Само accelerate я почти не трогал, проверил, что gpu работает и забил.

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

А я говорил к тому, что не все алгоритмы хорошо ложатся на gpu

Внутри accelerate заквазицитированы прототипы CUDA-ядер, реализующие векторные операции, они написаны GPU-friendly образом (хорошо ложатся на GPU). Это хорошая идея. В прототипы этих ядер подставляется код на haskell, полученный заменой всех операторов на аналоги, генерирующие AST. Это плохая идея. Полученное ядро на каждый вызов pretty-принтится и компилируется. Это отвратительная идея.

dmfd
()
Последнее исправление: dmfd (всего исправлений: 1)
Ответ на: комментарий от dmfd

Внутри accelerate заквазицитированы прототипы CUDA-ядер, реализующие векторные операции, они написаны GPU-friendly образом (хорошо ложатся на GPU).

(хорошо ложатся на GPU).

только в случае достаточного размера.

с остальной частью поста согласен.

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

чтобы вернуть разговор в нормальное русло. В целом нужно смотреть на компромисы надо идти и какие проблемы вносит RTS haskell. Во-первых это Boxed типы их наличие дает возможность собирать их GC и делать отложенные вычисления, но разносит значения в памяти и добавляет пару тактов на их получение, в целом это не страшно учитывая анализатор строгости, и то, что реально многие переменные сделаются unboxed (unlifted) при этом компилятор их может удобно раскидать по регистрам, во-вторях это то, что целочисленные переменные хранятся в 32bit/64bit в зависимости от разрядности, несмотря на реальный размер, итого, чтобы сделать сжатый массив short-ов, нужно немного попрыгать, а иногда это важно, в-третьих это concurrency модель, которая позволяет дешево запускать кучу конкуретных тредов и спарков, но при этом вносит под вес в случае однопоточной программы в которой надо вычислять всё (я пока не знаю можно ли это преодолеть), в-четвертых это GC сильно ухудшающее жизнь, периодически всплывают статьи о region-based подходах типизированной мапяти, но пока полноценнго production ready подхода нет. Бонусы: возможности fusion (работа над массивами без фактического их создания), dph (только в GHC-HEAD) позволяющее распараллеливать мелкие операции, parallel-strategies - неявный параллелизм, удобные библиотеки типа vector-space. Соответственно писать численные методы можно только нужно сразу выделить для себя чем и за что придется платить и решить стоит ли оно того, вопрос неочевидный и сильно зависит от решаемой задачи.

Замечу, что все вышеперечисленное совершенно ортогонально проблемы мутабельности - иммутабельности, и это являлось причиной моего первого комментария тебе.

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

qnikst, dmfd, Reset вы как-то не так поставили вопрос. Черт с ней, со скоростью, вменяемой скорости можно почти в любом языке добиться, примеры Self и LuaJIT вам в помощь. Вопрос должен стоять так: «Какие идиомы в Haskell помогут мне существенно упростить разработку программ численного моделирования (и даже конкретно в матфизике)?»

Это как любимый пример хаскелистов — квиксорт. Тут тоже нужно привести код (портянку) на сишечке/фортране/аде/чем-то еще и соответствующий элегантный (и, возможно, более компактный, читабельный и выразительный) код на хаскеле.

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

мы отвечали на вопрос можно ли писать на haskell программы для математической физики, и на аргумент, что нельзя т.к. иммутабельность.

Если бы вопрос изначально стоял так, как ты его поставил, то я бы предпочел в него не ввязываться, т.к. он подразумевает выяснение технического background-а человека и опыта его работы с другими ЯП и задачами, и в 90% случаев привел бы к тупому холивару. К тому же все примеры, что приводятся в таких спорах это разные helloworld-ы без оценки проблем их использования в масштабном проекте и интерес в них только сказать, что оппонент не прав приводя этот пример и дождаться комментариев людей знающих язык, которые объяснят что в примере не так :)

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

Естественно, я имел ввиду низкоуровневые алгоритмы, частично реализованные в таких библиотеках как blas и lapack.

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

разработку программ численного моделирования

Именно разработку. То есть, вывод/подбор формул.
Чем может помочь Haskell для символьных вычислений? (не числодробилок) Например, при выводе формул в рамках общей теории относительности.

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

ну в этом случае я не вижу смысла не использовать blas, lapack, goto, scalapack, (сюда же можно довить ускоспецилизированные либы) а делать что-то свое. Весь вопрос в клее вокруг этих вызовов и всяких операциях этими библиотеками не покрывающимися.

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

Вопрос не ко мне, я не евангелист хаскеля :)

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

Например, при выводе формул в рамках общей теории относительности.

Для этого есть cadabra. Правда я с ней толком не разбирался, поскольку число аналитических решений в ОТО можно пересчитать по пальцам, связности для них проще найти в книжках, а всё остальное сделать на бумажке.

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

Кто-то говорит, что для веба Yesod все очень любят.

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

Это я тебе как к.ф.м.н. по специальности 01.01.07 (вычислительная математика) говорю

Для таких заявлений, если уж давите авторитетом, надо бы еще и PhD в Computer Science добавить :)

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

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

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

Чем может помочь Haskell для символьных вычислений?

Близко к теме: погугли «автоматическое дифференцирование» для Haskell.

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