We all know that trying to get non-pozzed responses to anything involving hot button political/social topics from Big Tech trained AI models is a fool's errand, but I'm wondering if anyone has found them to be of any use when it comes to programming. Despite what a number of my professors say, some of whom are definitely not diversity hires, I haven't found them to be of any use. Maybe it's because I'm only asking hard or niche questions when I can't find the answer elsewhere, but I haven't gotten any help from the bots in my programming tasks. The last time I tried it invented modules to a package out of thin air. Had those modules actually existed I wouldn't have needed to ask the question to begin with. From what I've seen the most it can do is help pajeets cheat in their programming 101 classes. Has anyone here had a different experience?
You're viewing a single comment thread. View all comments, or full comment thread.
Comments (37)
sorted by:
I think to get much use out of them, you'd need to have such a simple task that it could be accomplished in only one or a handful of functions. Something akin to code snippets you might find and adapt from Stack Overflow.
For anything more complex, you'd have to describe it in such a level of detail that you might as well just be writing code at that point. And if the AI did manage to spit out a working program that appears to do what you ask, you'd need to do a shit ton of verification on it to make sure it actually does, in fact, do what you ask.
As a simple example, "I need to do a bunch of work on one thread and store the results as they become available, then display the status and the results of that work in a UI, and it all needs to be thread-safe" isn't something I see an AI being able to do, ever, unless you give it exact, specific detail about absolutely everything. And giving exact, specific detail about absolutely everything is what we call "programming."
I think this is kind of the heart pf the matter, though I disagree with you as to extents.
The earliest compilers changed code from something like "MOV AX, 1" to the exact processor opcodes using the exact registers you specify as a programmer. Today, almost nobody ever needs to use assembly language. I think the last time I used it was in school, writing a Towers of Hanoi calculator!
Then we have languages like C that are a step more abstracted. Especially in the early days of C, and before things like pipelining, threading, etc., became so prevalent, a good C coder could more or less predict the exact assembly code that given C code would produce.
Of course there were other early languages, like LISP, that were far more abstracted, and as we move forward to modern languages, almost all of which implement some degree of functional programmming, that tie between assembly code and the code you write is impossible to discern.
Essentially, our programming languages keep getting more and more abstracted.
LLMs are, imho, the next step in this evolution. They are not perfect. They are still improving--very rapidly--but we seem to be on the precipice of a world where a programmer describing a problem algorithmically to an LLM can get very solid results.
Think of the LLM as a new type of compiler that compiles english into instructions. It's almost the realization of Larry Wall's dream with Perl!
The horror that many programmers feel today is akin to what the assembly experts felt at the unoptimized code streaming out of compilers.
I rarely speak in absolutes, but imho, anyone who says this technology is crap is just ignorant. We are 1-2 years in to see what LLMs can do. What will they be like in 5 years? 10 years? 20 years? Even with simply linear improvements, LLMs are going to have a huge impact on coding for the foreseeable future.
The problem with using natural languages to describe functionality is that natural languages have ambiguities. We already have a game of telephone when the customer tells the PM (or whomever) what they want and then that is eventually relayed to the programmer.
All of the abstractions built on top of machine code are still 100% unambiguous and can deterministically be converted into a lower-level compiled output, whether it's machine code, something that can be JIT compiled to machine code, or some interpreted VM bytecode.
And yeah, the need to write assembly code is largely gone now -- the last time I did was to optimize a blending algorithm to use MMX instructions to calculate 4 pixels simultaneously. 1999 or thereabout. Got a better than 4x performance improvement out of it likely because it was able to make more efficient use of memory fetches 128-bits at a time and MMX instructions have dedicated CPU resources that allows for more other types of instructions run in parallel.
Where the translation happens between language abstractions and machine code is unimportant, and is mostly irrelevant to the discussion IMO. At some point, you need to be able to tell the compiler, "I need a resizable list of 64-bit floating point numbers," and we already have a pretty concise way of doing that: std::vector<double> (or whatever strongly-typed language you prefer -- not interested in getting into debates about duck-typed languages, which just reinforces my point that you can end up with ambiguity).
And I never said the tech is crap, I just don't think it will ever be a replacement for humans in this case. Just because you can't use a hammer as a screwdriver doesn't mean the hammer is crap. Maybe copium on my part, but I'm more worried about losing my job to Laquisha or Sundar because they're the correct color, than to an AI because it's better than me.
I agree that it is not replacement for humans. I agree it's not a replacement for programmers. I've posted a bunch on this article today, and I've tried to be really clear that I view LLMs as a tool and one that you need to be good at your job to know how to use correctly.
My hope is actually that it will put a major dent in the outsourcing industry, because the kind of menial shit programming that so many outsourcing firms do can be done much more time efficiently inhouse.
The people (not you) who are putting their fingers in their ears and saying "my job is safe!" and pointing at the people who talk about AGI are entirely missing the point. LLMs are a tool, they're improving rapidly, and like it or not, they WILL impact how programming is done.