LINUX.ORG.RU

Сравнение Haskell и Scala

 , , ,


0

7

Уважаемые форумчане, набившие руку в том и другом, отметьте в этом топике, что есть и чего не хватает вам для полного счастья в том и другом ЯП.

Исходя из раздобытой мной информации, я пока что склонен полагать Haskell эталонным по количеству фич ЯП с функциональным подходом. Но так ли они удобны на самом деле? С другой стороны, можно ли оставаться в Scala в рамках функциональной парадигмы?

Вот вроде бы и все, если я понятно изложил свои мысли.

Всем спасибо )

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

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

У вас больше общего, чем тебе кажется:
fsharp, scala, паленый мед
gentoo, haskell, паленый мед

:P

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

зачем нужен хаскель, когда есть скала?

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

  • качественный компилятор, быстрые бинарники;
  • чистый функциональный
  • ADT, тайпклассы
  • ленивость из коробки

а вообще мне больше нравится окамл)

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

качественный компилятор, быстрые бинарники;

performance-critical никто на хаскеле не пишет. За скоростью все равно пойдешь в C или C++

ADT, тайпклассы

в скале это есть

чистый функциональный
ленивость из коробки

в чем преимущества?

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

performance-critical никто на хаскеле не пишет.

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

в чем преимущества?

объективных критериев ты от меня не получишь) у меня синдром утенка SML->Caml->Haskell.

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

Напиши на скале модуль ядра.

зачем? жонглировать байтами удобнее в си.

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

вот прям таки никто и не пишет... ух.

если считать курс на курсере достаточным для знакомства со скалой, с чем я не согласен, то скала выглядит тормозящим, неудобным куском отходов жизнедеятельности, где для элементарных вещей надо городить костыли. А называть case classes ADT ну да.. можно конечно... а тайпклассы это небось интерфейсы, так?

qnikst ★★★★★
()

Ты наверное думаешь, как и многие, что программирование делится на ООП-щину и функциональщину, и что в ООП-щине самая-самая лучшая Java, а в функциональщине самый-самый крутой Haskell, да?

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

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

а тайпклассы это небось интерфейсы

Для тайпклассов там имлисыты. Есть даже статья у Одерского на эту тему. Точно не помню, но кажется даже утверждается, что имплисыты Scala богаче и позволяют больше, чем тайпклассы Haskell. Так вот.

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

Я знаю, что и на Java можно писать в ФП стиле и на Borland Pascal (очень мне понравился в свое время процедурный тип), но лучше иметь специально заточенный инструмент.

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

может быть.. не знаю.. у меня к счатью нет необходимости сталкиваться со скалой, если придётся разберусь :) В общем-то я не вижу ни одной причины, по которой может быть нужно с ней столкнуться, кроме завязки на какие-нибудь явабиблиотеки требуемые задачей.

qnikst ★★★★★
()

Не скажу что я набил руку на Haskell, воспринимайте как хотите. В хаскелле исключительно исходя их упоротой религиозной догмы о том что все проблемы от сайд-эффектов мы производим громадные телодвижения чтобы обойти ту палку которую мы сами себе в колеса вставили. Это религия, просто знамя под которым становятся некоторые индивидуумы и защищают его на всех форумах. Но ROI честно говоря не большой от этих мук. Из всех проблем программного обеспечения выбрали одну - неконтролируемые изменяемое состояние и «решили» ее, заметая под ковер веником за миллион баксов. Да, на хаскелле можно писать продакшн код. И с ножом в ноге тоже можно писать продакшн код.

Для Scala просто взяли платформу с наивысшим коэффициентом успешности решения задачи - JVM, взяли некоторые хорошие вещи, пофиксили плохие, которые смогли. Вот то, что они не смогли мне как раз не хватает - нормальных generics, меньше засорения памяти. Ну и вообщем утилиты, компиляторы и т.д. оставляют желать лучшего. SBT - ночной мрак на крыльях ада. Компилятор - тормозит. Родные Scala фреймворки в основном тоже УГ, что lift, что play. Scalaz - «давайте сделаем Scala более нечитабельной, и будем решать хаскеллевскими методами проблемы в Scala, хоть этих проблем и нет»

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 5)
Ответ на: комментарий от x4DA

Вопрос можно было поставить иначе:

зачем нужна Scala, когда есть Haskell?

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

в скале это есть

С нечитаемым синтаксисом и того и другого.

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

реификации требуешь?

Требую сатисфакции.

Если по делу, то хотя бы что-то. Хотя можно делать через Classtag, но достал боксинг примитивных типов. Да и вообще носить с собой ClassTags тоже как то геморно

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

продакшн код

Перед такими вот сообщениями пиши в заголовке большими буквами: «Я ДЕЛАЮ САЙТЫ», потому что твоим болотцем мир не ограничивается.

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

Из всех проблем программного обеспечения выбрали одну - неконтролируемые изменяемое состояние и «решили» ее, заметая под ковер веником за миллион баксов

мутабельное состояние это не просто сферическая проблема в вакууме, оно мешает генерализации выражений (man value restriction) и хз как взаимодействует с более продвинутыми фичами системы типов. Не говоря уж о том, что делать IO в ленивом языке без монад это убицца веником. Так что чистота хаскелля это скорее необходимость.

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

Не говоря уж о том, что делать IO в ленивом языке без монад это убицца веником

в ленивом языке

чистота хаскелля

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

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

Зато она на JVM

так это скорее недостаток, обещания светлого будущего когда VM обгонят нативный код по производительности не сбылись, портабельность на уровне байткода нафиг никому не вперлась, и в обслуживании это отдельная экосистема, в то время как нативно компилируемые ЯП нормально вписываются в остальное окружение ОС.

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

associated types в скале есть?

Не сталкивался. Да, и вообще, перегибы статики, которыми изобилует Haskell, я терпеть не могу.

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

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

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

Ну ты просто хаскеле-фанатик с промытыми мозгами, который решает несуществующие проблемы костылями, что непонятного-то?

Никаких проблем в скале нет - рабочий вывод типов не нужен, хвостовая рекурсия не нужна, разделение чистых и «грязных» функций не нужно, абстракции не нужны. Все работает!

Доберись до L3 сначала, потом уже критикуй!

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

Ну ты просто хаскеле-фанатик с промытыми мозгами, который решает несуществующие проблемы костылями, что непонятного-то?

да именно так и есть, спасибо.

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

Правильно, а в монадном стеке, когда @tailrec не поможет, можно просто переизобрести трамплин ручками. Ни одного костыля в языке нет, все удобно и практично, ведь под скалой JVM!

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

performance-critical никто на хаскеле не пишет. За скоростью все равно пойдешь в C или C++

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

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

Родные Scala фреймворки в основном тоже УГ, что lift, что play.

Как раз смотрю сейчас на play. lift хуже/лучше? Какие есть альтернативы? Вообще, мне надо только http с тред-пулом и поддержкой стриминга. Шаблоны, сервлеты и прочий бред не нужны.

Reset ★★★★★
()

Уважаемые форумчане, набившие руку в том и другом

Уважаемые форумчане

набившие руку в том и другом


Тонко призвал хаскель-, скала-дрочеров.

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

можно ли оставаться в Scala в рамках функциональной парадигмы?

Как-то избирательно ты подходишь к сбору информации. Завсегдатай лора должен знать, что Скала это напичканный всевозможными фичами убер-комбайн, и никаких рамок касаемо используемых парадигм там нет. И то только потому, что не успели, видимо, еще добавить ;-).

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

Не скажу что я набил руку на Haskell, воспринимайте как хотите.

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

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

не знаю как в shell, но в других prompt-ах уже очень давно починено.

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

Ты сам с собой, чтоли, разговариваешь?

Не видел модулей ни на скале, ни на хаскеле, да и не нужно это.

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

Не сталкивался. Да, и вообще, перегибы статики, которыми изобилует Haskell, я терпеть не могу.

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

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

кстати, причины неочевидны.

расход памяти?

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

Да, и вообще, перегибы статики

Вы из тех кто верует в первородство динамики? (на всякий случай уточню, что речь об экзотике не идет, ограничимся x86 etc.)

Динамика может быть реализована как интерпретирующий модуль. Другое дело сложно сделать это удобно. А вот наоборот не получится: все равно образ вм таскать придется.

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

портабельность на уровне байткода нафиг никому не вперлась

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

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

Вполне даже очевидны. Расходы в первую очередь, во вторую - там свой мир, ты когда то видел тот десктоп что в sun на java был написан (не знаю как сейчас...), но выглядел он как гавно, это конечно от части проблема java (но очень даже характерная), тут соглашусь, работал как гавно, я о ожидании отклика, это очевидная проблема java, и интеграция со всякими gtk/qt была как гавно, это так же очевидная проблема java.

paranormal ★★
()
Последнее исправление: paranormal (всего исправлений: 2)
Ответ на: комментарий от Reset

Если сравнивать play и lift, то play - набор антипаттернов, lift - набор несвязанных с друг другом переусложненных подходов и странно названных классов и методов. В вашей задаче проще взять какую-то scalatra/circumflex или вообще не понтоваться и применить jersey. Ну а там уже и вообще java. Грустно признавать, но в scala у веб-фреймворках нет чего-то чтобы было достаточно гибким и универсальным как например spring mvc. Scala очень хороша, но почти все авторы библиотек городят на ней страшные вещи

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