2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: Избегание циклов
Сообщение25.01.2023, 14:19 
warlock66613 в сообщении #1578712 писал(а):
Тогда хорошим способом будет сделать свою особую функцию с осмысленным названием, принимающую функцию-действие, и вот в этой функции будет цикл, а в местах, где она используется, — не будет.

С этим согласен

P.S. А можете пояснить, почему для итерирования важна мутабельность/иммутабельность? Я чего-то совсем не втыкаю :-(

 
 
 
 Re: Избегание циклов
Сообщение25.01.2023, 14:22 
ozheredov в сообщении #1578711 писал(а):
Потому что действия по сути одни и те же.
Нет, не одни и те же, что ярко видно когда мы пытаемся их распараллеливать или иначе оптимизировать или возникают иные дополнительные осложнения.

 
 
 
 Re: Избегание циклов
Сообщение25.01.2023, 14:31 
warlock66613 в сообщении #1578716 писал(а):
распараллеливать

Аааа, кстати вот тут может быть собака зарыта. В matlab'e естьт.н. parallel for, у которого куча особенностей.

 
 
 
 Re: Избегание циклов
Сообщение25.01.2023, 14:33 
ozheredov в сообщении #1578714 писал(а):
почему для итерирования важна мутабельность/иммутабельность?
Она важна не для итерирования. Просто вообще весь этот подход, все эти идеи пришли из функционального программирования, где ключевая идея — это иммутабельность. И если пытаться совместить разнородные вещи (код с мутабельными объектами и инспирированные функциональным программированием способы написания кода) ничего хорошего не получится. Отступления и компромиссы возможны (метод ForEach очевидно такого рода), но нужно быть аккуратным. Правда Rust в этом плане пошёл дальше, и там этой проблемы нет, но за счёт совершенно особого подхода к мутабельности, которого пока нет больше ни в одном ЯП.

 
 
 
 Re: Избегание циклов
Сообщение25.01.2023, 14:35 
Аватара пользователя
ozheredov в сообщении #1578707 писал(а):
есть дескать в Matlab'e перегруженный оператор *, и перемножение матриц с ним работает быстрее, чем двойной цикл
Я сильно подозреваю, что
1. Матлаб скриптовый, соответственно любой код в нём вне библиотечных функций работает в разы медленнее, чем можно.
2. Перемножение матриц в библиотеке сильно оптимизировано - это та задача, где наивные три вложенных цикла можно обогнать в несколько десятков раз, если писать код с учетом реальной архитектуры.
Правда я подозреваю, что наивные три цикла обгонят любое функциональное украшательство, если оно не будет подперто специальными костылями под эту конкретную задачу.

 
 
 [ Сообщений: 20 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group