When asked, “What is the value of learning lambda calculus,” Gary Bernhardt replied, “My favorite reason to learn a bit about the lambda calculus: it shows us 1) how simple computation is (at first it seems too simple to compute anything ‘real’); and 2) all of our programming complexity is invented by us (for reasons both good and bad).”
Posts in the “programming” category
I haven’t watched this video from Ruby Conf 2012 by Jim Weirich yet, but if you’re interested in learning about functional programming only for the sake of learning, here’s the description: “One of the deepest mysteries in the functional programming world is the Y-Combinator. Many have heard of it, but few have mastered its mysteries. Although fairly useless in real world software, understanding how the Y-Combinator works and why it is important gives the student an important insight into the nature of functional programming.”
A long time ago — 2005, to be exact — I read this article named Making wrong code look wrong, and it was a big influence on me. These days I don’t know how many people use variable naming conventions, but when working on web applications I still like the “us” (unsafe) and “s” (safe) convention for handling user input. As Joel Spolsky discusses in that article, that convention has a good way of making wrong software code look wrong.
I can’t say I understand it all, but Alan Kay wrote an article on Quora titled, Why is FP seen as the opposite as OOP rather than an addition to it?
“Many functions in Lisp are list-eaters.”
From the book, Land of Lisp
(The same can be said about pure functions in Scala.)
“Talk is cheap. Show me the code.”
~ Linus Torvalds
Last night I was reading the classic old book, The Pragmatic Programmer, and came across this definition of DRY, an acronym that stands for Don’t Repeat Yourself:
“Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.”
That’s well stated, especially after a recent experience in which I found some code where I created an “Add Widget” dialog in a different way than I created its related “Edit Widget” dialog. I created the main pane of the dialog the same way, but I managed the details of the two dialogs that contained that pane differently, and I realized what I had done when I decided to make the dialog resizable. When I discovered what I had done, I refactored the code so both the Add and Edit dialogs were created by a single method.
Whenever I see a programming error, I try to imagine the circumstances behind it.
From this Cornell University page, Google’s AlphaZero algorithm has been generalized to learn new games given only the game rules: “In this paper, we generalise this approach into a single AlphaZero algorithm that can achieve, tabula rasa, superhuman performance in many challenging domains. Starting from random play, and given no domain knowledge except the game rules, AlphaZero achieved within 24 hours a superhuman level of play in the games of chess and shogi (Japanese chess) as well as Go, and convincingly defeated a world-champion program in each case.”
Amazon AWS is bringing AI and deep learning to the masses with their SageMaker and DeepLens projects. itworld.com has a story about it here.
I haven’t read it yet, but I just added Category Theory for Programmers to my “need to read” list.
Here’s a “99 bugs in the code” t-shirt.
Programmers can celebrate Christmas on Halloween:
31 oct = 25 dec
(3*8 + 1) == (2*10 + 5)
Apparently at some point Alan Kay said, “Lisp is the greatest single programming language ever designed,” and in this Quora post he writes about what he meant.
Mark Burgess has a long article based on the keynote address for the Reactive Summit 2017 titled, Microservices, the future of society, and all that.
underscore.io has a nice article about code reviews titled, Getting into other people’s code.
“Show me your flowcharts (source code), and conceal your tables (domain model), and I shall continue to be mystified; show me your tables (domain model) and I won’t usually need your flowcharts (source code): they’ll be obvious.”
~ Fred Brooks, “The Mythical Man Month”
This image telling where the name “lambda” (in lambda calculus) comes from is currently floating around on Twitter.