Prawdziwym problemem jest stan.
Języki funkcjonalne nie mają stanu globalnego. Większość problemów przemysłowych wymaga stanu na dużą skalę (jak reprezentujesz księgę lub zestaw transakcji), nawet jeśli niektóre funkcje na małą skalę tak naprawdę tego nie wymagają (przetwarzanie księgi).
Ale uruchamiamy kod na maszynach architektury Von-Neuman, które są z natury pełne. Więc tak naprawdę nie pozbyliśmy się stanu, języki funkcjonalne po prostu ukrywają złożoność stanu przed deweloperem. Oznacza to, że język / kompilator musi radzić sobie ze stanem za kulisami i zarządzać nim.
Tak więc chociaż języki funkcjonalne nie mają stanu globalnego, informacje o ich stanie są przekazywane jako parametry i wynik.
Pojawia się zatem pytanie, czy język może skutecznie obsłużyć państwo stojące za zmysłem? Zwłaszcza, gdy rozmiar danych znacznie przekracza rozmiar architektury.
Patrząc na to od strony sprzętowej
System operacyjny bardzo pomógł w ciągu ostatnich kilku lat w wizualizacji przestrzeni adresowej, więc aplikacje oficjalnie nie muszą się tym martwić. Ale aplikacje, które nie martwią się, że wpadną w pułapkę wyrzucenia sprzętu, gdy presja pamięci staje się intensywna (wyrzucanie sprzętu spowalnia procesy do indeksowania).
Ponieważ programista nie ma bezpośredniej kontroli nad stanem w języku funkcjonalnym, musi polegać na kompilatorze, aby sobie z tym poradzić i nie widziałem języków funkcjonalnych, które dobrze sobie z tym radzą.
Po przeciwnej stronie monety programator z pełnym stanem ma bezpośrednią kontrolę nad stanem i może w ten sposób kompensować warunki niskiej pamięci. Chociaż nie widziałem wielu programistów, którzy są wystarczająco inteligentni, aby to zrobić.
Patrząc od strony branży:
Przemysł ma wielu nieefektywnych programistów z pełnym stanem.
Ale z czasem łatwo jest zmierzyć postępy w tych programach. Rzucasz zespołowi programistów problem, w którym mogą poprawić kod, poprawiając sposób, w jaki program obsługuje stan.
W przypadku programów funkcjonalnych ulepszenia są trudniejsze do zmierzenia, ponieważ musisz ulepszyć narzędzia, które poprawią programy (my tylko patrzymy, jak aplikacje efektywnie obsługują stan bazowy tutaj, a nie ogólną poprawę programu).
Dlatego myślę, że w przemyśle sprowadza się to do możliwości pomiaru ulepszeń w kodzie.
Z perspektywy zatrudnienia
Do wypożyczenia jest wielu programistów z pełną statystyką. Funkcjonalnych programistów trudno znaleźć. Tak więc uruchomiłby się twój podstawowy model podaży i popytu, gdyby branża przeszła na programowanie w stylu funkcjonalnym i nie jest to coś, co chcieliby się wydarzyć (programiści są wystarczająco kosztowni).