Why Isn't Functional Programming the Norm? – Richard Feldman
Metosin12 HN recommenders · recommended in 12 months, 2019–2025
talk · general · evergreen · 2019–2025 on HN
Richard Feldman argues that functional programming is not the norm largely because of historical accidents, such as C++ popularity, platform exclusivity, marketing spend and network effects, rather than merit. He traces the history of how languages become mai…
HN treats it as the standard answer to why FP isn't mainstream and why languages succeed.
Up next
2 mo on HNGoing Native 2012 Keynote Stroustrup
savage309
2 HN recommender · 2012–2025
3 mo on HNHandmade Hero Day 001 - Setting Up the Windows Build
Molly Rocket
3 HN recommender · 2017–2021
4 mo on HNCarl Sagan testifying before Congress in 1985 on climate change
carlsagandotcom
4 HN recommender · 2021–2026
5 mo on HNLeslie Lamport: Thinking Above the Code
Microsoft Research
5 HN recommender · 2015–2026
11 mo on HNAlan Kay - Normal Considered Harmful
powerfuloutlet
10 HN recommender · 2012–2026
1 mo on HNWhy There's No Such Thing as a Good Billionaire
Adam Conover
1 HN recommend · 2022–2023
2 mo on HN"Type-Driven Program Synthesis" by Nadia Polikarpova
Strange Loop Conference
2 HN recommender · 2018–2024
7 mo on HNDomain Modeling Made Functional - Scott Wlaschin
NDC Conferences
6 HN recommender · 2018–2024
18 mo on HNRuby Conf 12 - Y Not- Adventures in Functional Programming by Jim Weirich
Confreaks
17 HN recommender · 2013–2026
14 mo on HNThe Soul of Erlang and Elixir • Sasa Juric • GOTO 2019
GOTO Conferences
16 HN recommender · 2019–2024
14 mo on HN"Simple Made Easy" - Rich Hickey (2011)
Strange Loop Conference
14 HN recommender · 2022–2026
13 mo on HN"Making Impossible States Impossible" by Richard Feldman
elm-conf
9 HN recommender · 2017–2026
12 comments from Hacker News
This talk by Richard Feldman is an excellent discussion about why Functional Programming is not the norm - ▶ this video
This is indeed a very interesting question! I’ve also asked myself that time and time again, along the path of slowly discovering what this FP thing is all about over the course of my career. It does look wonderful, it does save you a lot of effort in some cases, where “some” is a vast swathes of computational problems. And its so damn elegant. A lot of examples are thrown around were a bunch of lambda calculus can result in 10-20 fold reduction in source code size. So where’s the catch?There has to be something wrong right? Well recently I stumbled upon a clojure conf talk that tried to tackle precisely this question. ▶ this video The short of it is that its more of a historical inertia and chance than any specific hidden gotcha. Fascinating talk.
Why isn't it more popular? I think Richard Feldman [0] proposed some of the most reasonable theories as to why functional programming isn't the norm. Your language needs to be the platform-exclusive language for a widely used platform, have a killer application for a highly desired application domain, or be backed by a monster war-chest of marketing money to sway opinions. Since Feldman's talk, Python has grown much faster in popularity in the sense of wide use in the market place... but mostly because it's the scripting language of choice for PyTorch and AI-adjacent libraries/tooling/frameworks which is... a killer application. I like OCaml. I started evaluating functional programming in it by taking the INRIA course online. I spent the last four and half years working in Haskell. I've built some side projects in Zig. I was a CL stan for many years. I asked this question a lot. We often say, "use the best tool for the job." Often that means, "use the tool that's available." I think languages like OCaml, Rust, Haskell etc can be "popular," but in the sense that people like to talk about them and want to learn them and be able to use them (at least, as trends come and go). It's different from "popular" as in, "widely adopted." [0] ▶ this video
This is a great talk on exactly this topic from a Clojure conference, if you want a long answer. It focuses on the “functional” feature of Clojure but all of it applies to the whole language (and probably any good lisp) IMO. ▶ this video My brief text answer (focused on Clojure): -python has been around about 20 more years than Clojure -the advantages of Clojure vs python/etc probably aren’t nearly as big as python vs a non memory managed, compiled, static language like C. That whole generation of “scripting” languages had the wind at their backs in a way Clojure and its contemporaries never quite will (though Clojure et al tend to be much better at concurrency and parallelism and this will help a lot) -unfamiliar syntax (not Algol like) and paradigm (not oop)- and the truth is many programmers back away slowly when a thing is too alien -hasn’t found a niche as big as data science or scientific computing or CRUD website building - I think python has aggregated some great academic niches, at least one of which (ML/data science) exploded in popularity. Ruby had the rails community. Clojure seems to have some popularity in fintech but has no big single niche yet that it dominates.
I felt that some of your questions, as well as the general history of popular programming languages, were well laid out in this talk: ▶ this video TL;DW: The presenter mentions that Python experienced a slow but consistent growth trend, leading to its current prominence. Other points he highlighted about its success align with much of the sentiment expressed here.
That doesn't mean the imperative languages are "better", though, just more popular. I recommend the following video titled "Why isn't Functional Programming the Norm?": ▶ this video
There's a great talk -- ▶ this video -- Why Isn't Functional Programming the Norm? – Richard Feldman -- that goes into this. It's a discussion of "why" programming languages succeed.
I recently watched this talk- Why Isn't Functional Programming the Norm? ( ▶ this video ) Here's the HN thread- link I learned in that talk, among other things that Oracle spent $500 million to promote and market Java. - link - link - link
Keep in mind that what may seem like "personality fit" may be more related to "learned imperative programming first". As an analogy, depending on which spoken language a person learned first (as a child, _automatically), learning some new languages may be particularly difficult or quite natural. If we had all learned functional programming concepts first, our minds would be trained to think that way. We all learned functional (declarative) math, and we don't even think about it as such. It's just math. This video gives some plausible explanations as to why imperative programming is more common than functional: ▶ this video
Richard Feldman gave an interesting talk on this in 2019 [0]. He was trying to answer why functional programming isn't mainstream but the opposite is what we're posing here and I think it's for many of the same reasons. Network effects : a lot of these languages were mainstream earlier on and got buy in from a lot of folks who are invested in their continued adoption and success. Platform exclusivity : some companies push their own language ecosystems on their platforms and those languages are often OOP/multi-paradigm languages. Specifically to OOP we have to ask why is the particular style of C++/Java OOP the norm? Why didn't Eiffel, Smalltalk, or Self reach the same market? [0] ▶ this video edit : forgot the link -- oops.
> If in the next fifty years more than, say, 3% of programmers will be programming in a language like Lean, I will eat my hat. You're not even putting any stakes on the table. That's such a safe bet. It's unlikely you'd even have a chance at losing the odds are so stacked. There's a great talk on why functional programming is not the norm: ▶ this video The short of it is: network effects . Haskell, OCaml, SML... they've never had the benefit of being the exclusive language to a popular platform like the web, macOS, or UNIX. They've not yet had a killer app like Rails or Numpy/SciPy/PyTorch. They've certainly not been foisted on the market with a war chest of marketing dollars like Java and C#. And they're not an incremental improvement on the status quo with an obvious, easy benefit. > Now, try to explain to a programmer what kind of object id is That's a rhetorical exercise. You can take a random snippet of APL or Fortran and the outcome would be the same. Every language requires training and effort to learn. I teach people Haskell and TLA+. If you think teaching people the value of a language like Haskell is hard you should see the blank stares I get on the first day teaching experienced developers TLA+. Interested folks will come around eventually and have their moment but it takes training and dedication to get there. > was chosen not with the best interests of programmers in mind I'm well aware. I converse regularly with the maintainers of mathlib and the community. I know th
“Why isn’t functional programming the norm?” by Richard Feldman. Spoiler: not on the basis of merits. ▶ this video “React to the future” by Jordan Walke. Why ReasonML is a logical extension of ReactJS’ programming paradigm. link “Typing the untyped: soundness in gradual type systems” by Ben Weissmann. The trade offs that various gradual type systems make based on their language constraints. link “Let’s program like it’s 1999” by Lee Byron. How the mutual feedback loop of abstraction, syntax and mental model drives the evolution of web technologies. link