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 такой вопрос даже не возникает, старый добрый императивный ООП в ней никуда не делся

★★★★★
;;; *запасся попкорном*

(troll-mode t)

(каст набег-лисперов)
(растолковать-всем лисп-хорош лисп-лучший)
dpt-ru
()
Ответ на: комментарий от dpt-ru

;) Я тоже.

Но цель все таки действительно послушать людей, у которых есть хоть одна большая программа на Haskell

vertexua ★★★★★
() автор топика

Если не можешь жить без автокомплита, тебе ни хаскель ни скала не подойдут, пиши на джаве или бейсике.

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

Ты или знаешь наизусть все классы Java или не программист. Если знаешь наизусть, то соболезную. Я понимаю, что тред - корм маргинальщиков, но уже все согласились, что autocompletion НУЖЕН.

vertexua ★★★★★
() автор топика

Используй emacs или jedit в качестве редактора плюс какую-нибудь систему сборки типа ant или maven. В этом была проблема?

dave ★★★★★
()

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

А чем вам таки не угодил Prolog ?

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

А вам нравится пролог? Но вообщем это не важно сейчас, тема отдельного треда

Вы Erlang знаете? Если да, то что можете сказать?

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

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

А в эклипсе и идее плагины к скале как? Вроде обещали, что всё будет свистеть и плясать.

PS набивание кода это очень малая часть разработки, и ускорение код-комплишном незначительно влияет на общее время разработки.

Legioner ★★★★★
()

очередной пост ни о чем. Тебе какую задачу то решить надо?

PS. По хаскелю значит он туториалы читал, а по ерлангу услышал про прологовский синтаксис и всё. Детальный подход.

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

>Вы Erlang знаете? Если да, то что можете сказать?
Да. Я могу сказать, что замечательная платформа, с замечательным непергруженным синтаксисом

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

> Вы Erlang знаете?

Нет

А вам нравится пролог?

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

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

Черт. Забыл совсем:
Автодополнение и другие прелести: в emacs+distel. Для менее суровых: есть и ErlIde

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

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

Есть. Но последний раз они у меня не распознавали и подчеркивали слово class. Причем из HelloWorld. Но не всегда, а когда работали, то работал быстро

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

У меня иногда названия функций содержат около 6 слов ) А потом еще если рефакторинг, а если еще и большой, по большому количеству файлов

vertexua ★★★★★
() автор топика

Лисп не самый нечитаемый. Есть один язык который еще уродливее - Форт, и всякие его диалекты вроде PostScript.

Короче учи ANSI C и не выкобенивайся. Какацкели и сралы не нужны.

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

Ну я сказал что я сделал. И запостил на ЛОР вопрос. Если бы я два месяца сидел в инете и до половины выучил все вышеназванные языки, то потребност в аналитиках ЛОРа точно бы отпала

vertexua ★★★★★
() автор топика

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

глупости какие.

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

Если бы действительно хотел задать вопросы, не писал бы такой бред. Толсто!

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

Хочешь таки сказать, что знаешь наизусть весь J2EE и Spring с Hibernate? Ну ну. Герой. Ни на одном JVM-языке нельзя писать без автокомплита.

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

Ладно, за этот абзац согласен. Толсто

vertexua ★★★★★
() автор топика

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

Ну... STArray или даже STUArray и вперед :D

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

С такой логикой к архимагу - он специалист по таким случаям :)

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

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

> Никакая документация не поможет, когда классов и методов десятки тысяч.

Двоичный поиск легко решает эту задачу ;) Главное - правильная организация и само-дисциплина.

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

>> Если не можешь жить без автокомплита, тебе ни хаскель ни скала не подойдут, пиши на джаве или бейсике.

Ты или знаешь наизусть все классы Java или не программист.

Он на яве пишет.

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

У меня подозрение, что ты никогда ничего серьезного на Java или под JVM не писал. Потому как ты просто бредишь, как конченный ламер.

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

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

Судя по ламерскому недавнему вопросу про апплеты - херово пишет. Но напыщенные идиотские советы давать горазд. ЛОР такой ЛОР.

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

Оффтоп: у меня эта ава стоит года полтора вроде, а до неё не стояло ничего, поэтому наверное вы меня с кем то путаете.

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

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

dave ★★★★★
()

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

В хаскель впилили uniqueness typing? Uniqueness-typed arrays тебе в помощь.

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

> Есть. Но последний раз они у меня не распознавали и подчеркивали слово class. Причем из HelloWorld. Но не всегда, а когда работали, то работал быстро

Точно последние версии идеи и плагина?

У меня есть проект на скале, разрабатывается в idea, все работает. Ну разве что в некоторых совсем страшных случаях типа помеси xml и скаловского кода.

Для хаскеля к сожалению production ready библиотек кот наплакал. Один пример: нужно было сделать отсылку уведомлений по e-mail. Есть несколько библиотек. И ни в одной нету способа нормально кодировать заголовки (ни QP, ни base64). Про разбиение заголовка чтобы соблюдалось требование на длину строки там тоже не слышали. В итоге тулза была написана на скале.

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

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

vertexua ★★★★★
() автор топика

Еще час назад я видел эту тему без комментариев

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

> нужно было сделать отсылку уведомлений по e-mail. [...] В итоге тулза была написана на скале.

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

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

tailgunner ★★★★★
()

> Лисп остается самым нечитаемым ЯП

Толсто.

И как Haskell будет решать задачи с большим количеством состояния?

Use monads, Luke.

А вообще, сейчас в моде OCaml.

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

уже все согласились, что autocompletion НУЖЕН


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

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

Таких можно еще горы называть. Nemerle, F#, OCaml. Внятно разницу нигде нельзя узнать

vertexua ★★★★★
() автор топика

>> Clean - еще молод

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

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

Это пройдет.

По недавно поступившим данным в Scala кажется настоящие Generics, как в .NET, даже без поддержки от JVM. Пока не проверял

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

Лисп остается самым нечитаемым ЯП

Это ты так сказал «не осилил»?

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

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