"Maxwell's equations of software" examined
Ken Shirriff's blog post analyzes a historic Lisp code snippet, showcasing Lisp's core principles. It highlights code-data interchangeability and the essence of Lisp programming, referencing Alan Kay's "Maxwell's Equations of Software."
Read original articleThe blog post on Ken Shirriff's website delves into the concept of the "Maxwell's Equations of Software," as quoted from Alan Kay. The post explores a half-page code snippet from the Lisp 1.5 Manual, written in 1961 by John McCarthy et al, which is considered the embodiment of Lisp itself. The code defines a universal Lisp function called evalquote, showcasing the meta-language M-expressions that can be translated into S-expressions. The code demonstrates how functions like CAR, CDR, CONS, ATOM, EQ, LAMBDA, and LABEL are implemented using a few primitives. It highlights the concept that in Lisp, code and data are interchangeable, with a concise piece of code being adequate to define a basic Lisp interpreter. The post also touches on the limitations of the presented code, such as the absence of features like arithmetic and the need for additional functions like equals and cadr. Overall, the blog post provides an insightful analysis of the foundational principles of Lisp programming and the significance of the "Maxwell's Equations of Software" analogy.
Related
Weekend projects: getting silly with C
The C programming language's simplicity and expressiveness, despite quirks, influence other languages. Unconventional code structures showcase creativity and flexibility, promoting unique coding practices. Subscription for related content is encouraged.
"Computers Are Useless" and Other Sayings
A collection of quotes by figures like Picasso and Dave Barry humorously and critically discuss computers, programming, and technology's evolution. Themes include limitations, programming challenges, software complexity, and societal impact.
How the Curse of Lisp impacts your business (even if you don't use Lisp)
The Curse of Lisp highlights how languages like Lisp's self-sufficiency can hinder growth by limiting external contributions and fostering insular development practices. Balancing internal efficiency with external innovation is crucial for sustainable system design.
Grokking the Sequent Calculus (Functional Pearl)
The paper introduces the lambda-mu-mu-calculus as a term assignment system for the sequent calculus, emphasizing its symmetry and suitability for compiler intermediate languages. It targets a broader audience and will be presented at ICFP '24.
It's all up for grabs, compound with glue
The article explores Emacs customization using elisp, emphasizing combining utilities like symbol-overlay and multiple-cursors for enhanced workflow efficiency. It also mentions a new blogging service at lmno.lol.
[0] https://www.youtube.com/watch?v=2MYzvQ1v8Ww, around minute 13
One line of code is sufficient to define the 206-bit BLC interpreter in BLC given no primitives whatsoever [1] :
(λ11)(λλλ1(λλλλ3(λ5(3(λ2(3(λλ3(λ123)))(4(λ4(λ31(21))))))(1(2(λ12))(λ4(λ4(λ2(14)))5))))(33)2)
This code tokenizes and parses (something the Lisp code skips) the binary encoding of a lambda term from an input bitstream and applies that term to the remainder of input.> The systematic construction of a one-combinator basis
https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&d...
Some previous discussion:
Related
Weekend projects: getting silly with C
The C programming language's simplicity and expressiveness, despite quirks, influence other languages. Unconventional code structures showcase creativity and flexibility, promoting unique coding practices. Subscription for related content is encouraged.
"Computers Are Useless" and Other Sayings
A collection of quotes by figures like Picasso and Dave Barry humorously and critically discuss computers, programming, and technology's evolution. Themes include limitations, programming challenges, software complexity, and societal impact.
How the Curse of Lisp impacts your business (even if you don't use Lisp)
The Curse of Lisp highlights how languages like Lisp's self-sufficiency can hinder growth by limiting external contributions and fostering insular development practices. Balancing internal efficiency with external innovation is crucial for sustainable system design.
Grokking the Sequent Calculus (Functional Pearl)
The paper introduces the lambda-mu-mu-calculus as a term assignment system for the sequent calculus, emphasizing its symmetry and suitability for compiler intermediate languages. It targets a broader audience and will be presented at ICFP '24.
It's all up for grabs, compound with glue
The article explores Emacs customization using elisp, emphasizing combining utilities like symbol-overlay and multiple-cursors for enhanced workflow efficiency. It also mentions a new blogging service at lmno.lol.