Информация об изменениях

Сообщение Re: Про Kotlin от 12.12.2021 18:59

Изменено 12.12.2021 19:01 vsb

Re: Про Kotlin
Здравствуйте, Shmj, Вы писали:

S>Из всей функциональщины, пожалуй, лишь Kotlin более менее распространен в реальной разработке.


Kotlin не более функционален, чем, например, Java.

S>Имх., отличительная черта всех, кто применяет функциональные языки — высокомерие. Как бы смотрят сверху вниз на простых смертных, которые в функциональщине столько не продвинулись.


Это то же самое, что утверждать, что отличительная черта всех, кто применяет указатели — высокомерие. И дальше по тексту. Приёмы функционального программирования определённо имеют место быть в некоторых ситуациях. И знать их полезно. А как смотреть — это уже каждый сам решает в меру своего воспитания и системы ценностей. Кто-то и на уборщиц смотрит сверху вниз.

S>Вопрос такой. Насколько эта функциональщина реально помогает? Помогает ли сократить сроки разработки, помогает ли повысить качество?


Приёмы функционального программирования помогают:

1. Записывать некоторые участки кода короче и ясней. В основном это касается манипуляций с коллекциями.

2. Чистые функции можно невозбранно запускать в отдельных потоках. Т.е. порой можно переписав определённый участок кода на функциях без побочных эффектов, запускать эти функции в отдельных потоках, тем самым получив ускорение выполнения этого участка кода за счёт многопоточности. Это сделать легко, быстро и это чаще всего не привносит багов. Переписать императивный код на многопоточный, с разделяемой памятью, ручными синхронизациями и прочим: требует высокой квалификации; довольно сложно; могут быть трудновоспроизводимые баги.

3. Упростить иерархию объектов, упростить некоторые паттерны проектирования. Например там, где в традиционном ООП нужно создавать родительский абстрактный метод с несколькими наследниками-реализациями, с ФП достаточно передать лямбду и никакой иерархии уже не нужно.

Это те места, в которых я вижу применение функционального подхода в классических императивных языках (к которым, безусловно, относится Kotlin, равно как и большинство коммерчески применяемых языков).
Re: Про Kotlin
Здравствуйте, Shmj, Вы писали:

S>Из всей функциональщины, пожалуй, лишь Kotlin более менее распространен в реальной разработке.


Kotlin не более функционален, чем, например, Java.

S>Имх., отличительная черта всех, кто применяет функциональные языки — высокомерие. Как бы смотрят сверху вниз на простых смертных, которые в функциональщине столько не продвинулись.


Это то же самое, что утверждать, что отличительная черта всех, кто применяет указатели — высокомерие. И дальше по тексту. Приёмы функционального программирования определённо имеют место быть в некоторых ситуациях. И знать их полезно. А как смотреть — это уже каждый сам решает в меру своего воспитания и системы ценностей. Кто-то и на уборщиц смотрит сверху вниз.

S>Вопрос такой. Насколько эта функциональщина реально помогает? Помогает ли сократить сроки разработки, помогает ли повысить качество?


Приёмы функционального программирования помогают:

1. Записывать некоторые участки кода короче и ясней. В основном это касается манипуляций с коллекциями.

2. Чистые функции можно невозбранно запускать в отдельных потоках. Т.е. порой можно переписав определённый участок кода на функциях без побочных эффектов, запускать эти функции в отдельных потоках, тем самым получив ускорение выполнения этого участка кода за счёт многопоточности. Это сделать легко, быстро, не требует особенного понимания многопоточности и это чаще всего не привносит багов. Переписать императивный код на многопоточный, с разделяемой памятью, ручными синхронизациями и прочим: требует высокой квалификации; довольно сложно; могут быть трудновоспроизводимые баги. А уж про всякие свободные от блокировок алгоритмы я вообще молчу, это удел гуру.

3. Упростить иерархию объектов, упростить некоторые паттерны проектирования. Например там, где в традиционном ООП нужно создавать родительский абстрактный метод с несколькими наследниками-реализациями, с ФП достаточно передать лямбду и никакой иерархии уже не нужно.

Это те места, в которых я вижу применение функционального подхода в классических императивных языках (к которым, безусловно, относится Kotlin, равно как и большинство коммерчески применяемых языков).