Das eigentliche Problem ist der Zustand.
Funktionale Sprachen haben keinen globalen Status. Die meisten industriellen Probleme erfordern einen Status im großen Maßstab (wie stellen Sie ein Ledger oder eine Gruppe von Transaktionen dar), auch wenn einige Funktionen im kleinen Maßstab dies tatsächlich nicht erfordern (Verarbeitung eines Ledgers).
Wir führen jedoch Code auf Maschinen mit Von-Neuman-Architektur aus, die inhärent staatlich voll sind. Wir haben also den Staat nicht wirklich losgeworden, die funktionalen Sprachen verbergen dem Entwickler nur die Komplexität des Staates. Dies bedeutet, dass Sprache / Compiler mit dem Status hinter den Kulissen umgehen und ihn verwalten müssen.
Obwohl funktionale Sprachen keinen globalen Status haben, werden ihre Statusinformationen als Parameter und Ergebnis übergeben.
Die Frage ist also, ob die Sprache den Staat hinter dem Sinn effizient handhaben kann. Insbesondere wenn die Datengröße die Größe der Architektur bei weitem übersteigt.
Betrachtet man es von der Hardware-Seite
Das Betriebssystem hat in den letzten Jahren viel dazu beigetragen, den Adressraum zu visualisieren, sodass sich Anwendungen offiziell nicht darum kümmern müssen. Aber Anwendungen, die sich keine Sorgen machen, geraten in die Falle, die Hardware zu zerstören, wenn der Speicherdruck zu hoch wird (wenn Hardware zerstört wird, werden Ihre Prozesse langsam kriechen).
Da der Programmierer keinen direkten Einfluss auf den Status in der funktionalen Sprache hat, muss er sich darauf verlassen, dass der Compiler dies erledigt, und ich habe keine funktionalen Sprachen gesehen, die dies gut beherrschen.
Auf der Gegenseite der Münze hat der zustandsreiche Programmierer eine direkte Kontrolle über den Zustand und kann so niedrige Speicherbedingungen ausgleichen. Obwohl ich nicht viele Programmierer gesehen habe, die schlau genug sind, dies zu tun.
Betrachtet man von der Branchenseite:
In der Industrie gibt es viele ineffiziente staatliche Programmierer.
Es ist jedoch einfach, Verbesserungen in diesen Programmen im Laufe der Zeit zu messen. Sie werfen ein Team von Entwicklern auf das Problem, dass sie den Code verbessern können, indem sie den Status des Programms verbessern.
Bei funktionalen Programmen ist es schwieriger, die Verbesserungen zu messen, da Sie die Tools zur Verbesserung der Programme verbessern müssen (wir betrachten nur, wie Anwendungen den zugrunde liegenden Status effizient handhaben, nicht die allgemeine Verbesserung des Programms).
Für die Industrie kommt es meiner Meinung nach auf die Fähigkeit an, Verbesserungen im Code zu messen.
Aus Sicht der Einstellung
Es gibt viele stat-volle Programmierer, die gemietet werden können. Funktionale Programmierer sind schwer zu finden. Ihr grundlegendes Angebots- und Nachfragemodell würde sich also durchsetzen, wenn die Industrie auf funktionales Programmieren umsteigen würde, und das ist nicht das, was sie wollen (Programmierer sind so teuer genug).