Re[16]: Мнение: объектно-ориентированное программирование —
От: Poopy Joe Бельгия  
Дата: 19.09.19 08:14
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Это верно в очень редких случаях, более того, в тех случаях, когда это верно, функциональное программирование используется редко (приведите примеры программ на функциональном языке, которые бы обрабатывали огромные объёмы данных и затыкались бы именно на IO). (Поясню — я имею в виду современное железо, способное обеспечить гигабайты пропускной способности в секунду).


Это верно почти всегда, за исключением числодробительных алгоритмов, которые ни от чего больше не зависят. Ты неверно понимаешь IO. Это не только запись и чтение с диска, это вообще любое взаимодействие с внешним миров. Таймер это IO, любое прерывание от устройства это IO, итд. И их скорость не идет ни в какое сравнение со скоростью CPU.

PJ>>Смелое и бездоказательное утверждение. Я точно так же могу возразить, что в реальность практически любой кода останется примерно таким же. Какой-то, да, станет быстрее, какой-то сделать быстрее написать будет намного сложнее. И чем сложнее код, тем эта вероятность выше.


S>Вот, например тесты производительности. В них функциональщина сливает по производительности практически всегда. Из особо показательных тестов: C# vs F# — функциональный вариант уступает императивному, исполняющемуся в той же среде (net core).


Сравнение f# и c# неверно в принципе, потому что f# ограничен возможностями oo clr. По сути это c# код с дополнительными конструкциями. Разумеется он будет медленнее. В остальном это не сравнение приложений, а сравнение алгоритмов, (неизвестно насколько оптимально реализованных), которые, возможно, вносят нулевую разницу в общую скорость. Разумеется есть места где надо максимальную производительность любой ценой, но обычно такое место очень ограничено и нет никаких проблем использовать там любой язык.

PJ>>Я ровно это и сказал. Хоть на ассемблере перепиши, если приложение ждет сетевой пакет, или просто реагирует на таймер, его общая скорость никак не изменится от переписывания. Где я тут чего наврал?


S>Тут, по-моему, имелось в виду другое: функциональщина используется ограниченно именно потому что существенно медленнее императивного кода, поэтому её используют только в тех случаях, когда производительность не важна.

S>(К примеру, тот же околофункциональный LINQ — отличная штука в целом, но в узких местах приложения лучше от него отказаться).

Питон сливает хаскелю, а то и f#, примерно всегда, тем не менее это мало кого останавливает от его использования.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.