In the last few days, there have been <a> <few> <t...
# share-your-work
s
In the last few days, there have been a few threads here that have inspired me to write this short parable about programming and technology. Let me know how you feel about it. 🙂 https://stefanlesser.substack.com/p/a-parable-about-technology
❤️ 3
đź‘€ 1
d
Didn't know you had a substack! Maybe we should start a thread with just links to our blogs/substacks/article websites
Subscribed anyway, and I've a lot of reading to catch up on....
k
I have seen that parable before... let me search my memory... oh yes, there it is. The Bible. Old Testament. About people planning to build a tower to the sky, and God perturbing their plans by making them speak different languages. So now I am wondering how good that analogy is. Is it hubris to believe that a small group of people can solve big problems that are, to a large part, social rather than technical? Is tech in itself hubris? Which God (or higher principle of life, for those of us who prefer the abstract) has made us incapable of working together at scale to calm our hubris?
🤔 1
Maybe I should add some context to my comment. I have been thinking for a while (couple of years!) about the role of automation, industrialization, formal systems etc. in human societies. The hubris in all of these is the idea of scaling, in particular scaling to "everything", meaning a complete application domain. An automated/deterministic process that grows too much becomes a risk for the ecosystem it is embedded in because it has inevitable side effects that were not part of the deployment plant. That is the analogy to building a tower to the sky. In tech, there was the idea in the 1970s that programming systems like Lisp or Smalltalk should not only manage an entire device (that is actually quite reasonable), but also that once we figure out "the best" such system, it should naturally be adopted by everyone. Today, we understand the requirement of diversity in ecosystems much better, and such ideas seem outdated. And yet, we still produce programming languages and application frameworks that pretend to universality, and in particular make no effort to be interoperable with the other species in their ecosystems.
g
Completely orthogonal to Konrad’s comments, I perceive there to be a deep technical issue. Typically, a new technology first gets used in old-fashioned ways. The first use for electric motors was to pump water up hills to create streams that could be used to run water-wheel-based factories. Our initial use of “computers” is riddled with old-fashioned concepts, like filing cabinets, desktops, and equations written in text on 2D paper - to run fancy calculators for moon-shots and military targeting. Modern uses for computers look entirely different. IMO, these are all asynchronous, distributed and massively parallel, like internet, robotics, gaming, GUIs, blockchain, etc. Our IDEs for “programming” are overly-biased by 1950s beliefs, like using linear, sequential, synchronous, function-based language to control and to reprogram electronic machines. Ironically, the programmers in the parable do not realize that they are quibbling about menial issues and not addressing the fact that all of their languages are essentially the same. Syntax is cheap, paradigms are important. From a paradigm perspective, all of their languages force them to address problems in only one way - using the synchronous, function-based paradigm. “Coding” is usually built upon scaffolding for the synchronous, function-based paradigm. CPU subroutines are not functions. To erect the edifice of function-based programming, recursion and thread-safety on top of electronic, CPU-based machines, one needs to begin by adding extra software - often known as operating systems. This edifice requires millions of lines of “code” to exist before getting out of the starting gate. “Coding” is not equivalent to “programming” nor “reprogramming”, because only one paradigm is encouraged. Again, the interesting problems of the modern day mostly involve asynchrony. Programmers need several new notations that do not force them to begin solving problems by using the synchronous, function-based paradigm. Modern programmers only know how to code, not how to program.
c
The issue from the parable doesn't necessarily scale. If you start with a billion programmers then there's still millions in each faction, which might be enough to solve the problem. This might actually be an advantage if it's important the right technology is used.