singalen: (nerd)
[personal profile] singalen
13-16 июля.
Днепровцы, кто отдаст три (четыре) дня жизни?
Ну или не-днепровцы?
Java? Groovy? Scala?

(no subject)

8/7/12 11:08 (UTC)
Posted by [identity profile] sorhed.livejournal.com
Точно так же Scala — очень практичный язык, потому что компилируется в Java и использует все его библиотеки. А библиотек для Java навалом, прекрасных, чего нельзя сказать о хаскеле.

Хаскел мне тоже нравится, конечно, и на нём можно писать, но он из другой культурной среды. Для меня Scala стала естественным выбором, потому что я до этого 12 лет писал на джаве, а также был Smalltalk-энтузиастом и ООП не воспринимаю как ненужное зло (чем грешат многие функциональщики).

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

(no subject)

8/7/12 14:54 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Интересно, это ЖЖ рассылает уведомления об упоминаниях, или вы их сами находите? :)

> А библиотек для Java навалом, прекрасных, чего нельзя сказать о хаскеле.
Я бы сказал, что это для Haskell очень много прекрасных библиотек, а для Java большинство библиотек ужасны, а наиболее популярные - просто нормальные. :)

Но с "практичностью" Scala как абстрактной характеристикой (средней по больнице) соглашусь - в своей нише у него конкурентов просто нет (пока что).

Я не считаю ООП злом само по себе - как и ФП не считаю панацеей. Но как по мне, так Scala наглядно демонстрирует порочность смешения одного со вторым. Одерски - повторюсь - очень умный мужик, и проделал огромную работу, но чтобы разобраться полностью в том как он соединяет в Scala ФП и ООП мне сильно нехватает знаний как первого, так и второго. При том что мне хватило знаний ФП чтобы в Haskell пользоваться existential types и делать инкапсуляцию с их помощью. При этом пользоваться такими продвинутыми ФП-приёмами в Scala сложнее, чем в Haskell уже из-за одного только более громоздкого синтаксиса, а если не пользоваться, то зачем он тогда вообще нужен?

Кстати, как-то раз на собственном опыте убедился, что Streams в Scala (ровно как и в Clojure и многих других) - "обман трудящихся", потому что когда ленивость по-настоящему нужна, она нужна и в хвосте, и в голове, и в самих значениях, там хранящихся. [livejournal.com profile] thesz совершенно правильно говорил, что ленивость должна быть правилом, а строгость - исключением, иначе она просто не работает.

Впрочем, наверное, если осилить полностью Scala, то потом никакие Agda 2 и ATS не страшны! :) А чем сильнее программисты напрягают мозг и чем таких больше - тем лучше для индустрии и человечества. ;) Так что я не против Scala - вполне таки за. :)

(no subject)

9/7/12 07:45 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
А чем прекрасна joda.time?

(no subject)

9/7/12 08:24 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Вот это и иллюстрирует разницу в восприятии прекрасного. ;)

Думаю, на Hackage найдётся библиотека для решения временных задач. :)

(no subject)

10/7/12 13:45 (UTC)
Posted by [identity profile] thesz.livejournal.com
Каких конкретно функций не хватает?

(no subject)

10/7/12 20:29 (UTC)
Posted by [identity profile] thesz.livejournal.com
>Арифметики над интервалами дат: сравнение/пересечение/дополнение;

Возможно сделать через пары дат. Не спорю, что этого нет, но это тривиально.

http://www.haskell.org/ghc/docs/6.10.4/html/libraries/time/Data-Time-LocalTime.html содержит "поля данных": см TimeOfDay и LocalTime. LocalTime содержит Day, который может быть спроецирован в год, месяц и день.

Follow the types!

Насчёт периода не знаю. Наверняка это тоже можно сделать и это опять же будет тривиально.

(no subject)

12/7/12 14:38 (UTC)
Posted by [identity profile] arumad.livejournal.com
хм, а как выразить и работать одновременно в зонах CST-6CDT, Europe/Kiev, America/Los_Angeles?
как они все ведут себя на весенне/осенних сдвигах?
а две последние на исторических сдвигах?

вітя, мінус joda - власна dbtz.
ми не використовуємо joda-time dbtz, адаптуємо jre dbtz + parser POSIX TZ,
аби коли закони міняються сис міняв конфу енва, а не викладати "новий випуск".

(no subject)

Posted by [identity profile] arumad.livejournal.com - 13/7/12 05:17 (UTC) - Expand

(no subject)

Posted by [identity profile] arumad.livejournal.com - 13/7/12 13:23 (UTC) - Expand

(no subject)

Posted by [identity profile] arumad.livejournal.com - 13/7/12 05:27 (UTC) - Expand

(no subject)

8/7/12 17:11 (UTC)
Posted by [identity profile] sorhed.livejournal.com
Что ж, интересуют прекрасные библиотеки для работы с SQL, GUI, сетью (кроме сырых сокетов), и прочие batteries included.

(no subject)

9/7/12 07:36 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Вероятно, у нас разные представления о прекрасном. ;)
Batteries included я никому не обещал, правда же? :)

GUI всё ещё слабое место ФП, поскольку не найдено подходящего формализма, впрочем Fudgets в чём-то прекрасны, хотя и не юзабельны.

А какая нужна работа с сетью не через сырые сокеты?

(no subject)

9/7/12 08:17 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
http://hackage.haskell.org/package/http-conduit , например?

Ну и там как минимум 3 годных веб-фреймворка...

Но я сильно в Hackage не закапывался.

(no subject)

9/7/12 09:44 (UTC)
Posted by [identity profile] sorhed.livejournal.com
SOAP? Не надо вот этого вот. В крайнем случае SOAP-консьюмер, если некуда деваться, но если кто-то напишет SOAP-сервер на нормальном языке программирования, он будет неправ, потому что SOAP — это зло, и не надо его умножать.

HTTP и SMTP нужны, увы.

(no subject)

9/7/12 09:41 (UTC)
Posted by [identity profile] sorhed.livejournal.com
Под «прекрасным» я понимаю в том числе и наличие приборов и материалов, позволяющих делать прекрасные вещи.

Например, в скале есть собственный фреймворк для гуёв, а можно и джавские использовать. Есть много средств для продуктивной работы с базами данных, с вебом, с сетью. Например, где в хаскеле аналог Netty и MINA? Хотя бы на уровне эрланговских инструменты для распарсивания протоколов, буферизации, комбинаторы для построения сообщений? Ничего нет, только сырые сокеты. А как красиво можно было бы сделать... Но никто не сделал.

В скале, если чего-то нет (например, хороших средств для работы с датами), можно взять джавовские, и всё будет работать прекрасно. А тут — либо есть, либо нет. Самому всё не напишешь.

(no subject)

9/7/12 10:53 (UTC)
Posted by [identity profile] thesz.livejournal.com
Я не знаю, что такое MINA, но я посмотрел, что такое Netty: "an asynchronous event-driven network application framework" (http://www.jboss.org/netty/)

Прошу прощения, но это натурально не имеет смысла в случае ghc. В GHC RTS весь ввод-вывод асинхронный, на событиях. В этом смысле сеть ничем не отличается от других действий по вводу-выводу.

>Хотя бы на уровне эрланговских инструменты для распарсивания протоколов, буферизации, комбинаторы для построения сообщений?

binary package: http://hackage.haskell.org/package/binary-0.5.0.1

Пожалуйста, ознакомьтесь с текущим положением дел в мире Хаскеля. Там всё не так плохо, как вы себе представляете. И коль уж зашла речь про понимание, то по-моему мнению, вы не представляете себе, насколько в мире Scala плохо.

Простой пример. Хочу попросить вас посмотреть вот на этот тип: http://hackage.haskell.org/packages/archive/containers/0.5.0.0/doc/html/src/Data-IntMap-Base.html#IntMap

Вот он, чтобы далеко не ходить:
-- See Note: Order of constructors
data IntMap a = Bin {-# UNPACK #-} !Prefix {-# UNPACK #-} !Mask !(IntMap a) !(IntMap a)
              | Tip {-# UNPACK #-} !Key a
              | Nil

type Prefix = Int
type Mask   = Int
type Key    = Int
Какой размер будет у значения конструктора Tip в случае реализации этого типа на Scala? Моя прикидка - 5 слов (3 слова на VMT, ключ и указатель на данные + два слова на заголовок объекта). В случае Хаскеля - три слова: тэг, ключ и указатель на значение.

Для IntSet, построенного по той же схеме, но без значений (два слова на конструктор Tip), лишних данных будет ещё больше, вроде, 100% лишнего.

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

(no subject)

Posted by [identity profile] sorhed.livejournal.com - 10/7/12 13:57 (UTC) - Expand

(no subject)

Posted by [identity profile] thesz.livejournal.com - 10/7/12 14:10 (UTC) - Expand

(no subject)

Posted by [identity profile] sorhed.livejournal.com - 10/7/12 14:24 (UTC) - Expand

(no subject)

Posted by [identity profile] thesz.livejournal.com - 10/7/12 17:01 (UTC) - Expand

(no subject)

Posted by [identity profile] thesz.livejournal.com - 10/7/12 17:10 (UTC) - Expand

(no subject)

Posted by [identity profile] thesz.livejournal.com - 10/7/12 20:44 (UTC) - Expand

(no subject)

Posted by [identity profile] thesz.livejournal.com - 10/7/12 21:22 (UTC) - Expand

(no subject)

Posted by [identity profile] thesz.livejournal.com - 11/7/12 21:34 (UTC) - Expand

(no subject)

10/7/12 13:46 (UTC)
Posted by [identity profile] thesz.livejournal.com
Тут мой комментарий вывели из под фильтра спама.

http://singalen.livejournal.com/249003.html?thread=1682603#t1682603

Надеюсь, вы с ним ознакомились и мне бы хотелось услышать ваш ответ.

(no subject)

9/7/12 07:44 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Хочу пояснить: я не отрицаю сугубой юзабельности Java - напротив, очень уважаю её стабильность, качество и проработанность. С удовольствием пользуюсь в благоприятных случаях.

Но ничего прекрасного я в Java и окрестностях не вижу. В этом нет ничего плохого, это не мешает get things done.

(no subject)

9/7/12 09:42 (UTC)
Posted by [identity profile] sorhed.livejournal.com
В самой джаве как языке программирования я тоже ничего прекрасного не вижу. Но это прекрасная платформа.

И можно удачно сочетать стабильность и надёжность джавы с передним краем функционального программирования. Это Clojure (для скобочников) и Scala (для любителей типизации).

(no subject)

9/7/12 10:55 (UTC)
Posted by [identity profile] thesz.livejournal.com
А можно использовать Хаскель и какую-либо шину сообщений. Тогда вообще всё великолепно - "стабильность и надёжность джавы" и передний край функционального программирования.

(no subject)

Posted by [identity profile] sorhed.livejournal.com - 9/7/12 10:58 (UTC) - Expand

(no subject)

Posted by [identity profile] thesz.livejournal.com - 9/7/12 19:27 (UTC) - Expand

(no subject)

11/7/12 06:42 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
С первым утверждением полностью согласен, а со вторым - не полностью. :)

Во-первых, Clojure - при том, что он мне нравится и я на нём пишу - не передний край ФП, а скорее bottom line. Почти как сама Java для ООП в своё время.

Во-вторых, особенности JVM объективно мешают реализовывать на ней ФП языки.

В-третиих, я не считаю Scala _удачным_ сочетанием Java и ФП.

Но это уже пошла вкусовщина и личные оценки, а в видении объективной картины мы, как мне кажется, совпадаем.

(no subject)

Posted by [identity profile] sorhed.livejournal.com - 11/7/12 06:52 (UTC) - Expand

(no subject)

Posted by [identity profile] gabriel-irk.livejournal.com - 11/7/12 07:12 (UTC) - Expand

(no subject)

Posted by [identity profile] sorhed.livejournal.com - 11/7/12 07:24 (UTC) - Expand

(no subject)

Posted by [identity profile] thesz.livejournal.com - 11/7/12 10:26 (UTC) - Expand

(no subject)

Posted by [identity profile] gabriel-irk.livejournal.com - 12/7/12 14:30 (UTC) - Expand