Hacker News new | ask | show | jobs
by carapace 2420 days ago
I know it's not for everybody, but go back and read Backus' Turing Award lecture introducing FP: "Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs" https://dl.acm.org/ft_gateway.cfm?id=1283933&type=pdf

The two main points (they're in the title) are eliminating the "von Neumann bottleneck" between the CPU and RAM, and the algebra of [FP] programs, the potential to manipulate programs as one manipulates mathematical formulas.

2 comments

I just skimmed that paper but I don't see a section on how to avoid the bottleneck when your functional program is trapped on a Von Neumann machine. It seems to me that functional constructs have to be mapped down to structures that will suffer the Von Newmann bottleneck if they are being executed on a Von Newmann machine. But there isn't any apparent discussion of an alternative machine architecture, just the computer language.

Indeed one of the complaints you sometimes see about functional programming is the amount of memory churn it produces on a Von Newmann architecture.

I'm actually working on that. I've come up with a way to dynamically create dataflow graphs on banks of hardware interconnected by latching sort-nets and programmed by a simple, pure, functional, "concatinative" programming language called Joy.
Didn't the MIT LISP machines achieve this back in the 80s?
you may want to read this

https://en.wikipedia.org/wiki/Function-level_programming

it's different

I don't think it's useful to differentiate "functional" programming from "function-level" programming as if they are different paradigms, especially in light of e.g. Conal Elliot's work "Compiling to categories": http://conal.net/papers/compiling-to-categories/ where he has built a compiler extension for Haskell that converts it into a point-free form very similar to Backus' "function-level" style of programming.