Я читал и думал об этом немного. Похоже, что в будущем многоядерные функциональные языки станут более популярными. Я относительный нуб к функциональному программированию. Мое единственное знакомство было академическим, и ничего достаточно сложного, чтобы по-настоящему опробовать этот класс языка.
Итак, насколько я понимаю, чистые функции можно легко и прозрачно распараллелить. Это отличная функция, так как это означает, что нет проблем с написанием многопоточного кода. Однако, похоже, что он не очень помогает с серийным кодом.
Example:
fooN( ... (foo3(foo2(foo1(0)))))
Подобные последовательные вызовы кажутся распространенной, а иногда и неизбежной проблемой. Для меня это корень того, почему распараллеливание так сложно. Некоторые задачи просто (или кажутся) очень последовательными. Позволяет ли «функциональное мышление» лучше разложить некоторые, казалось бы, последовательные задачи? Есть ли в существующих функциональных языках прозрачные механизмы для лучшего распараллеливания высокосерийного кода? Наконец, функциональные языки по своей природе более параллельны, чем ОО или императивные языки, и почему?