I enjoyed this so much I’m quoting the whole thing here. Alan Kay responds:
My perception is that there are so many flavors of “Software Engineering” today — including many that claim “SE is what we do by definition” — that I can’t answer this question in general. And there is certainly a wide range of approaches that is apparent, from horrendous to “more principled”.
One thing I look for is similarities to some of the strongest approaches in well established engineering disciplines — civil, chemical, aeronautical, electrical, mechanical, bio, nano, etc — and these all include superior CAD tools combined with high definition SIMulation of the CAD models (using supercomputers as needed). Many of them can then take the debugged models directly into semi- or fully-automated FABrication which involves optimization processes, etc..
If we compare with the practices in software, it is hard to find similar levels of CAD<->SIM — remember CAD is about capturing the meaning and intent of the design in a detailed understandable way, and the SIM is to vet the meanings of the CAD. This is primarily semantic. The FAB part is to do all the optimizations of the meanings to allow practical deployable artifacts.
I’ve been trying to find at least one great example of this as of 2020.
What I have been able to find are a number of interesting FAB techniques that are better than they used to be — for example, LLVM and other bottom-level targets and optimizers — but most programmers seem to still program primarily in terms of intertwining meanings and optimizations in the same code (this is not a good approach), and the general design tools seem much too low-level).
Part of what I think has happened is that the movement from raw “hows” in the 50s upwards in level of language (towards more “whats”, and capture of meaning and intent) seems to have ground to a halt somewhere in the 80s and 90s. This really makes a great CAD system difficult (the language forms need to be about meanings and intentions and constraints).
But I’m holding out for at least one exception to this gloomy picture, and I’m dying to be shown it.
My class on media archaeology has a regular assignment where students conduct a “product autopsy,” tearing down old (and hopefully inoperable) gadgets to understand their origins and supply chains. Mobile phones are a favorite example, both because of their intricacy and because few students have seen inside them. The assignment requires learning to recognize not only individual components (camera sensors; capacitors; wire assemblies), but the language of contemporary manufacture, discerning the meaning of circuit boards, barcodes, and part numbers. It is, I think, a popular assignment—but it is rarely a surprising one. While the devices we have dissected over the years have spanned a range of models and manufacturers, they tend to be similar, and filled with similar sorts of symbols. But when my students found what looked to be pencil markings on the interior of an iPhone 5c, we were surprised. Just what were these scribbles, and how did they get there? To answer these questions was not just to follow this broken object’s supply chain back to its moment of assembly, but also to understand what it meant for these marks to be made in the first place.
James Clerk Maxwell made physical models as aids to understanding.
Using the neural-net tool Artbreeder, Photoshop and historical references, I have created photoreal portraits of Roman Emperors. For this project, I have transformed, or restored (cracks, noses, ears etc.) 800 images of busts to make the 54 emperors of The Principate (27 BC to 285 AD).
Every once in a while I check back in on Hundred Rabbits and am always blown away.
Or, as SSC would call it, slack.
I wish I had been introduced to group theory this way.
DNA makes RNA, and RNA makes protein
The central dogma of molecular biology deals with the detailed residue-by-residue transfer of sequential information. It states that such information cannot be transferred back from protein to either protein or nucleic acid.”
“brief but comprehensive introduction to graph representation learning, including methods for embedding graph data, graph neural networks, and deep generative models of graphs”
Datalog + ML + SMT
“the shell is feared because of its incredible power, where a single command can destroy not just local but also remote systems; the shell is maligned because its semantics are non-standard, using word expansion where other languages would use evaluation”
“I conjecture that word expansion is in fact an essential piece of the POSIX shell’s interactivity; word expansion is well adapted to the shell’s use cases and contributes critically to the shell’s interactive feel.”
Great example of the complexity lurking behind software.
When I pay too much attention to the news and start to feel the whole world is on fire, it’s reassuring to see that it’s all happened before.