А чем кстати отличается процедурщина от фп?
Я думаю впорос стоит поставить по-другому:
«Что ФП добавляет к процедурщине?»
И смотреть на это стоит так: когда-то давно программистам приходилось писать огромные полотна кода где не было ничего кроме инструкций, меток и оператора GOTO, который мог прыгать по этим самым меткам.
Потом подумалось что это не очень удобно и было бы прикольно большую программу собирать из маленьких программ.
Вот вам процедурное программирование (появление процедур/подпрограмм).
А потом уже ооп («че-то всё в одной куче, давайте процедуры сгруппируем по смыслу, положим их в коробочки (объекты) и пусть они между собой сообщениями меняются»)
и фп («а давайте сделаем чтобы одни процедуры передавались в качестве параметров другим процедурам»).
P.S. Никакого таймлайна не соблюдал и понятно что за каждыми подходами были свои идеи. Основная мысль, которую я хотел передать:
парадигмы программирования не противоречат друг другу, каждая просто добавляет что-то к существующим приёмам