powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / гибрид scala+java в одном проекте
8 сообщений из 8, страница 1 из 1
гибрид scala+java в одном проекте
    #38529129
BaurzhanS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Введение к вопросу
Начал читать информацию о Scala и ФП, и так понял, что для ввода-вывода в ФП используются монады. Ввод-вывод влечет побочные эффекты, что недопустимо с точки зрения чистого ФП и монады играют роль моста между императивным и функциональным программированием. Так ли это?

Тут у меня возник сам вопрос - в каждом подходе есть свои + и -, есть языки, которые поддерживают оба стиля, поэтому можно ли сделать такой вывод - если язык поддерживает оба подхода, делай подзадачи проекта на том инструменте, который лучше всего подходит - типа работа с персистентными структурами данных, места где можно много ИП-style кода заменить на лаконичный ФП-style код лучше идет на функциональной парадигме, а ввод/вывод с файлов, с базы - лучше тупо использовать в той же Scala java.io.* и не париться с монадами. Верен ли такой вывод?
...
Рейтинг: 0 / 0
гибрид scala+java в одном проекте
    #38529427
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scala является гибридным языком, так что можно спокойно использовать любой подход, хоть тот же java.io
...
Рейтинг: 0 / 0
гибрид scala+java в одном проекте
    #38529736
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут всё правильно уже сказали, но добавлю.


Начал читать информацию о Scala и ФП, и так понял, что для ввода-вывода в ФП используются монады. Ввод-вывод влечет побочные эффекты, что недопустимо с точки зрения чистого ФП и монады играют роль моста между императивным и функциональным программированием. Так ли это?


Так. В смысле -- функциональные программисты действительно так считают. И иногда это дейтвительно оправдано.



Тут у меня возник сам вопрос - в каждом подходе есть свои + и -, есть языки, которые поддерживают оба стиля, поэтому можно ли сделать такой вывод - если язык поддерживает оба подхода, делай подзадачи проекта на том инструменте, который лучше всего подходит - типа работа с персистентными структурами данных, места где можно много ИП-style кода заменить на лаконичный ФП-style код лучше идет на функциональной парадигме, а ввод/вывод с файлов, с базы - лучше тупо использовать в той же Scala java.io.* и не париться с монадами. Верен ли такой вывод?



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

Scala, на сколько я знаю, не умеет сама распараллеливаться, поскольку её VM -- это стандартная VM от Java. Поэтому в Scala FP -- это только для удобства программирования на ней, что ОЧЕНЬ важно, но чистота для этого не нужна абсолютно.
...
Рейтинг: 0 / 0
гибрид scala+java в одном проекте
    #38531752
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дело-то всё в том, что при отсутствии побочных эффектов программу можно в любом месте распараллелить. Это -- самое главное, для чего нужна чистота от побочных эффектов. Ну и соответственно, если тебе не нужно мгновенное автоматическое распараллеливание, то не нужна и чистота.

Не могу согласиться, что только для параллельности, для меня важна безопасность использования.
Функцию без побочного эффекта можно покрыть тестовым окружением, соответственно тестировать только ее и потом безопасно заменить на любую другую раеализацию, которая совпадает по сигнатуре и проходит тесты.

Функцию с побочным эффектом невозможно тестировать и рассматривать как черный ящик.
Все изменения надо проверять в контексте того, кто ее использует.
...
Рейтинг: 0 / 0
гибрид scala+java в одном проекте
    #38532864
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Побочных эффектов в императивном программировании много и
можно попытаться по-теоретизировать и перечислить.
... (нужен топик специальный, где бы соозабоченных было много)

ИМХО один из самых шумящих - это бесконтрольное изменение переменных
при принципиальной невозможности 100%-го контроля
,
а в ЧИСТОМ функциональном программировании ПЕРЕМЕННЫХ вообще НЕТ (есть
что-то типа синонимов для сокращения записи в длинных выражениях и прочее).
...
Рейтинг: 0 / 0
гибрид scala+java в одном проекте
    #38532901
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolchanov>Дело-то всё в том, что при отсутствии побочных эффектов программу можно в любом месте распараллелить. Это -- самое главное, для чего нужна чистота от побочных эффектов. Ну и соответственно, если тебе не нужно мгновенное автоматическое распараллеливание, то не нужна и чистота.

Не могу согласиться, что только для параллельности, для меня важна безопасность использования.
Функцию без побочного эффекта можно покрыть тестовым окружением, соответственно тестировать только ее и потом безопасно заменить на любую другую раеализацию, которая совпадает по сигнатуре и проходит тесты.

Функцию с побочным эффектом невозможно тестировать и рассматривать как черный ящик.
Все изменения надо проверять в контексте того, кто ее использует.

не прав.
нормальные функции можно тестировать.
если функция шизонутая, если не сказать больше, то да, но нафига такая вообще нужна?

ну и как бы 90 процентов всех программ не функциональные и не чистые, но тем не менее из тестируют, и они в большинстве работают.
...
Рейтинг: 0 / 0
гибрид scala+java в одном проекте
    #38535033
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> нормальные функции можно тестировать.
Конечно можно, только чистые проще :)

Как говорил один умный чел, выбор в IT сейчас всегда сводится к баблу.
Pure functions в конечном счете дешевле в тестировании.

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

Ты же сам не любишь триггеры, а это прямая аналогия.
...
Рейтинг: 0 / 0
гибрид scala+java в одном проекте
    #38547695
Homme qui est interdit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivScala, на сколько я знаю, не умеет сама распараллеливаться, поскольку её VM -- это стандартная VM от Java. умеет, в 2.10 или в 2.9 ввели параллельные коллекции, достаточно приписать par и обработка коллекции автоматически раскидается по процессорам
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / гибрид scala+java в одном проекте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]