10-11-2024, 03:45 PM
Storytime: When I was a new college graduate in Comp. Eng. (many moons ago), I burst into my career with the starry-eyed optimism that I would change the world, one C++ program at a time. I was bewildered to discover that 90+% of the work being done in the server farm was running Perl or even simple Bash scripts. At first, I was horrified. "Surely, the world does not run on Perl!" (h/t xkcd) "This is a horrible relic of the past! It doesn't even have a proper OOP system!" But then I tried it. It blew my mind. In a second or less, I could scan an enormous log file and find complex patterns that would tie a grep command into knots, and would require a full-blown, 10,000-line C++ application ... in a hundred lines of Perl. "What is this monstrosity? It is neither a 'true' programming-language nor a scripting language. It is neither compiled nor interpreted (or, rather, it's both). It's horrific! And it's beautiful!" That is when I discovered the power of language-as-such, without respect to the heady SW Eng. considerations of application requirements, formal specifications, extensibility, maintainability, DRY, and on and on. So, I just started coding in this horrible language like mad, and as I did, my entire way of thinking about what programming even is eventually changed.
My prediction is that LLMs are going to have (and are already having) a similar effect on the next generation of computing systems. It doesn't make sense to just tell a computer what to do (in plain English). But we're already doing it. And we're going to be doing a lot more of it in the future. But remember the lesson of Perl: Perl is powerful in part because it sacrifices formality for a principle called "DWIM" ("Do What I Mean"), which makes programming in Perl feel a little bit like just telling the computer what to do but Perl -- and (later) Python, Ruby, JS, etc. who adopted some similar conventions -- did not obsolete C++ or stodgy, old-fashioned programming. That's because, when you dig down deep enough into a computing system, there are components so simple that you can't just "tell them what to do". You really have to break it down into painfully explicit, step-by-step instructions. And until we can materialize matter by humming the right frequencies, we're stuck with this situation. There will always be some tiniest components of a computing system that are too dumb to be told what to do in any natural-language sense. So, old-fashioned programming will never go away until Atlantis is revived (or the New Creation, depending on how you look at it). But the vast majority of programming is eventually going to shift to something like an LLM-front-end, with a translation layer to some underlying language (probably JS since this is Clown World and we are obviously being punished for our many sins), which will then actually run on the system. This is kind of like Cython or Perl XS which can translate these very high-level languages down into an executable that can run standalone like an ordinary C++ application. We're not there, yet, but it's coming.
tl;dr: Everyone is wrong (except me, of course...)
Connect With Us