실제 문제는 상태입니다.
기능적 언어에는 전역 상태가 없습니다. 대부분의 산업 문제는 소규모의 일부 기능이 실제로 필요하지 않더라도 (원장 처리) 대규모 상태를 요구합니다 (원장 또는 일련의 거래를 어떻게 표현합니까).
그러나 우리는 본질적으로 상태가 가득 찬 Von-Neuman 아키텍처 시스템에서 코드를 실행하고 있습니다. 따라서 우리는 실제로 상태를 제거하지 않았으며 기능적 언어는 개발자의 상태 복잡성을 숨길뿐입니다. 이는 언어 / 컴파일러가 배후의 상태를 처리하고 관리해야 함을 의미합니다.
따라서 기능적 언어에는 전역 상태가 없지만 해당 상태 정보는 매개 변수 및 결과로 전달됩니다.
그렇다면 문제는 언어가 감각 뒤에있는 상태를 효율적으로 처리 할 수 있을까요? 특히 데이터 크기가 아키텍처의 크기를 훨씬 초과하는 경우.
하드웨어 측면에서 보면
OS는 지난 몇 년 동안 주소 공간을 시각화하는 데 많은 도움을 주었으므로 응용 프로그램은 공식적으로 걱정할 필요가 없습니다. 그러나 메모리 부족이 심해지면 하드웨어를 쓰러 뜨리는 것에 대해 걱정하지 않는 응용 프로그램은 하드웨어를 쓰러 뜨리면 프로세스가 크롤링되는 속도가 느려집니다.
프로그래머가 기능 언어의 상태를 직접 제어하지 않기 때문에이를 처리하기 위해 컴파일러에 의존해야하며 이것을 잘 처리하는 기능 언어를 보지 못했습니다.
코인의 반대편에서 상태 전체 프로그래머는 상태를 직접 제어 할 수 있으므로 메모리 부족 상태를 보상 할 수 있습니다. 비록 실제로 그렇게 똑똑한 프로그래머를 많이 보지는 못했지만.
업계 측면에서 보면 :
업계에는 비효율적 인 스테이트 풀 프로그래머가 많이 있습니다.
그러나 시간이 지남에 따라 이러한 프로그램의 개선을 측정하는 것은 쉽습니다. 프로그램이 상태를 처리하는 방법을 개선하여 코드를 개선 할 수있는 문제에 개발자 팀을 던집니다.
기능적 프로그램의 경우 프로그램 을 개선 할 도구를 개선해야하므로 개선 을 측정하기 가 더 어렵습니다 (프로그램의 전반적인 개선이 아니라 애플리케이션이 기본 상태를 효율적으로 처리하는 방법 만 살펴 봅니다).
따라서 업계에서는 코드 개선 사항을 측정하는 기능이 필요하다고 생각합니다.
채용 관점에서
스탯 가득한 프로그래머가 많이 있습니다. 기능적인 프로그래머는 찾기가 어렵습니다. 따라서 산업이 기능적 스타일의 프로그래밍으로 교체되고 그것이 원하는 것이 아닌 경우 (기본적으로 프로그래머는 비싸다) 기본 공급 및 수요 모델이 시작될 것입니다.