Мой рабочий ЯП — scala. Про java 8 знаю довольно мало, поэтому о деталях спорить не буду, просто поправьте при необходимости.
Если говорим о читаемости, то очевидно не стоит делать лямбду портянкой. Только это не значит, что лямбда не может содержать сложной логики. Все решается композицией функций.
Насколько понимаю, в java 8 нет аналогов Try "монады", поэтому обработка ошибок в композиции остается муторной (не сказать что Try делает мир идеальным, но немного лучше).
И становится ли код с ними надежнее и читабельнее, нежели без них?
Если продолжать скатываться к ФП, то да для надежности и читаемости одновременно. Точнее это наиболее простой способ выполнения двух условий одновременно. При этом речь не столько о лямбдах, сколько о функциях в целом.
з.ы. функции высшего порядка ортогональны рефлексии.
Да, лямбды не пробрасывают. Потому что лямбды не должны содержать в себе серьезную программную логику. То есть назначение их — сделать что-нибудь простенькое, на полэкранчика, без хитрых внутренностей.
Логика в лямбде может быть какая угодно. Причина не в них, а в high order function, которые принимают «произвольную» функцию, а значит их придется обвешать всеми возможными проверками.
Снижает их в N раз, где N зависит от "ума" компилятора. Обратная сторона — дополнительный бойлерплейт при написании кода. Кто-то ищет баланс, кто-то живёт в крайностях. Каждый выбирает более приятный ему путь.
Можете пример дать? У меня, честно говоря, фантазии не хватает придумать такой кейс, когда бы return понадобился во имя безопасности. По личному опыту с изучением и дальнейшей работой со scala адаптация прошла почти мгновенно и проблем не было за все время (скорее только вздох облегчения).
В приведенном варианте ничем, кроме оверхеда. Удобства работы со спарком в консоли на грош.
Для ad-hoc задач всё же надо использовать другой интерфейс, благо они есть и для скалы и для питона сейчас.
Бесполезный бенчмарк для сравнительной оценки. Не указаны настройки противопоставляемых систем. Не понятно что по оси ординат откладывается, хотя мож я просмотрел. Вот к примеру покрытый пылью времени результат акка, который даже с учетом разности в железе имеет большую пропускную способность и даже несмотря на наличие stw.
idea + плагин от jetbrains (не всё хорошо, но жить можно), scala-ide (на базе клипсы), ensime (имеет возможность скрещиваться с некоторыми текстовыми редакторами).
В языке со строгой статической типизацией делать переход от специфичного множества к множеству, включающему всё, — это путь к ошибкам. Выше вы упоминали про кодогенерацию, можете пример дать?
Если говорим о читаемости, то очевидно не стоит делать лямбду портянкой. Только это не значит, что лямбда не может содержать сложной логики. Все решается композицией функций.
Насколько понимаю, в java 8 нет аналогов Try "монады", поэтому обработка ошибок в композиции остается муторной (не сказать что Try делает мир идеальным, но немного лучше).
Если продолжать скатываться к ФП, то да для надежности и читаемости одновременно. Точнее это наиболее простой способ выполнения двух условий одновременно. При этом речь не столько о лямбдах, сколько о функциях в целом.
з.ы. функции высшего порядка ортогональны рефлексии.
Для ad-hoc задач всё же надо использовать другой интерфейс, благо они есть и для скалы и для питона сейчас.
Дженерики здесь совершенно не причем и на кортеж оно не фига не похоже. Оба есть ADT.