TL/DR: It's apparently the full text of a talk in which he's basically that saying declarative programming, having its roots in mathematical logic, is an excellent tool for abstraction, the primary tool we as programmers use to manage complexity, and that he wishes he'd discovered it earlier in his 12 year career of commercial programming.
For the moment let’s think of it as “not imperative programming,” where “imperative programming” is you, the Grand Imperator, telling the program what to do. Declarative programming would instead make you the Grand Declarator: you instead tell the program what it is. And, with that, the program no doubt walks away enlightened. (Even if we don’t.)
All declarative systems are abstract, but perhaps not all abstractions are declarative. What makes an abstraction declarative?
some of those declarative solutions may well be qualitatively better than how we might be solving them otherwise—in fact, I think that’s extremely likely
Declarative code is simpler. It’s usually easier to read, in my experience. It’s smaller, if more spread out; easy to get around. It’s more reliable simply because each component has fewer moving pieces which could fail, and fewer joints between them that could break. On top of all of that, the lack of ordering means that declarative code is immune to race conditions, the single largest issue with concurrency. And it is clearly the direction that the market and the industry is heading in: there is a lot of ongoing, exciting research being done in declarative languages and systems and how to survive in an imperative world.
Nice turn of phrase, Grand Declarator, sir! (Personally, I have been getting right in to ABNF of late - generating regex and API systems and such based upon that.)
For the moment let’s think of it as “not imperative programming,” where “imperative programming” is you, the Grand Imperator, telling the program what to do. Declarative programming would instead make you the Grand Declarator: you instead tell the program what it is. And, with that, the program no doubt walks away enlightened. (Even if we don’t.)
All declarative systems are abstract, but perhaps not all abstractions are declarative. What makes an abstraction declarative?
some of those declarative solutions may well be qualitatively better than how we might be solving them otherwise—in fact, I think that’s extremely likely
Declarative code is simpler. It’s usually easier to read, in my experience. It’s smaller, if more spread out; easy to get around. It’s more reliable simply because each component has fewer moving pieces which could fail, and fewer joints between them that could break. On top of all of that, the lack of ordering means that declarative code is immune to race conditions, the single largest issue with concurrency. And it is clearly the direction that the market and the industry is heading in: there is a lot of ongoing, exciting research being done in declarative languages and systems and how to survive in an imperative world.
Nice turn of phrase, Grand Declarator, sir! (Personally, I have been getting right in to ABNF of late - generating regex and API systems and such based upon that.)