Pull to refresh

Comments 33

Не прошло и 50 лет с момента появления лиспа… :)
UFO just landed and posted this here
Подождем еще 50 лет пока они запилят там лисповые макросы?
Очередной синтаксический сахар и новая парадигма написания одного и того же в языке. В очередной раз получится, что лямбдами к месту пользуется дай-бог 5% кодеров. Еще 5% будут сувать их во все места. Для остальных 90% код станет менее читабельным.
Такое впечатление, что ораклу надо выпускать новые версии джавы и надо что-то новое впихнуть. Получится как с javascript, который позволяет писать в куче разных методик, а на деле получается, что читать чужой код практически невозможно, так как нет стандарта.
Лямбды открывают безмерные глубины для всякого рода GUI и прочих систем построенных на событиях. В Java катастрофически не хватает указателя на функцию или его замены. Как реализовывать бынальные events? Через три вагона интерфейсов и фабрик? Посмотрите во что превратились Swing/Fx? Даже C++ нервно курит в сторонке с его нагромождениями шаблонов. Теперь легко и непринуждённо это упросить и привести в человеческий вид. (А если ещё и поддержку динамических вызовов учесть, то вообще праздник жизни получается) Правда, сдаётся мне, что на практике ещё долго java будет развиваться по инерции.
Зачем делать еще один убер-пупер универсальный язык со всеми возможными конструкциями? Хотите писать функционально и исполнять на JVM? Пишите на Scala или еще каком-нибудь языке компилирующимся под JVM. Весь такой синтаксический сахар, который «упрощает» код одновременно сильно поднимает издержки на изучение и поддержку. Хорошо, скажете, это типа хорошо, что порог вхождения в джава программирование будет выше. С одной стороны, да, а с другой стороны таким образом джава будет терять популярность, именно из-за сложности поддержки разнообразных парадигм написания кода.
Потому что не все могут легко поменять язык.
Для среднего масштаба конторы на пару сотен разработчиков это довольно массивная инвестиция с довольно сомнительными преимуществами.
Лямбды открывают безмерные глубины для всякого рода GUI и прочих систем построенных на событиях.
Но все же, это только мне лямбды кажутся все еще незавершенными? Ну посудите сами, если мы ориентируемся использовать их для систем построенных на событиях то давайте же взглянем на такие системы, ну к примеру на GWT. Там все кишит прям callback'ами, а что такое callback — это комбинация onSuccess + onFail. Итого имеем 2 метода, а если я не ошибаюсь, то таких лямбд java еще не умеет.

Кратенькую информацию все же удалось получить от нашего соратника — TheShade. Но на сколько я понял данная концепция дальше обсуждения на Java 8 EG не зашла.
UFO just landed and posted this here
Но согласитесь что от модели Горыныча мы уже отказаться не сможем и поэтому поддержка таких конструкций была бы только полюсом для java.
UFO just landed and posted this here
А зачем пример? Не знаю как в других языках, но в питоне новые конструкции языка появляются постоянно и происходит это потому что Гвидо активно прислушывается к комьюнити — захотели дектораторы -> договорились о синтаксисе -> получили дектораторы.

Вот MS другая ситуация, C# тоже стреляет такими же новинками, но это пальцем в небо, кому-то нужно, а кому-то нет, ведь выдумано это внутри компании. А тут сообщество есть, собственно те кто будет использовать конечный продукт. Ну и я считаю прислушиваться нужно.

К чему я веду — «даешь JSR к рассмотрению от народа!»

P.S. За опечатку сори.
UFO just landed and posted this here
Решить — не факт, предложить — почему нет. Но если мое предложение к усовершенствованию лямбд даже на Java 8 EG обсуждалось то видимо есть уже какие-то попытки формализировать. Поделитесь?
синтаксический сахар и новая парадигма написания одного и того же в языке

Вы уж определитесь.

Я вам гарантирую — лямбдами будут пользоваться очень активно. Это не fork/join, который нужен очень не многим.
Лямбды существуют во многих языках уже давно. И в том же C# ими пользуются все программисты, кого я видел. Это невероятно удобно.
Поддерживаю. И в пхп тоже. Поначалу — да, смущает. Но потом привыкаешь и используешь только лямды. Потому, что это просто — удобно и в большинстве случаев читается легче.
Скажите, а в Java добавили var-подобный синтаксис?

var o = new Object();
Idea, кстати, давно уже анонимные классы сворачивает в lambda-выражения — с одной стороны hint как это должно выглядеть, с другой, как я понял, готовый инструмент преобразования по всему проекту.
Я надеюсь, Вы не думаете, что lambda = анонимные классы с одним методом?
Я раньше об этом не думал, но сейчас я уже знаю, что это не так :)
По поводу суммы чисел — а аналога «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, — куда интереснее смотрится имхо.
Примеры, да и структура статьи один в один скопированы с dzone (http://java.dzone.com/articles/why-we-need-lambda-expressions).
Могли бы что-нибудь свое придумать.
>Могли бы что-нибудь свое придумать.
Собственно этим я сейчас и занят. Но дело в чём — когда фичи языка используются в реальных задачах, там и придумывать ничего не надо — достаточно описать задачи и их реализацию. А вот с простыми примерами сложнее, потому что они должны быть в определенной степени абстрактными, но при этом показывать весь потенциал языка. Поэтому примеры с дизоуна показались неплохим вариантом в плане соотношения порога вхождения к информативности. И таки да, лучше с точки зрения этого соотношения придумать не получилось. Да и нужно ли?
Но за ссылку спасибо — добавлю в пост. Там, кстати, есть и довольно интересное продолжение.
UFO just landed and posted this here
Sign up to leave a comment.

Articles