Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Флейм > haskell


Автор: GrayCardinal 28.3.2009, 14:30
сабж.
Кто юзает, поделитесь впечатлением...

Автор: Lazin 28.3.2009, 15:02
написал как-то утилиту для тестирования, впечатления хорошие

Автор: Void 28.3.2009, 16:02
Пытаюсь использовать для своих любимых околокомпиляторных поделок.

Заранее оговорюсь, что я сравниваю с прочей функциональщиной, а не с Си/Перлом/Питоном и т.д., так что стандартные аргументы за/против ФП в расчёт не берём.
И ещё: говорим Haskell — подразумеваем GHC. Для практического применения больше ни один компилятор не годится. Львиная доля библиотек и программ завязана на фичи GHC.

Плюсы:
— Достаточно универсальное сочетание практичности и академической стройности.
— Активное и компетентное community. Можно сказать, Haskell сейчас — стандартный функциональный язык.
— Как следствие: библиотеки пишут и пишут много. Стандартная поставка GHC тянет на batteries, которые included, больше, чем что-либо ещё из функциональщины, не привязанной к JVM/.NET. Пишут как биндинги, так и теоретически продвинутые вещи.
­— К предыдущему пункту: Cabal и Hackage. Nuff said.
— Компилятор(ы) активно пилят. Вся остальная функциональщина в плане улучшения нативной компиляции сдулась, хотя у OCaml ещё есть фора.

Недостатки непосредственно вытекают из достоинств:
Высокий порог вхождения. Математикам, наверное, проще, но лично я, будучи знакомым с OCaml, въехал в Haskell далеко не с первого захода. Но в последнее время появилось много толковой литературы, особо отмечу http://book.realworldhaskell.org/. Язык «глубокий»: фич много, разница между basic и advanced Haskell большая.
Тут два аспекта: система типов и ленивость. С типами надо перейти от «методом тыка переставляем операторы, чтобы оно хотя бы скомпилировалось» к состоянию, когда система типов помогает выражать мысли. Система типов в Haskell — это альфа и омега. Чтобы успешно писать на Haskell, надо иметь желание как можно больше выразить через типы, наложить как можно больше статических ограничений. Многие такой подход органически не приемлют.
Ленивость — причина стандартных жалоб «я написал программу, обрабатывающую большой файл, оно отжирает всю память и работает полчаса». Аналогично, от расстановки аннотаций строгости методом тыка надо перейти к пониманию, как происходит редукция, и при необходимость форсировать вычисления и использовать императивные возможности.
Имеется некоторая свистопляска с библиотеками. Крупные вещи имеют обыкновение ломаться от major release GHC. К счастью, в основном при компиляции. Обычно фиксят быстро.

Автор: GrayCardinal 28.3.2009, 16:09
Void, 
Большое спасибо за обзор  smile 

Автор: Lazin 28.3.2009, 17:44
Цитата(Void @  28.3.2009,  16:02 Найти цитируемый пост)
«методом тыка переставляем операторы, чтобы оно хотя бы скомпилировалось»

Цитата(Void @  28.3.2009,  16:02 Найти цитируемый пост)
расстановки аннотаций строгости методом тыка

откуда ты знаешь, как я писал свою первую программу на haskell? smile

Добавлено через 1 минуту и 34 секунды
мне кажется, самый большой недостаток haskell - это то, как сложно объяснить PM-у который всю жизнь кодил на basic и delphi, почему ты написал это на хаскеле smile

Добавлено через 2 минуты и 5 секунд
Цитата(Void @  28.3.2009,  16:02 Найти цитируемый пост)
Компилятор(ы) активно пилят. Вся остальная функциональщина в плане улучшения нативной компиляции сдулась, хотя у OCaml ещё есть фора.

а как-же Clean?

Автор: GrayCardinal 28.3.2009, 17:48
Цитата

мне кажется, самый большой недостаток haskell - это то, как сложно объяснить PM-у который всю жизнь кодил на basic и delphi, почему ты написал это на хаскеле

 smile 

Автор: Void 28.3.2009, 18:11
Цитата(Lazin @  28.3.2009,  19:44 Найти цитируемый пост)
откуда ты знаешь, как я писал свою первую программу на haskell? smile

Потому что я сам так писал первое время, и пока не очень далеко ушёл от этого smile
Цитата(Typeclassopedia (The Monad.Reader issue 13))

    There are two keys to an expert Haskell hacker’s wisdom: 1. Understand the
types. 2. Gain a deep intuition for each type class and its relationship to other
type classes, backed up by familiarity with many examples.
    It’s impossible to overstate the importance of the first; the patient student of
type signatures will uncover many profound secrets. Conversely, anyone ignorant
of the types in their code is doomed to eternal uncertainty. “Hmm, it doesn’t com-
pile. . . maybe I’ll stick in an fmap here. . . nope, let’s see. . . maybe I need another
(.) somewhere? . . . um . . . ”

Такова участь большинства изучающих, судя по всему.
Цитата(Lazin @  28.3.2009,  19:44 Найти цитируемый пост)
а как-же Clean? 

Голландцы вроде работают, но последний релиз компилятора трёхлетней давности. Впрочем, я за публикациями особо не слежу, могу ошибаться по поводу их успехов.
Есть информация, что в следующей версии компилятора будет фронтенд для Haskell 98 с возможностью мешать модули на Haskell и Clean.

Автор: NightmareZ 29.3.2009, 05:39
Цитата(Void @  28.3.2009,  18:11 Найти цитируемый пост)
Потому что я сам так писал первое время, и пока не очень далеко ушёл от этого


Я тупенький - значит все вокруг тоже. Отличная жизненная позиция  smile 

Автор: Lazin 29.3.2009, 08:30
Цитата(NightmareZ @  29.3.2009,  05:39 Найти цитируемый пост)
Я тупенький - значит все вокруг тоже. Отличная жизненная позиция
ваша жизненная позиция - ваша проблема, зачем о ней писать на форуме, причем в такой неподходящей для этого теме? smile 

Автор: GrayCardinal 29.3.2009, 16:38
Глянул сырцы... Чёрт ! Это жжжесть smile Сырцы можно открывать, ибо никто всё равно не поймет smile

Автор: Lazin 29.3.2009, 18:40
сорцы чего, если не секрет? smile 

Автор: ksnk 29.3.2009, 18:48
Lazin, достаточно просто самплы  глянуть из документации... Забавно, но синтаксис - будто придумал кто-то, кто слышал краем уха пересказ про С и Дельфи. Уже комментарии заставляют крутить у виска пальцем, не говоря уж о применении опереатора :: 
 smile 

Автор: Lazin 29.3.2009, 18:59
по моему хороший синтаксис... 
просто он заточен под другие задачи, в паскале и си, у нас есть statement-ы, переменные ф-ии и так далее, в хаскеле этого нет, затое есть expression-ы, значения(values) и копозиция функций, вот к примеру if, в обычных ЯП это statement, код либо выполняется либо нет, в зависимости от условия, просто и понятно
в хаскеле это expression, соответственно в хаскеле if возвращает значение, поэтому if не может быть без else, причем результаты выражений после if и после else должны иметь один и то-же тип
в общем, язык просто другой, поэтому и его синтаксис так не похож на обычные ЯП...

Автор: ksnk 29.3.2009, 19:50
Lazin, я не про то, хороший он или плохой, но мне комментарии {- ...  -} - режут глаза, в то время как фигурные скобки в языке очень даже используются. Оператор :: уже давно и достаточно традиционно используется как выборка из объекта/структуры, а совсем не как описание типа. Зачем такие "традиционные" вещи делать "по своему"?
А уж, обозначение конструкта "bottom" вызывает приступы хихиканья, вероятно, у многих знакомящихся с языком...

Автор: Void 29.3.2009, 20:18
Цитата(ksnk @  29.3.2009,  21:50 Найти цитируемый пост)
комментарии {- ...  -} - режут глаза, в то время как фигурные скобки в языке очень даже используются

Один из вариантов обозначения комментариев в Паскале — (* *). Ни разу не слышал, чтобы их кто-то с круглыми скобками путал...
Цитата(ksnk @  29.3.2009,  21:50 Найти цитируемый пост)
Оператор :: уже давно и достаточно традиционно используется как выборка из объекта/структуры

С каких пор использование в C++ (1983) и Perl (1987) стало основанием называть что либо «традицией»? Тем более основные наследники — Java и C# — этот синтаксис не переняли? Синтаксис Haskell восходит к Miranda и Hope (начало 80-х), почему приоритет должен быть у C++?
Цитата(ksnk @  29.3.2009,  21:50 Найти цитируемый пост)
А уж, обозначение конструкта "bottom" вызывает приступы хихиканья, вероятно, у многих знакомящихся с языком... 

_|_ не является синтаксической конструкцией Haskell. Это обозначение из теории типов. Не знаю, кто и когда использовал его впервые, но математикам что, на программистов оглядываться в выборе обозначений?

Добавлено через 2 минуты и 57 секунд
Предъявлять претензии к «не такому» синтаксису — это все равно что обвинять чешский язык в том, что некоторые слова звучат смешно для русского уха. Надо уметь переключать контексты в мозге smile

Автор: krwlr 30.3.2009, 01:50
посты не читала, т.к. вы херню пишете какуюта нипанятную.. и читать мне вас лень.. smile но своё мнение у меня конечно же есть, хаскель - это харашо... всё!! smile 

Автор: GrayCardinal 30.3.2009, 10:44
Цитата

сорцы чего, если не секрет?

Pugs'a  smile

Добавлено через 8 минут и 3 секунды
Цитата

Надо уметь переключать контексты в мозге

 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)