
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.01.2014, 07:17
|
|||
|---|---|---|---|
гибрид scala+java в одном проекте |
|||
|
#18+
Всем привет! Введение к вопросу Начал читать информацию о Scala и ФП, и так понял, что для ввода-вывода в ФП используются монады. Ввод-вывод влечет побочные эффекты, что недопустимо с точки зрения чистого ФП и монады играют роль моста между императивным и функциональным программированием. Так ли это? Тут у меня возник сам вопрос - в каждом подходе есть свои + и -, есть языки, которые поддерживают оба стиля, поэтому можно ли сделать такой вывод - если язык поддерживает оба подхода, делай подзадачи проекта на том инструменте, который лучше всего подходит - типа работа с персистентными структурами данных, места где можно много ИП-style кода заменить на лаконичный ФП-style код лучше идет на функциональной парадигме, а ввод/вывод с файлов, с базы - лучше тупо использовать в той же Scala java.io.* и не париться с монадами. Верен ли такой вывод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2014, 12:49
|
|||
|---|---|---|---|
гибрид scala+java в одном проекте |
|||
|
#18+
Scala является гибридным языком, так что можно спокойно использовать любой подход, хоть тот же java.io ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2014, 15:21
|
|||
|---|---|---|---|
гибрид scala+java в одном проекте |
|||
|
#18+
Тут всё правильно уже сказали, но добавлю. Начал читать информацию о Scala и ФП, и так понял, что для ввода-вывода в ФП используются монады. Ввод-вывод влечет побочные эффекты, что недопустимо с точки зрения чистого ФП и монады играют роль моста между императивным и функциональным программированием. Так ли это? Так. В смысле -- функциональные программисты действительно так считают. И иногда это дейтвительно оправдано. Тут у меня возник сам вопрос - в каждом подходе есть свои + и -, есть языки, которые поддерживают оба стиля, поэтому можно ли сделать такой вывод - если язык поддерживает оба подхода, делай подзадачи проекта на том инструменте, который лучше всего подходит - типа работа с персистентными структурами данных, места где можно много ИП-style кода заменить на лаконичный ФП-style код лучше идет на функциональной парадигме, а ввод/вывод с файлов, с базы - лучше тупо использовать в той же Scala java.io.* и не париться с монадами. Верен ли такой вывод? Этот вывод вообще очень правильный, и я рад за тебя, если ты это понял сам, своей головой. Ну и как бы надо понимать, почему чисто функциональный стиль должен быть таким чистым. Дело-то всё в том, что при отсутствии побочных эффектов программу можно в любом месте распараллелить. Это -- самое главное, для чего нужна чистота от побочных эффектов. Ну и соответственно, если тебе не нужно мгновенное автоматическое распараллеливание, то не нужна и чистота. Scala, на сколько я знаю, не умеет сама распараллеливаться, поскольку её VM -- это стандартная VM от Java. Поэтому в Scala FP -- это только для удобства программирования на ней, что ОЧЕНЬ важно, но чистота для этого не нужна абсолютно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.01.2014, 13:35
|
|||
|---|---|---|---|
гибрид scala+java в одном проекте |
|||
|
#18+
>Дело-то всё в том, что при отсутствии побочных эффектов программу можно в любом месте распараллелить. Это -- самое главное, для чего нужна чистота от побочных эффектов. Ну и соответственно, если тебе не нужно мгновенное автоматическое распараллеливание, то не нужна и чистота. Не могу согласиться, что только для параллельности, для меня важна безопасность использования. Функцию без побочного эффекта можно покрыть тестовым окружением, соответственно тестировать только ее и потом безопасно заменить на любую другую раеализацию, которая совпадает по сигнатуре и проходит тесты. Функцию с побочным эффектом невозможно тестировать и рассматривать как черный ящик. Все изменения надо проверять в контексте того, кто ее использует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 11:32
|
|||
|---|---|---|---|
|
|||
гибрид scala+java в одном проекте |
|||
|
#18+
Побочных эффектов в императивном программировании много и можно попытаться по-теоретизировать и перечислить. ... (нужен топик специальный, где бы соозабоченных было много) ИМХО один из самых шумящих - это бесконтрольное изменение переменных при принципиальной невозможности 100%-го контроля , а в ЧИСТОМ функциональном программировании ПЕРЕМЕННЫХ вообще НЕТ (есть что-то типа синонимов для сокращения записи в длинных выражениях и прочее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.01.2014, 12:07
|
|||
|---|---|---|---|
гибрид scala+java в одном проекте |
|||
|
#18+
kolchanov>Дело-то всё в том, что при отсутствии побочных эффектов программу можно в любом месте распараллелить. Это -- самое главное, для чего нужна чистота от побочных эффектов. Ну и соответственно, если тебе не нужно мгновенное автоматическое распараллеливание, то не нужна и чистота. Не могу согласиться, что только для параллельности, для меня важна безопасность использования. Функцию без побочного эффекта можно покрыть тестовым окружением, соответственно тестировать только ее и потом безопасно заменить на любую другую раеализацию, которая совпадает по сигнатуре и проходит тесты. Функцию с побочным эффектом невозможно тестировать и рассматривать как черный ящик. Все изменения надо проверять в контексте того, кто ее использует. не прав. нормальные функции можно тестировать. если функция шизонутая, если не сказать больше, то да, но нафига такая вообще нужна? ну и как бы 90 процентов всех программ не функциональные и не чистые, но тем не менее из тестируют, и они в большинстве работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.01.2014, 00:06
|
|||
|---|---|---|---|
гибрид scala+java в одном проекте |
|||
|
#18+
> нормальные функции можно тестировать. Конечно можно, только чистые проще :) Как говорил один умный чел, выбор в IT сейчас всегда сводится к баблу. Pure functions в конечном счете дешевле в тестировании. А там где это невозможно или дорого - можно использовать функции с побочным эффектом, только их не должно быть много, иначе проект становится настолько сложным в поддержке, что иногда проще переписать чем разобраться в переплетении майд эффетов. Ты же сам не любишь триггеры, а это прямая аналогия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.02.2014, 20:10
|
|||
|---|---|---|---|
|
|||
гибрид scala+java в одном проекте |
|||
|
#18+
MasterZivScala, на сколько я знаю, не умеет сама распараллеливаться, поскольку её VM -- это стандартная VM от Java. умеет, в 2.10 или в 2.9 ввели параллельные коллекции, достаточно приписать par и обработка коллекции автоматически раскидается по процессорам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&mobile=1&tid=1341478]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 327ms |

| 0 / 0 |
