Комментарии 33
Как написал Erik Meijer у себя в твиттере:
Congrats to all my friends at #oracle. Functional programming is now officially mainstream,and my mission complete.
Вот еще немного добра winterbe.com/posts/2014/03/16/java-8-tutorial/
Очередной синтаксический сахар и новая парадигма написания одного и того же в языке. В очередной раз получится, что лямбдами к месту пользуется дай-бог 5% кодеров. Еще 5% будут сувать их во все места. Для остальных 90% код станет менее читабельным.
Такое впечатление, что ораклу надо выпускать новые версии джавы и надо что-то новое впихнуть. Получится как с javascript, который позволяет писать в куче разных методик, а на деле получается, что читать чужой код практически невозможно, так как нет стандарта.
Такое впечатление, что ораклу надо выпускать новые версии джавы и надо что-то новое впихнуть. Получится как с javascript, который позволяет писать в куче разных методик, а на деле получается, что читать чужой код практически невозможно, так как нет стандарта.
Лямбды открывают безмерные глубины для всякого рода GUI и прочих систем построенных на событиях. В Java катастрофически не хватает указателя на функцию или его замены. Как реализовывать бынальные events? Через три вагона интерфейсов и фабрик? Посмотрите во что превратились Swing/Fx? Даже C++ нервно курит в сторонке с его нагромождениями шаблонов. Теперь легко и непринуждённо это упросить и привести в человеческий вид. (А если ещё и поддержку динамических вызовов учесть, то вообще праздник жизни получается) Правда, сдаётся мне, что на практике ещё долго java будет развиваться по инерции.
Зачем делать еще один убер-пупер универсальный язык со всеми возможными конструкциями? Хотите писать функционально и исполнять на JVM? Пишите на Scala или еще каком-нибудь языке компилирующимся под JVM. Весь такой синтаксический сахар, который «упрощает» код одновременно сильно поднимает издержки на изучение и поддержку. Хорошо, скажете, это типа хорошо, что порог вхождения в джава программирование будет выше. С одной стороны, да, а с другой стороны таким образом джава будет терять популярность, именно из-за сложности поддержки разнообразных парадигм написания кода.
Лямбды открывают безмерные глубины для всякого рода GUI и прочих систем построенных на событиях.Но все же, это только мне лямбды кажутся все еще незавершенными? Ну посудите сами, если мы ориентируемся использовать их для систем построенных на событиях то давайте же взглянем на такие системы, ну к примеру на GWT. Там все кишит прям callback'ами, а что такое callback — это комбинация onSuccess + onFail. Итого имеем 2 метода, а если я не ошибаюсь, то таких лямбд java еще не умеет.
Кратенькую информацию все же удалось получить от нашего соратника — TheShade. Но на сколько я понял данная концепция дальше обсуждения на Java 8 EG не зашла.
НЛО прилетело и опубликовало эту надпись здесь
Но согласитесь что от модели Горыныча мы уже отказаться не сможем и поэтому поддержка таких конструкций была бы только полюсом для java.
НЛО прилетело и опубликовало эту надпись здесь
А зачем пример? Не знаю как в других языках, но в питоне новые конструкции языка появляются постоянно и происходит это потому что Гвидо активно прислушывается к комьюнити — захотели дектораторы -> договорились о синтаксисе -> получили дектораторы.
Вот MS другая ситуация, C# тоже стреляет такими же новинками, но это пальцем в небо, кому-то нужно, а кому-то нет, ведь выдумано это внутри компании. А тут сообщество есть, собственно те кто будет использовать конечный продукт. Ну и я считаю прислушиваться нужно.
К чему я веду — «даешь JSR к рассмотрению от народа!»
P.S. За опечатку сори.
Вот MS другая ситуация, C# тоже стреляет такими же новинками, но это пальцем в небо, кому-то нужно, а кому-то нет, ведь выдумано это внутри компании. А тут сообщество есть, собственно те кто будет использовать конечный продукт. Ну и я считаю прислушиваться нужно.
К чему я веду — «даешь JSR к рассмотрению от народа!»
P.S. За опечатку сори.
синтаксический сахар и новая парадигма написания одного и того же в языке
Вы уж определитесь.
Я вам гарантирую — лямбдами будут пользоваться очень активно. Это не fork/join, который нужен очень не многим.
Лямбды существуют во многих языках уже давно. И в том же C# ими пользуются все программисты, кого я видел. Это невероятно удобно.
Перевёрнутый зуб-алкаш смотрит на карту, на которой указан путь до Half-Life?
Скажите, а в Java добавили var-подобный синтаксис?
var o = new Object();
Idea, кстати, давно уже анонимные классы сворачивает в lambda-выражения — с одной стороны hint как это должно выглядеть, с другой, как я понял, готовый инструмент преобразования по всему проекту.
По поводу суммы чисел — а аналога «reduce» или «Aggregate» в Java не появилось? В том-же шарпе сумму чисел, помимо существующих extension method-ов, можно например так (например мы считаем сумму чисел больших чем 3):
Соответственно, если мы например хотим посчитать произведение тех-же чисел, то модификация кода минимальная:
как видно — довольно мощная конструкция, позволяющая унифицировать подобные обхождения списков / контейнеров / массивов.
var sum = container.Where( a => a>3).Aggregate(0, (a, b) => a + b);
Соответственно, если мы например хотим посчитать произведение тех-же чисел, то модификация кода минимальная:
var mult = container.Where( a => a>3).Aggregate(1, (a, b) => a * b);
как видно — довольно мощная конструкция, позволяющая унифицировать подобные обхождения списков / контейнеров / массивов.
Вот это гуд. Предлагаю автору статьи включить пару примеров с reduce, — куда интереснее смотрится имхо.
Вот тут более развернуто habrahabr.ru/post/216431/
Примеры, да и структура статьи один в один скопированы с dzone (http://java.dzone.com/articles/why-we-need-lambda-expressions).
Могли бы что-нибудь свое придумать.
Могли бы что-нибудь свое придумать.
>Могли бы что-нибудь свое придумать.
Собственно этим я сейчас и занят. Но дело в чём — когда фичи языка используются в реальных задачах, там и придумывать ничего не надо — достаточно описать задачи и их реализацию. А вот с простыми примерами сложнее, потому что они должны быть в определенной степени абстрактными, но при этом показывать весь потенциал языка. Поэтому примеры с дизоуна показались неплохим вариантом в плане соотношения порога вхождения к информативности. И таки да, лучше с точки зрения этого соотношения придумать не получилось. Да и нужно ли?
Но за ссылку спасибо — добавлю в пост. Там, кстати, есть и довольно интересное продолжение.
Собственно этим я сейчас и занят. Но дело в чём — когда фичи языка используются в реальных задачах, там и придумывать ничего не надо — достаточно описать задачи и их реализацию. А вот с простыми примерами сложнее, потому что они должны быть в определенной степени абстрактными, но при этом показывать весь потенциал языка. Поэтому примеры с дизоуна показались неплохим вариантом в плане соотношения порога вхождения к информативности. И таки да, лучше с точки зрения этого соотношения придумать не получилось. Да и нужно ли?
Но за ссылку спасибо — добавлю в пост. Там, кстати, есть и довольно интересное продолжение.
НЛО прилетело и опубликовало эту надпись здесь
Добавлю и от себя ссылку про лямбры/дефендеры/стримы zeroturnaround.com/rebellabs/java-8-revealed-lambdas-default-methods-and-bulk-data-operations/
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Лямбда-выражения в Java 8 — Простые примеры того, как они могут облегчить вашу жизнь