LINUX.ORG.RU

Haskell vs Scala


0

2

Рассматриваю для подробного изучения два этих языка. На определенном уровне уже знаю Scala. Почему сравнение настолько разных языков? Нужен язык с хорошим ФП. Еще есть Clean, Erlang, CL.

Clean - еще молод, но при этом очень похож на Haskell. Шило на мыло.

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

Haskell - пока читал туториалы и прочее, то очень понравился, вообщем все хорошо.

Scala - всем известная Java XXL. Писать просто, удобно. Можна писать в стиле Java, если в задаче много состояния, или в стиле ФП - если так удобнее. Доступны все классы Java. Но... Код очень зависит от code completion, а любой плагин убог, страшен и жруч. Компилятор еще более убог и страшен из-за своей безконечной тормознутости. Простой код компилируется в NetBeans в несколько раз дольше, чем большое веб-приложение на Java. Code completion работает аналогично тормознуто и иногда NB c ним кушает 700 МБ. Самое интерестное, что код на Scala работает быстро. По недавно поступившим данным в Scala кажется настоящие Generics, как в .NET, даже без поддержки от JVM. Пока не проверял

CL - закончим на позитивной ноте. Лисп остается самым нечитаемым ЯП, занимая почетное место между brainfuck и большим неоткоментированным кодом на ассемблере. Унифицированность синтаксиса в стиле «все есть (a b c)» превращает любую более менее большую программу собственно в кучу функций и скобок.

Итак, Haskell vs Scala?

Вопросы в основном заключается в том, стоит ли забить на войну с убогими плагинами Scala? И как Haskell будет решать задачи с большим количеством состояния? Представьте матрицу, по которой бродит алгоритм и определенным образом меняет в ней значения. На Scala такой вопрос даже не возникает, старый добрый императивный ООП в ней никуда не делся

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

> Мне одному при прочтении таких мессаг вспоминается фраза «гусар-одиночка с мотором»? Блин, реализация предполагается сначала на Хаскеле, но делается на Скале, и это - из-за проблемы в библиотеке работы с e-mail. А следующую программу, наверное, напишут на Erlang (потому что модно).

Язык под задачу или задача под язык? :-)

Или это одноразовые программы на выброс?

Нет, это система которая крутится 24х7

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

Байки про нечитаемость лиспа и форта можно слышать достаточно регулярно от людей, которые либо вообще в вопросе ни ухом ни рылом, либо столкнулись по необходимости с неким древним куском кода, написанным каким-то деятелем со схожей квалификацией, плевавшим на поддержку своих творений. Тут надо конечно признать, что помянутые языки дают огромную свободу, и результат свободной деятельности криворучек получается поистине зубодробительный. Потому и остаются такие языки узко нишевыми. Нет, не для избранных, блджад, не надо мне с галёрки подсказывать. Для тех, кто понимает, что к чему. Так же примерно будет и с хаскелем и со скалой. Последнюю кстати попробуй протащи в качестве замены жабке — ага, через полгода уже попросят твой код попроще обратно на жабе переписать. Радости-то будет. :-/

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

>> Мне одному при прочтении таких мессаг вспоминается фраза «гусар-одиночка с мотором»? Блин, реализация предполагается сначала на Хаскеле, но делается на Скале, и это - из-за проблемы в библиотеке работы с e-mail. А следующую программу, наверное, напишут на Erlang (потому что модно).

Язык под задачу или задача под язык? :-)

Доо, язык под задачу - начинаешь на Хаскеле, заканчиваешь на Скале. При том, что рассылку почты можно сделать на десятке языков.

Нет, это система которая крутится 24х7

Походу задача, которую ты решаешь - «поиграть с новыми игрушками».

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

Кхм... 1987 год как бэ. Он старше Хаскеля вообсче-то

Хм. Бывает же, вечно молод. Людям бы так.

Это пройдет.

Вполне может быть

В .NET дженерики существуют на уровне VM, чтоб ты знал. В Скале поддержка дженериков такая же как и в Жаве - заканчивается на уровне компилятора.

Вполне логично что так должно быть. Но было обсуждение на ЛОРе, приводились ссылки в которых говорилось, что в Scala например генерик для Int оптимизируется в примитивный тип

Кстати, а почему F# не упомянут?

Аполитичным быть тоже вредно ;)

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

>Вот потому и думаю. Ведь на Scala можно написать все, а вот а Haskell могут быть велосипеды. Хотя по тому что я пока-что прочитал, то к этому языку у меня большая симпатия. Буду все-таки искать книгу

В принципе, можно писать почти императивно на хаскель. И даже совсем императивно.

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

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

>> Haskell - пока читал туториалы и прочее, то очень понравился, вообщем все хорошо.

Это пройдет.

Доктор, а у меня не проходит. Я умру?

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

>Доктор, а у меня не проходит. Я умру?

И тебя тоже вылечат. И меня вылечат :)

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

>А что мешает асилить оба языка?

Жаба, вестимо. Гораздо интереснее запустить извечную борьбу бобра с ослом и наблюдать это мордобой на -дцати последующих страницах, небрежно лузгая семечки.

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

> А в эклипсе и идее плагины к скале как?

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

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

> Scala не может знать, что ты собираешься сунуть после точки, метод, свойство

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

хотя не, бывает. например тот же ибатис хочет переопределить все геттеры и сеттеры, и тут плуг сливает, т.е. не видит за @BeanProperty гетеров. но это чуть ли не единственное место мной встреченное и это вполне можно запомнить.

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

в Scala например генерик для Int оптимизируется в примитивный тип


в Scala например враппер для Int оптимизируется в примитивный тип

fix

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

>> Доктор, а у меня не проходит. Я умру?

Что касается тебя, то ты умрешь... Однозначно умрешь, рано или поздно, но все равно умрешь, вопрос только для кого ты умрешь и как ты умрешь. Т.к. смерть - это, крути - не крути, дестркутивное деяние, то ты умрешь, в отличие от других, полностью покрытый монадой IO. Т.е. ты будешь лежать мертвый, а на лбу, ну или еще где-то, у тебя будет сидеть жирная монада IO. Или на твоем гробе напишут «liftM $ death Waterlaz» ну или еще какой-то хаскельный некролог. В общем, в отличие от нормальных людей, ты умрешь монадически, т.е. в чистых как роса функциональных мучениях, периодически ленясь встать на горшок, ибо что за ФЯ без ленивости, и заставляя близких выгребать говно из-под своей монады.

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

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

А давайте вспомним Data.Dynamic, или как там его, и ф-ию cast, сводящуюся фактически к unsafeCoerce, т.е. что-то типа static_cast из С++. Говорят, что все деструктивные (грех) вестчи спрятаны в монады, так здесь unsafe-что-то-там без монады (говорю о Data.Dynamic), и даже может свалится в корку!!! О как...

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

>Нелюбовь к лиспу бесконечна. Это творение недостойно ползать по земле.

ты мудак

)))

/thread

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

Оно померло и зарыто под землю. Как оно может ползать?

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

А что мешает асилить оба языка?

вот и мне интересно. с каких пор мнение аналитиков ЛОРа стало актуальней собственногоо опыта?

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

>А давайте вспомним Data.Dynamic, или как там его, и ф-ию cast, сводящуюся фактически к unsafeCoerce, т.е. что-то типа static_cast из С++. Говорят, что все деструктивные (грех) вестчи спрятаны в монады, так здесь unsafe-что-то-там без монады (говорю о Data.Dynamic), и даже может свалится в корку!!! О как...

Бессвязный бред. Ты так ничего и не понял, да? =)

Waterlaz ★★★★★
()

Нужен язык с хорошим ФП. Еще есть Clean, Erlang, CL.

хорошим ФП

CL

Общие лисперы не очень любят ФП - там его хорошего особо и нет. А для вас ФП это что? Чистота? ФВП? Рекурсия? Лямбданутось (λ, прямые аппликации, карринг, частичное-применение, point-free)? Типы, АТД?

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

о, круто, а то я лисп не знаю, руки не дошли пока изучить его ))) пасиб )

dpt-ru
()
Ответ на: комментарий от quasimoto

Может не совсем академично, но я упрощенно отношусь к ФП. В основном это

Рекурсия? Лямбданутось (λ, прямые аппликации, карринг, частичное-применение, point-free)

С такой точки зрения и С# почти ФП. Но это поначалу, я хочу разобраться в новой парадигме и повысить эфективность написания кода для себя. Со всякими Haskell и Scala лезть в ънтерпрайз не буду, потому как начинаются вопросы о поиске других разработчиков, простоте сопровождения, количестве либ (ладно, это со Scala снимается), документации и даже саппорта

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

ФП — это в первую очередь чистые функции, а уже все остальное — следствие.

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

Вроде всё на месте - Functional Programming in Scala. Ну и вся книжка - Programming Scala.

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

В этом смысле, имхо, лучше как раз Haskell. Более чистый и несколько экспериментальный язык. В то время как Scala это некий компромисс - рассчитано на то, что есть доступ к 100500 библиотекам Java, поддержка IDE, типичное ООП, типичные императивные конструкции, акторы и т.п.

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

Use monads, Luke.

Должно помочь? До туда еще не дочитал

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

1) попробуйте, IDEA действительно сильно лучше работает со Scala
2) ну, groovy++ ещё очень молод, но уже сильно перспективен

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