3 ms·
I think the key bit of the title is "Algebra of Programs". This is a piece about being able to calculate programs. In section 12, Backus goes into some detail o
by chas 12y ago
I think the key bit of the title is "Algebra of Programs". This is a piece about being able to calculate programs. In section 12, Backus goes into some detail on how this construction makes algebraic reasoning easier and gives some specific examples. While it is not required to have a pure FP system to have a language that can be reasoned about algebraically, introducing arbitrary ad-hoc iteration will certainly destroy those algebraic properties.
I think this ties in well with Erik Meijer's essay from a few days ago[1]. If you are trying to produce a framework for mathematical reasoning, it does not make sense to allow arbitrary exceptions. As a species, humans are pretty new to this whole computing thing, so I would agree we don't have it figured out yet. However, over the last 5000 years or so we have developed a shockingly effective toolkit for reasoning about arbitrarily-defined abstract objects and I don't think it is unreasonable to try to bring those tools to bear on a newer class of abstract object, that is to say programs. The cost of this is that we have to figure out how to formalize our ad-hoc methods. This will be painful, but every engineering discipline does it. In essence, formalized design methods applied to practical problems are the core of engineering practice in general. For example, I think software engineering right now is in the same place as electronic filter design was in the 1920's. We have methods that work, given enough design effort, but our results are brittle and it is very difficult to make changes to working systems without introducing problems.
[1] https://news.ycombinator.com/item?id=7654601 https://news.ycombinator.com/item?id=7654601
[2] http://en.wikipedia.org/wiki/Butterworth_filter#Original_paper http://en.wikipedia.org/wiki/Butterworth_filter#Original_pap...
Note: I am blown away by Sussman's talk every time I watch it, but I think throwing out math as a tool for understanding computing is very premature given its success as a tool for building and understanding abstraction, especially given that computing as a field started as an attempt to understand some deep questions about the foundations of mathematics.
- discreteevent 12y ago"but I think throwing out math as a tool for understanding computing is very premature given its success as a tool for building and understanding abstraction" But the problem with mathematics is that it doesn't deal with time. This may (in a sapir-whorf fashion) be limiting our understanding of the universe (see Lee Smolin's Time Reborn). But even if the universe is actually timeless in many circumstances it still does not suit us to model it like that. We can have some timeless physical law expressed mathematically (say F=ma) and if we know all the initial conditions in a fairly pure environment we can predict the state of the system at any time. But this kind of system is useless in many real world situations. For example we don't build a control system for a robot or a car based on this kind of thinking. We don't try and predict the state of the world. We just treat it as a stateful system that changes and we keep reading those changes and then try and behave accordingly - Its all I/O and state. Similarly our brains in order to be efficient do hardly any calculation, instead its a massive cache against which we pattern match (see "On Intelligence"). As Leslie Lamport's state:. "Computer scientists collectively suffer from what I call the Whorfian syndrome the confusion of language with reality. Since these devices are described in different languages, they must all be different. In fact, they are all naturally described as state machines. "
- userbinator 12y agoespecially given that computing as a field started as an attempt to understand some deep questions about the foundations of mathematics. I believe that computing started as an attempt to solve real problems, and maths just happened to be the one that people wanted to work on the hardest because, quite frankly, no one wanted to do arithmetic and algebra all day long. A "computer", just like "calculator", used to be a human.