Молодцы. А я слишком люблю выигрывать, чтобы взять незнакомую платформу... и так и толком не выучил Haskell. Кстати, скажи мне - он по части ФП и типизации до сих пор впереди планеты всей, или появилось что-то ещё?
Ну, для нас Haskell - довольно знакомая платформа, так что шансы только повышает.
Не, по части типизации он уже лет пять как отсталый язык - нонче рулят танковые клинья и ковровое бомбометание, в смысле, Coq и Agda 2. :))) На самом деле: последний писк в типизации языков программирования - зависимые типы. Вообще, и им в обед сто лет, но даже их пока не удалось сделать достаточно удобными для практического использования, поэтому о более навороченных изысках в _языках_ программирования говорить пока не приходится, AFAIK. Но и зависимые типы - штука весьма мощная и крутая! :)
Некоторые элементы зависимых типов есть и в Haskell (GADTs и Type Families), но ограниченные, поэтому не столь выразительные, зато несложные на практике. Так что Haskell уже потихоньку переходит в разряд стабильных, проверенных временем языков для промышленной разработки.
Посмотрел эти два, испугался математики %) Они же ещё не пригодны для широких масс и промышленности?
Брал вчера у коллеги книгу по теории типов, подумал - может, там что-нибудь популярно изложено, пригодится на ICFPC... хрен там! Там чистая, заформализованная математика, определения да теоремы. Хороший такой университетский курс на два семестра постоянного изучения.
Буду, как всегда, неучем %) Разве что вот Скалу подтягиваю.
Помнится, thesz ловил себя на мысли, что agda - довольно практичный язык, потому что компилируется в Haskell и может использовать его библиотеки. :)
Лично я думаю, что на текущий момент, Haskell - самый промышленный из развитых и самый развитый из промышленных языков.
Что-то охладел к Скале - неудобный (в плане синтаксиса, как минимум) и запутанный язык. Чтобы разобраться в Скале нужно выучить Java, выучить Haskell, а потом ещё понять как Одерски совместил один с другим. Одерски очень умный мужик, проделал большую и интересную работу, но совмещение ФП и ООП слишком сложно само по себе. При этом, благодаря синтаксису и интерференции с ООП, проще выучить Haskell, чем с ходу в Скале разбираться что такое монады, аппликативные функторы и т.д.
IMHO, разумеется. Например, sorhed может со мной не согласиться.
Точно так же Scala — очень практичный язык, потому что компилируется в Java и использует все его библиотеки. А библиотек для Java навалом, прекрасных, чего нельзя сказать о хаскеле.
Хаскел мне тоже нравится, конечно, и на нём можно писать, но он из другой культурной среды. Для меня Scala стала естественным выбором, потому что я до этого 12 лет писал на джаве, а также был Smalltalk-энтузиастом и ООП не воспринимаю как ненужное зло (чем грешат многие функциональщики).
Но, конечно, люди приходят в ФП и из других языков программирования.
Интересно, это ЖЖ рассылает уведомления об упоминаниях, или вы их сами находите? :)
> А библиотек для Java навалом, прекрасных, чего нельзя сказать о хаскеле. Я бы сказал, что это для Haskell очень много прекрасных библиотек, а для Java большинство библиотек ужасны, а наиболее популярные - просто нормальные. :)
Но с "практичностью" Scala как абстрактной характеристикой (средней по больнице) соглашусь - в своей нише у него конкурентов просто нет (пока что).
Я не считаю ООП злом само по себе - как и ФП не считаю панацеей. Но как по мне, так Scala наглядно демонстрирует порочность смешения одного со вторым. Одерски - повторюсь - очень умный мужик, и проделал огромную работу, но чтобы разобраться полностью в том как он соединяет в Scala ФП и ООП мне сильно нехватает знаний как первого, так и второго. При том что мне хватило знаний ФП чтобы в Haskell пользоваться existential types и делать инкапсуляцию с их помощью. При этом пользоваться такими продвинутыми ФП-приёмами в Scala сложнее, чем в Haskell уже из-за одного только более громоздкого синтаксиса, а если не пользоваться, то зачем он тогда вообще нужен?
Кстати, как-то раз на собственном опыте убедился, что Streams в Scala (ровно как и в Clojure и многих других) - "обман трудящихся", потому что когда ленивость по-настоящему нужна, она нужна и в хвосте, и в голове, и в самих значениях, там хранящихся. thesz совершенно правильно говорил, что ленивость должна быть правилом, а строгость - исключением, иначе она просто не работает.
Впрочем, наверное, если осилить полностью Scala, то потом никакие Agda 2 и ATS не страшны! :) А чем сильнее программисты напрягают мозг и чем таких больше - тем лучше для индустрии и человечества. ;) Так что я не против Scala - вполне таки за. :)
Пользой, т.е. диапазоном решаемых задач. Исчисление времени ставит уйму задач, и joda.time решает очень многие из них. И API её, для Джавы, почти идеально краток. Мой вкус, конечно, испорчен, почти как у тех, кто любит PHP.
Не вижу: * Итервалов дат. Арифметики над интервалами дат: сравнение/пересечение/дополнение; * Частичных дат (хотя что-то похожее я, кажется, увидел), и типа данных "поле даты" со значением "день/час/минута/секунда"; * Аналога йодовского "периода", как-то "2 дня 3 часа" (это не всегда 51 час).
Может быть, это всё делается средствами другой части стандартной библиотеки Хаскелля - буду рад просветиться.
Но вообще, я был излишне резок. Мне показалось, что в time нет операции "следующий вторник после 16го числа" или разных типов для даты с таймзоной и без. Присмотрелся - увидел.
Хочу пояснить: я не отрицаю сугубой юзабельности Java - напротив, очень уважаю её стабильность, качество и проработанность. С удовольствием пользуюсь в благоприятных случаях.
Но ничего прекрасного я в Java и окрестностях не вижу. В этом нет ничего плохого, это не мешает get things done.
а нафіга тобі теорія? чим тобі поможе ( initial | finite ) object?? а щоб не лякався, на тобі комікси (комікси це ж весело і легко) GADT та dependent types
> (Ё-моё, на всю контору никто не отозвался!) ви з ДімаБ знову окремими командами?
>Haskell... по части ФП и типизации до сих пор впереди планеты всей, или появилось что-то ещё? те саме Васю питав про agda з її dependent types. каже ні, попереду не просто agda, а agda 2, вона в haskell та javascript компілёвна.
(no subject)
5/7/12 09:20 (UTC)(no subject)
5/7/12 09:24 (UTC)Кстати, скажи мне - он по части ФП и типизации до сих пор впереди планеты всей, или появилось что-то ещё?
(no subject)
5/7/12 19:42 (UTC)Не, по части типизации он уже лет пять как отсталый язык - нонче рулят танковые клинья и ковровое бомбометание, в смысле, Coq и Agda 2. :))) На самом деле: последний писк в типизации языков программирования - зависимые типы. Вообще, и им в обед сто лет, но даже их пока не удалось сделать достаточно удобными для практического использования, поэтому о более навороченных изысках в _языках_ программирования говорить пока не приходится, AFAIK. Но и зависимые типы - штука весьма мощная и крутая! :)
Некоторые элементы зависимых типов есть и в Haskell (GADTs и Type Families), но ограниченные, поэтому не столь выразительные, зато несложные на практике. Так что Haskell уже потихоньку переходит в разряд стабильных, проверенных временем языков для промышленной разработки.
(no subject)
6/7/12 10:29 (UTC)Брал вчера у коллеги книгу по теории типов, подумал - может, там что-нибудь популярно изложено, пригодится на ICFPC... хрен там! Там чистая, заформализованная математика, определения да теоремы. Хороший такой университетский курс на два семестра постоянного изучения.
Буду, как всегда, неучем %) Разве что вот Скалу подтягиваю.
(no subject)
6/7/12 18:32 (UTC)Лично я думаю, что на текущий момент, Haskell - самый промышленный из развитых и самый развитый из промышленных языков.
Что-то охладел к Скале - неудобный (в плане синтаксиса, как минимум) и запутанный язык. Чтобы разобраться в Скале нужно выучить Java, выучить Haskell, а потом ещё понять как Одерски совместил один с другим. Одерски очень умный мужик, проделал большую и интересную работу, но совмещение ФП и ООП слишком сложно само по себе. При этом, благодаря синтаксису и интерференции с ООП, проще выучить Haskell, чем с ходу в Скале разбираться что такое монады, аппликативные функторы и т.д.
IMHO, разумеется. Например,
(no subject)
6/7/12 20:23 (UTC)(no subject)
7/7/12 23:15 (UTC)(no subject)
8/7/12 11:08 (UTC)Хаскел мне тоже нравится, конечно, и на нём можно писать, но он из другой культурной среды. Для меня Scala стала естественным выбором, потому что я до этого 12 лет писал на джаве, а также был Smalltalk-энтузиастом и ООП не воспринимаю как ненужное зло (чем грешат многие функциональщики).
Но, конечно, люди приходят в ФП и из других языков программирования.
(no subject)
8/7/12 14:54 (UTC)> А библиотек для Java навалом, прекрасных, чего нельзя сказать о хаскеле.
Я бы сказал, что это для Haskell очень много прекрасных библиотек, а для Java большинство библиотек ужасны, а наиболее популярные - просто нормальные. :)
Но с "практичностью" Scala как абстрактной характеристикой (средней по больнице) соглашусь - в своей нише у него конкурентов просто нет (пока что).
Я не считаю ООП злом само по себе - как и ФП не считаю панацеей. Но как по мне, так Scala наглядно демонстрирует порочность смешения одного со вторым. Одерски - повторюсь - очень умный мужик, и проделал огромную работу, но чтобы разобраться полностью в том как он соединяет в Scala ФП и ООП мне сильно нехватает знаний как первого, так и второго. При том что мне хватило знаний ФП чтобы в Haskell пользоваться existential types и делать инкапсуляцию с их помощью. При этом пользоваться такими продвинутыми ФП-приёмами в Scala сложнее, чем в Haskell уже из-за одного только более громоздкого синтаксиса, а если не пользоваться, то зачем он тогда вообще нужен?
Кстати, как-то раз на собственном опыте убедился, что Streams в Scala (ровно как и в Clojure и многих других) - "обман трудящихся", потому что когда ленивость по-настоящему нужна, она нужна и в хвосте, и в голове, и в самих значениях, там хранящихся.
Впрочем, наверное, если осилить полностью Scala, то потом никакие Agda 2 и ATS не страшны! :) А чем сильнее программисты напрягают мозг и чем таких больше - тем лучше для индустрии и человечества. ;) Так что я не против Scala - вполне таки за. :)
(no subject)
8/7/12 16:23 (UTC)(no subject)
9/7/12 07:45 (UTC)(no subject)
9/7/12 07:50 (UTC)И API её, для Джавы, почти идеально краток.
Мой вкус, конечно, испорчен, почти как у тех, кто любит PHP.
(no subject)
Posted by(no subject)
Posted by(no subject)
10/7/12 13:45 (UTC)(no subject)
10/7/12 19:57 (UTC)* Итервалов дат. Арифметики над интервалами дат: сравнение/пересечение/дополнение;
* Частичных дат (хотя что-то похожее я, кажется, увидел), и типа данных "поле даты" со значением "день/час/минута/секунда";
* Аналога йодовского "периода", как-то "2 дня 3 часа" (это не всегда 51 час).
Может быть, это всё делается средствами другой части стандартной библиотеки Хаскелля - буду рад просветиться.
Но вообще, я был излишне резок. Мне показалось, что в time нет операции "следующий вторник после 16го числа" или разных типов для даты с таймзоной и без. Присмотрелся - увидел.
(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
8/7/12 17:11 (UTC)(no subject)
9/7/12 07:36 (UTC)Batteries included я никому не обещал, правда же? :)
GUI всё ещё слабое место ФП, поскольку не найдено подходящего формализма, впрочем Fudgets в чём-то прекрасны, хотя и не юзабельны.
А какая нужна работа с сетью не через сырые сокеты?
(no subject)
9/7/12 07:39 (UTC)HTTP, REST/SOAP, SMTP со всеми прилежащими multipart-ами - для начала.
(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
9/7/12 07:44 (UTC)Но ничего прекрасного я в Java и окрестностях не вижу. В этом нет ничего плохого, это не мешает get things done.
(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
9/7/12 08:40 (UTC)а щоб не лякався, на тобі комікси (комікси це ж весело і легко)
GADT та dependent types
(no subject)
9/7/12 08:42 (UTC)(no subject)
10/7/12 20:15 (UTC)(no subject)
5/7/12 14:12 (UTC)ви з ДімаБ знову окремими командами?
>Haskell... по части ФП и типизации до сих пор впереди планеты всей, или появилось что-то ещё?
те саме Васю питав про agda з її dependent types.
каже ні, попереду не просто agda, а agda 2, вона в haskell та javascript компілёвна.
(no subject)
5/7/12 14:14 (UTC)Ух ты ж. Пойду почитаю %)
(no subject)
13/7/12 15:02 (UTC)В какую команду вошел?
(no subject)
13/7/12 19:59 (UTC):)
Пока неплохо.