Scala

Nov. 6th, 2012 04:15 am
metaclass: (Default)
[personal profile] metaclass
Читаю книжку Одерского, до основной шизы еще не добрался, но такое ощущение, что в скале чрезмерно много синтаксического сахара. Типа "тут вы можете скобки опустить, а тут вместо скобок использовать фигурные скобки, а тут мы прямо в параметрах класса сделаем их полями, а в multiline string literal вы можете сделать отступ и stripMargin" и прочая и прочая в том же духе.
Основное из этого, видимо - function literals и вызов методов в стиле a methodName b, без точек и скобок, что делает код более лаконичным, одновременно позволяя при желании превратить код в нечитабельный ад.

Заодно по наводке [livejournal.com profile] jdevelop глянул на http://spray.io/ https://github.com/spray/spray/wiki
Примеры там, конечно, знатный abuse возможностей языка и вычислений на типах, типа extraction-директив с HList в качестве параметра типа.

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

PS: Вот, к примеру:
https://github.com/spray/spray/blob/master/docs/documentation/spray-routing/code/docs/HttpServiceExamplesSpec.scala

В SimpleService HttpResponse реализован как html-код написанный прямо внутри скала-кода. Сижу уже 30 минут ищу, где это преобразование реализовано и как. Т.е. не видя отдельных литералов и их типов (которые без загрузки всего оного кода с зависимостями в IDE/интерпретатор еще и не увидишь), с ходу догадаться, что происходит, достаточно сложно. XML literals, встроенные в язык и где-то implicit для конверсии.

PPS: implicit evidence:
http://jim-mcbeath.blogspot.com/2008/11/scala-type-infix-operators.html
http://stackoverflow.com/questions/3427345/what-do-and-mean-in-scala-2-8-and-where-are-they-documented

По-моему, это уже достаточно сложно, чтобы увлечь психов и стать новыми крестиками. Вот [livejournal.com profile] xeno_by еще приделает макросы - и совсем хорошо станет.

Date: 2012-11-06 06:24 am (UTC)
From: [identity profile] evil-invader.livejournal.com
Согласен. Начал изучать скалу, потому что не хватало функциональщины в джаве (скучно стало, душа просит). Но как только узнал, что собираются добавить в java 8, то теперь уже особой надобности (для себя) в скала я не вижу. Интересная штучка, но не более.

Date: 2012-11-06 07:41 am (UTC)
From: [identity profile] jakobz.livejournal.com
О, почитал. Из Java будут делать C#. Как показывает практика, получается ничего так - ФП не сильно расползается, можно давать индусне.

Date: 2012-11-06 08:40 am (UTC)
From: [identity profile] evil-invader.livejournal.com
Ну так отличненько же. Тем более индусне совсем не обязательно влезать в дебри новых фичь.

Date: 2012-11-06 08:42 am (UTC)
From: [identity profile] xeno-by.livejournal.com
А можно подробнее про что именно впечатлило в джаве 8? Только лямбды или что-то еще?

Также интересно, что ты думаешь про трейты в общем смысле и про кейк-паттерн в частности. Были ли бы они для тебя полезны? Есть ли для них аналог в восьмой джаве?

Date: 2012-11-06 12:24 pm (UTC)
From: [identity profile] evil-invader.livejournal.com
>>"А можно подробнее про что именно впечатлило в джаве 8? Только лямбды или что-то еще?"

Лямбды и трейты. В джаве только нету паттернов.

Трейты в скале мне очень понравились. Особенно возможность к существующему классу примешать трейт и получить instance класса с примешанным трейтом. Ну и в целом что-то среднее между интерфейсами и множественным наследованием это очень ок.
Паттерны в скале я если честно не понял. Ну в смысле общую идею понял, но не успел вникнуть в нюансы. Не знаю на сколько они мне были бы полезны. Не успел пощупать и не уверен, что в ближайшее время доведется на практике использовать.

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

Date: 2012-11-06 01:05 pm (UTC)
From: [identity profile] xeno-by.livejournal.com
Так полноценных трейтов же в джаве восьмой нет.

Date: 2012-11-06 01:14 pm (UTC)
From: [identity profile] evil-invader.livejournal.com
ну хоть в каком-нибудь виде. Для начала хватит. Для меня самое главное это появление лямбд. Это уже значительно расширит возможности.

Date: 2012-11-06 08:04 pm (UTC)
From: [identity profile] stdray.livejournal.com
Лямбды тоже без замыканый вроде обещались быть.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 2nd, 2025 10:00 pm
Powered by Dreamwidth Studios