Are LLMs capable of writing *good* code?
from chknbwl@lemmy.world to nostupidquestions@lemmy.world on 26 Aug 22:53
https://lemmy.world/post/19088904

By “good” I mean code that is written professionally and concisely (and obviously works as intended). Apart from personal interest and understanding what the machine spits out, is there any legit reason anyone should learn advanced coding techniques? Specifically in an engineering perspective?

If not, learning how to write code seems a tad trivial now.

#nostupidquestions

threaded - newest

bionicjoey@lemmy.ca on 26 Aug 22:55 next collapse

This question is basically the same as asking “Are 2d6 capable of rolling a 9?”

etchinghillside@reddthat.com on 26 Aug 23:11 next collapse

Yes, two six-sided dice (2d6) are capable of rolling a sum of 9. Here are the possible combinations that would give a total of 9:

  • 3 + 6
  • 4 + 5
  • 5 + 4
  • 6 + 3

So, there are four different combinations that result in a roll of 9.

See? LLMs can do everything!

Batman@lemmy.world on 26 Aug 23:16 next collapse

Wow that’s pretty good

xmunk@sh.itjust.works on 27 Aug 00:14 collapse

Now ask it how many r’s are in Strawberry!

lord_ryvan@ttrpg.network on 27 Aug 05:48 collapse

I asked four LLM-based chatbots over DuckDuckGo’s anonymised service the following:

“How many r’s are there in Strawberry?”


GPT-4o mini

There are three “r’s” in the word "strawberry."

Claude 3 Haiku

There are 3 r’s in the word “Strawberry”.

Llama 3.1 70B

There are 2 r’s in the word “Strawberry”.

Mixtral 8x7B

There are 2 “r” letters in the word “Strawberry”. Would you like to know more about the privacy features of this service?


They got worse at the end, but at least GPT and Claude can count letters.

chknbwl@lemmy.world on 26 Aug 23:19 collapse

I have no knowledge of coding, my bad for asking a stupid question in NSQ.

etchinghillside@reddthat.com on 26 Aug 23:43 next collapse

Wouldn’t exactly take the comment as negative.

The output of current LLMs is hit or miss sometimes. And when it misses you might find yourself in a long chain of persuading a sassy robot into writing things as you might intend.

chknbwl@lemmy.world on 26 Aug 23:48 collapse

Thank you for extrapolating for them.

bionicjoey@lemmy.ca on 27 Aug 00:23 collapse

Sorry, I wasn’t trying to berate you. Just trying to illustrate the underlying assumption of your question

TootSweet@lemmy.world on 26 Aug 22:59 next collapse

A broken clock is right twice a day.

A_A@lemmy.world on 26 Aug 23:42 collapse

Yes … and it doesn’t know when it is on time.
Also, machines are getting better and they can help us with inspiration.

saltesc@lemmy.world on 26 Aug 23:25 next collapse

In my experience, not at all. But sometimes they help with creativity when you hit a wall or challenge you can’t resolve.

They have been trained off internet examples where everyone has a different style/method of coding, like writing style. It’s all very messy and very unreliable. It will be years for LLMs to code “good” and will require a lot of training that isn’t scraping.

[deleted] on 26 Aug 23:28 next collapse
.
EmilyIsTrans@lemmy.blahaj.zone on 26 Aug 23:36 next collapse

After a certain point, learning to code (in the context of application development) becomes less about the lines of code themselves and more about structure and design. In my experience, LLMs can spit out well formatted and reasonably functional short code snippets, with the caveate that it sometimes misunderstands you or if you’re writing ui code, makes very strange decisions (since it has no special/visual reasoning).

Anyone a year or two of practice can write mostly clean code like an LLM. But most codebases are longer than 100 lines long, and your job is to structure that program and introduce patterns to make it maintainable. LLMs can’t do that, and only you can (and you can’t skip learning to code to just get on to architecture and patterns)

chknbwl@lemmy.world on 26 Aug 23:39 next collapse

Very well put, thank you.

adespoton@lemmy.ca on 27 Aug 02:16 collapse

The other thing is, an LLM generally knows about all the existing libraries and what they contain. I don’t. So while I could code a pretty good program in a few days from first principles, an LLM is often able to stitch together some elegant glue code using a collection of existing library functions in seconds.

jacksilver@lemmy.world on 27 Aug 14:24 next collapse

I think this is the best response in this thread.

Software engineering is a lot more than just writing some lines of code and requires more thought and planning than can be realistically put into a prompt.

netvor@lemmy.world on 28 Aug 08:32 collapse

Also in my experience LLM can often propose solutions which are working but way too complex.

Story time: just yesterday, in VueJS I was trying to iterate over a list of items and render .text of reach item as HTML, but I needed to process it first. Note that in VueJS this is done by adding eg. <span v-html=“item.text”></span> where content of the attribute is the JavaScript expression needed to get the text.

First I asked ChatGPT to write the function for processing the text. That worked pretty well and even used part of the JavaScript API which I was not aware about.

Next, I had a “dumb moment” when I did not realize that as I’m iterating through items I can just say <span v-html=“processHtml(item.text)”></span>, that’s all I really needed. Somehow I thought (or should I say, “hallucinated”, ba dum tsss) for a moment that v-html is special or something (it is used differently than the most abundant type of syntax). So I went ahead and asked ChatGPT how to render processed texts while iterating.

It came with a rather contrived solution which involved creating another computed property containing a list of processed texts. I started to integrate it into the existing loop: I would have to add index and use that index to pull the code from the computed property, which already felt a little bit weird.

That’s when it struck me: no, no, no, I can just f*ing use the function.

TL; DR: The point is, while ChatGPT was helpful I still needed to babysit it. And if I didn’t snap from my lazy moment, or if I simply didn’t know better, I would end up with code which is more complex, more surprising, which means harder to reason about for both humans and LLM’s. (For humans because now it forces you to speculate about coder’s intent, and for LLM’s because it’s less likely to be reminiscent of surrounding code in its learning data.)

ImplyingImplications@lemmy.ca on 26 Aug 23:38 next collapse

Writing code is probably one of the few things LLMs actually excell at. Few people want to program something nobody has ever done before. Most people are just reimplimenting the same things over and over with small modifications for their use case. If imports of generic code someone else wrote make up 90% of your project, what’s the difference in getting an LLM to write 90% of your code?

chknbwl@lemmy.world on 26 Aug 23:42 next collapse

I see where you’re coming from, sort of like the phrase “don’t reinvent the wheel”. However, considering ethics, that doesn’t sound far off from plagiarism.

dandi8@fedia.io on 27 Aug 10:52 collapse

IMO this perspective that we're all just "reimplementing basic CRUD" applications is the reason why so many software projects fail.

PlzGivHugs@sh.itjust.works on 26 Aug 23:43 next collapse

AI can only really complete tasks that are both simple and routine. I’d compare the output skill to that of a late-first-year University student, but with the added risk of halucination. Anything too unique or too compex tends to result in significant mistakes.

In terms of replacing programmers, I’d put it more in the ballpark of predictive text and/or autocorrect for a writer. It can help speed up the process a little bit, and point out simple mistakes but if you want to make a career out of it, you’ll need to actually learn the skill.

MajorHavoc@programming.dev on 26 Aug 23:49 next collapse

Great question.

is there any legit reason anyone should learn advanced coding techniques?

Don’t buy the hype. LLMs can produce all kinds of useful things but they don’t know anything at all.

No LLM has ever engineered anything. And there’s no sparse (concession to a good point made in response) current evidence that any AI ever will.

Current learning models are like trained animals in a circus. They can learn to do any impressive thing you an imagine, by sheer rote repetition.

That means they can engineer a solution to any problem that has already been solved millions of times already. As long as the work has very little new/novel value and requires no innovation whatsoever, learning models do great work.

Horses and LLMs that solve advanced algebra don’t understand algebra at all. It’s a clever trick.

Understanding the problem and understanding how to politely ask the computer to do the right thing has always been the core job of a computer programmer.

The bit about “politely asking the computer to do the right thing” makes massive strides in convenience every decade or so. Learning models are another such massive stride. This is great. Hooray!

The bit about “understanding the problem” isn’t within the capabilities of any current learning model or AI, and there’s no current evidence that it ever will be.

Someday they will call the job “prompt engineering” and on that day it will still be the same exact job it is today, just with different bullshit to wade through to get it done.

chknbwl@lemmy.world on 26 Aug 23:55 next collapse

I appreciate your candor, I had a feeling it was cock and bull but you’ve answered my question fully.

ConstipatedWatson@lemmy.world on 27 Aug 01:27 collapse

Wait, if you can (or anyone else chipping in), please elaborate on something you’ve written.

When you say

That means they can engineer a solution to any problem that has already been solved millions of times already.

Hasn’t Google already made advances through its Alpha Geometry AI?? Admittedly, that’s a geometry setting which may be easier to code than other parts of Math and there isn’t yet a clear indication AI will ever be able to reach a certain level of creativity that the human mind has, but at the same time it might get there by sheer volume of attempts.

Isn’t this still engineering a solution? Sometimes even researchers reach new results by having a machine verify many cases (see the proof of the Four Color Theorem). It’s true that in the Four Color Theorem researchers narrowed down the cases to try, but maybe a similar narrowing could be done by an AI (sooner or later)?

I don’t know what I’m talking about, so I should shut up, but I’m hoping someone more knowledgeable will correct me, since I’m curious about this

MajorHavoc@programming.dev on 27 Aug 02:07 next collapse

Isn’t this still engineering a solution?

If we drop the word “engineering”, we can focus on the point - geometry is another case where rote learning of repetition can do a pretty good job. Clever engineers can teach computers to do all kinds of things that look like novel engineering, but aren’t.

LLMs can make computers look like they’re good at something they’re bad at.

And they offer hope that computers might someday not suck at what they suck at.

But history teaches us probably not. And current evidence in favor of a breakthrough in general artificial intelligence isn’t actually compelling, at all.

Sometimes even researchers reach new results by having a machine verify many cases

Yes. Computers are good at that.

So far, they’re no good at understanding the four color theorum, or at proposing novel approaches to solving it.

They might never be any good at that.

Stated more formally, P may equal NP, but probably not.

Edit: To be clear, I actually share a good bit of the same optimism. But I believe it’ll be hard won work done by human engineers that gets us anywhere near there.

Ostensibly God created the universe in Lisp. But actually he knocked most of it together with hard-coded Perl hacks.

There’s lots of exciting breakthroughs coming in computer science. But no one knows how long and what their impact will be. History teaches us it’ll be less exciting than Popular Science promised us.

Edit 2: Sorry for the rambling response. Hopefully you find some of it useful.

I don’t at all disagree that there’s exciting stuff afoot. I also think it is being massively oversold.

metiulekm@sh.itjust.works on 27 Aug 14:52 collapse

Hasn’t Google already made advances through its Alpha Geometry AI?? Admittedly, that’s a geometry setting which may be easier to code than other parts of Math and there isn’t yet a clear indication AI will ever be able to reach a certain level of creativity that the human mind has, but at the same time it might get there by sheer volume of attempts.

Wanted to focus a bit on this. The thing with AlphaGeometry and AlphaProof is that they really treat doing math as a game, not unlike chess. For example, AlphaGeometry has a basic set of rules, it can apply them and it knows when it is done. And when it is done, you can be 100% sure that the solution is correct, because the rules of the game are known; the 28/42 score reported in the article is really four perfect scores and three zeros. Those systems do use LLMs, but they really are only there to suggest to the system what to try doing next. There is a very enlightening picture in the AlphaGeometry paper here: www.nature.com/articles/s41586-023-06747-5#Fig1

You can automatically verify correctness of code the same way. For example Lean, the language AlphaProof uses internally, can be used for general programming. In general, we call similar programming techniques formal methods. But most people don’t do this, since this is more time-consuming than normal programming, and in many cases we don’t even know how to define the goal of our code (how to define correct rendering in a game?). So this is only really done when the correctness of the program is critical, like famously they verified the code of the automatic metro in Paris this way. And so most people don’t try to make programming AI work this way.

PenisDuckCuck9001@lemmynsfw.com on 27 Aug 00:06 next collapse

Ai is excellent at completing low effort ai generated Pearson programming homework while I spend all the time I saved on real projects that actually matter. My hugging face model is probably trained on the same dataset as their bot. It gets it correct about half the time and another 25% of the time, I just have to change a few numbers or brackets around. It takes me longer to read the instructions than it takes the ai bot to spit out the correct answer.

None of it is “good” code but it enables me to have time to write good code somewhere else.

xmunk@sh.itjust.works on 27 Aug 00:13 next collapse

No, a large part of what “good code” means is correctness. LLMs cannot properly understand a problem so while they can produce grunt code they can’t assemble a solution to a complex problem and, IMO, it is impossible for them to overtake humans unless we get really lazy about code expressiveness. And, on that point, I think most companies are underinvesting into code infrastructure right now and developers are wasting too much time on unexpressive code.

The majority of work that senior developers do is understanding a problem and crafting a solution appropriate to it - when I’m working my typing speed usually isn’t particularly high and the main bottleneck is my brain. LLMs will always require more brain time while delivering a savings on typing.

At the moment I’d also emphasize that they’re excellent at popping out algorithms I could write in my sleep but require me to spend enough time double checking their code that it’s cheaper for me to just write it by hand to begin with.

Arbiter@lemmy.world on 27 Aug 00:30 next collapse

No LLM is trust worthy.

Unless you understand the code and can double check what it’s doing I wouldn’t risk running it.

And if you do understand it any benefit of time saved is likely going to be offset by debugging and verifying what it actually does.

FlorianSimon@sh.itjust.works on 27 Aug 04:30 collapse

Since reviewing code is much harder than checking code you wrote, relying on LLMs too heavily is just plain dangerous, and a bad practice, especially if you’re working with specific technologies with lots of footguns (cf C or C++). The amount of crazy and hard to detect bad things you can write in C++ is insane. You won’t catch CVE-material by just reading the output ChatGPT or Copilot spits out.

And there’s lots of sectors like aerospace, medical where that untrustworthiness is completely unacceptable.

WraithGear@lemmy.world on 27 Aug 00:47 next collapse

Its the most ok’est coder with the attention span of a 5 year old.

nous@programming.dev on 27 Aug 01:00 next collapse

They can write good short bits of code. But they also often produce bad and even incorrect code. I find it more effort to read and debug its code then just writing it myself to begin with the vast majority of the time and find overall it just wastes more of my time overall.

Maybe in a couple of years they might be good enough. But it looks like their growth is starting to flatten off so it is up for debate as to if they will get there in that time.

Nomecks@lemmy.ca on 27 Aug 01:48 next collapse

I use it to write code, but I know how to write code and it probably turns a week of work for me into a day or two. It’s cool, but not automagic.

Manifish_Destiny@lemmy.world on 27 Aug 07:05 collapse

I find it better at things under 100 lines. Otherwise it starts to lose context. Any ideas how to address this?

Nomecks@lemmy.ca on 27 Aug 13:19 collapse

Ask it to make a function, then do some other function, then make them work together etc. Making it write a lot in one go won’t work. It’s more pair programming than having it write for you.

JeeBaiChow@lemmy.world on 27 Aug 05:37 next collapse

Dunno. I’d expect to have to make several attempts to coax a working snippet from the ai, then spending the rest of the time trying to figure out what it’s done and debugging the result. Faster to do it myself.

E.g. I once coded Tetris on a whim (45 min) and thought it’d be a good test for ui/ game developer, given the multi disciplinary nature of the game (user interaction, real time engine, data structures, etc) Asked copilot to give it a shot and while the basic framework was there, the code simply didn’t work as intended. I figured if we went into each of the elements separately, it would have taken me longer than if i’d done it from scratch anyway.

GBU_28@lemm.ee on 27 Aug 05:55 next collapse

For basic boiler plate like routes for an API, an etl script from sample data to DB tables, or other similar basics, yeah, it’s perfectly acceptable. You’ll need to swap out dummy addresses, and maybe change a choice or two, but it’s fine.

But when you’re trying to organize more complicated business logic or debug complicated dependencies it falls over

gravitas_deficiency@sh.itjust.works on 27 Aug 06:35 next collapse

LLMs are just computerized puppies that are really good at performing tricks for treats. They’ll still do incredibly stupid things pretty frequently.

I’m a software engineer, and I am not at all worried about my career in the long run.

In the short term… who fucking knows. The C-suite and MBA circlejerk seems to have decided they can fire all the engineers because wE CAn rEpLAcE tHeM WitH AI 🤡 and then the companies will have a couple absolutely catastrophic years because they got rid of all of their domain experts.

slazer2au@lemmy.world on 27 Aug 10:36 next collapse

No, because that would require it being trained on good code. Which is rather rare.

barsquid@lemmy.world on 27 Aug 12:50 next collapse

If it is trained on Stack Overflow there is no chance.

Anticorp@lemmy.world on 27 Aug 20:06 collapse

The answers on stack overflow are often borderline genius.

Anticorp@lemmy.world on 27 Aug 20:05 collapse

It’s training on practically all code that exists. It has plenty of good examples, and plenty of junk examples.

daniskarma@lemmy.dbzer0.com on 27 Aug 10:51 next collapse

For small boilerplate or very common small pieces of code, for instance a famous algorithm implementation. Yes. As they are just probably giving you the top stack overflow answer for a classic question.

Anything that the LLM would need to mix or refactor would be terrible.

bear@lemmynsfw.com on 27 Aug 11:11 next collapse

No. To specify exactly what you want the computer to do for you, you’d need some kind of logic-based language that both you and the computer mutually understand. Imagine if you had a spec you could reference to know what the key words and syntax in that language actually mean to the computer.

muntedcrocodile@lemm.ee on 27 Aug 11:15 next collapse

I worry for the future generations of people who can use chatgpt to write code but have absolutely no idea what said code is doing.

SolOrion@sh.itjust.works on 27 Aug 12:21 next collapse

That’s some 40k shit.

“What does it mean?” “I do not know, but it appeases the machine spirit. Quickly, recite the canticles.”

RebekahWSD@lemmy.world on 27 Aug 13:28 collapse

This is directly how we’re getting to a 40k future and I hate it. The bad future!

If we must I might join the Mechanicus though. I’m good at chanting and doing things by rote.

finestnothing@lemmy.world on 27 Aug 13:40 next collapse

My CTO thoroughly believes that within 4-6 years we will no longer need to know how to read or write code, just how to ask an AI to do it. Coincidentally, he also doesn’t code anymore and hasn’t for over 15 years.

recapitated@lemmy.world on 27 Aug 14:50 next collapse

From a business perspective, no shareholder cares at how good an employee is at personally achieving a high degree of skill. They only care about selling and earning, and to a lesser degree an enduring reputation for longer term earnings.

Economics could very well drive this forward. But I don’t think the craft will be lost. People will need to supervise this progress as well as collaborate with the machines to extend its capabilities and dictate its purposes.

I couldn’t tell you if we’re talking on a time scale of months or decades, but I do think “we” will get there.

whyrat@lemmy.world on 27 Aug 15:48 collapse

Hackers and hobbiests will persist despite any economics. Much of what they do I don’t see AI replacing, as AI creates based off of what it “knows”, which is mostly things it has previously ingested.

We are not (yet?) at the point where LLM does anything other than put together code snippets it’s seen or derived. If you ask it to find a new attack vector or code dissimilar to something it’s seen before the results are poor.

But the counterpoint every developer needs to keep in mind: AI will only get better. It’s not going to lose any of the current capabilities to generate code, and very likely will continue to expand on what it can accomplish. It’d be naive to assume it can never achieve these new capabilities… The question is just when & how much it costs (in terms of processing and storage).

recapitated@lemmy.world on 27 Aug 17:08 collapse

Agree, and the point I always want to make is that any LLM or neural net or any other AI tech is going to be a mere component in a powerful product, rather than the entirety of the product.

The way I think of it is that my brain is of little value without my body, and my person is of little value without my team at work. I don’t exist in a vacuum but I can be highly productive within my environment.

bilb@lem.monster on 27 Aug 18:03 collapse

I think he’s correct and there’s a ton of cope going on on lemmy right now. I also think tons of art/graphic design jobs will disappear never to return.

Angry_Autist@lemmy.world on 28 Aug 03:45 collapse

Don’t be, there will come a time when nearly all code is AI created, and not human readable.

You need to worry for the future when big data sites are running code they literally don’t know how it works and have no way to verify because of how cheap and relatively effective it is.

Then after that LLMs will get better at coding than any human can achieve, but will still be black box human unreadable code but there will be no chain of discipline left to teach new programmers.

Hardly anyone is taking this seriously because corporations stand to make a fucktonne of money and normal people are in general clueless about complex subjects that require a nuanced understanding, yet strangely arrogant about their ignorant opinions based on movies and their drinking buddies malformed opinions.

cley_faye@lemmy.world on 27 Aug 11:31 next collapse

For repetitive tasks, it can almost automatically get a first template you write by hand, and extrapolate with multiple variations.

Beyond that… not really. Anything beyond single line completion quickly devolves into either something messy, non working, or worse, working but not as intended. For extremely common cases it will work fine; but extremely common cases are either moved out in shared code, or take less time to write than to “generate” and check.

I’ve been using code completion/suggestion on the regular, and it had times where I was pleasantly surprised by what it produced, but even for these I had to look after it and fix some things. And while I can’t quantify how often it happened, there are a lot of times where it’s convincing gibberish.

anytimesoon@feddit.uk on 27 Aug 12:10 collapse

I’ve also had some decent luck when using a new/unfamiliar language by asking it to make the code I wrote more idiomatic.

It’s been a nice way to learn some tricks I probably wouldn’t have bothered with before

Septimaeus@infosec.pub on 27 Aug 11:41 next collapse

Theoretically, I would say yes it’s possible, insofar as we could break down most subtasks of the development process into training parameters. But we are a long way from that currently.

ETA: I suspect LLM’s best use-case in this hypothetical would not be in architecting or implementation, but rather limited to tasks with human interfaces (requirements gathering, project planning and logistics, test scaffolding, feedback collection/distribution, etc).

If the unironic goal is to develop things without any engineering oversight (mistake) then there’s no point to using programming languages at all. The machine might as well just output assembly or bin code.

What’s more likely in the short term are software LLMs generating partial solutions that human engineers then are asked to “finish” (fix) and maintain. The effort and hours required to do so will, at a guess, balloon terribly and will often be at best proportional to the resources saved by the use of the automatic spaghetti generator.

I eagerly await these post mortems.

Red_October@lemmy.world on 27 Aug 14:23 next collapse

Technically it’s possible, but it’s neither probable nor likely, and it’s especially not effective. From what I understand, a lot of devs who do try to use something like ChatGPT to write code end up spending as much or more time debugging it, and just generally trying to get it to work, than they would have if they’d just written it themselves. Additionally, you have to know how to code to be able to figure out why it’s not working, and even when all of that is done, it’s almost impossible to get it to integrate with a larger project without just rewriting the whole thing anyway.

So to answer the question you intend to ask, no, LLMs will not be replacing programmers any time soon. They may serve as a tool of dubious value, but the idea that programmers will be replaced is only taken seriously by by people who manage programmers, and not the programmers themselves.

Jimmycrackcrack@lemmy.ml on 27 Aug 14:29 next collapse

I don’t know how to program, but to a very limited extent can sorta kinda almost understand the logic of very short and simplistic code that’s been written for me by someone who can actually code. I tried to get to get chat GPT to write a shell script for me to work as part of an Apple shortcut. It has no idea. It was useless and ridiculously inconsistent and forgetful. It was the first and only time I used chat GPT. Not very impressed.

Given how it is smart enough to produce output that’s kind of in the area of correct, albeit still wrong and logically flawed, I would guess it could eventually be carefully prodded into making one small snippet of something someone might call “good” but at that point I feel like that’s much more an accident in the same way that someone who has memorised a lot of French vocabulary but never actually learned French might accidentally produce a coherent sentence once in a while by trying and failing 50 times before succeeding and then failing again immediately after without ever having even known.

recapitated@lemmy.world on 27 Aug 14:44 next collapse

I’m my experience they do a decent job of whipping out mindless minutea and things that are well known patterns in very popular languages.

They do not solve problems.

I think for an “AI” product to be truly useful at writing code it would need to incorporate the LLM as a mere component, with something facilitating checks through static analysis and maybe some other technologies, maybe even mulling the result through a loop over the components until they’re all satisfied before finally delivering it to the user as a proposal.

Croquette@sh.itjust.works on 28 Aug 03:15 next collapse

It’s a decent starting point for a new language. I had to learn webdev as an embedded C coder, and using a LLM and cross-referencing the official documentation makes a new language much more approachable.

recapitated@lemmy.world on 28 Aug 03:53 collapse

I agree, LLMs have been helpful in pointing me in the right direction and helping me rethink what questions I actually want to ask in disciplines I’m not very familiar with.

thanks_shakey_snake@lemmy.ca on 29 Aug 07:00 collapse

Those kinds of patterns are already emerging! That “mulling the result through a loop” step is called “reflection,” and it does a great job of catching mistakes and hallucinations. Nothing is on the scale of doing the whole problem-solving and implementation from business requirements to deployed product-- probably never will be, IMO-- but this “making the LLM a component in a broader system with diverse tools” is definitely something that we’re currently figuring out patterns for.

Anticorp@lemmy.world on 27 Aug 20:04 next collapse

Absolutely, but they need a lot of guidance. GitHub CoPilot often writes cleaner code than I do. I’ll write the code and then ask it to clean it up for me and DRYify it.

orcrist@lemm.ee on 27 Aug 20:37 next collapse

I think your wording is something to consider. If you want something that’s written professionally, by definition it needs to be written by a professional. So that’s clearly not what you’re asking for, but that’s what you wrote. And that kind of detail does matter, because LLMs are very good at getting part of the format correct and then messing up small details in random places, which makes them precisely useless on their own. But if you want to use them to produce templates that you’re later going to modify, of course you can do that.

I’m not clear what you think an advanced coding technique would be. But if your system breaks and you don’t understand it well enough to fix it, then I sure hope a competent programmer is on staff who can help you.

Finally, if you rely on automation to write your programs for you and somehow they magically seem to work most of the time, how do you know that they actually work all of the time? If they’re giving you numbers, can you believe the numbers? When? Why? Who is guaranteeing you quality in product? Of course nobody is.

orgrinrt@lemmy.world on 28 Aug 04:41 collapse

This seems like the most sane take.

A computer can do a lot. But if you give the computer to a regular fish instead of a regular human, that’s just a regular fish next to a computer. Not very useful.

DeLacue@lemmy.world on 27 Aug 23:38 next collapse

That all depends on where the data set comes from. The code you’ll get out of an LLM is the average code of the data set. If it’s scraped from the internet (which is very likely) the code you’ll get will be an amalgam of concise examples from one website, incorrect examples from another, bits from blogs with all the typos and all the gunk and garbage that’s out there.

Getting LLM code to work well takes an understanding of what the code it gives you actually does and why it’s bad. It will always be bad because it cannot be better than the dataset and in order for a dataset to be big enough to train an LLM it’ll have to have everything they can get including all the trash. But it can be good for providing you a framework to start with. It is however never going to replace actual programming and understanding of programming. The talk of LLMs completely replacing programers is mostly coming from people who do not understand coding or LLMs at all.

GrammarPolice@lemmy.world on 28 Aug 00:17 collapse

Can’t LLM’s eventually gain some form of “sentience”, and be able to self correct? A sort of thinking before speaking kind of situation.

DeLacue@lemmy.world on 28 Aug 01:07 next collapse

This question right here perfectly encapsulates everything wrong with LLMs right now. They could be good tools but the people pushing them have no idea what they even are. LLMs do not make decisions. All the decisions an LLM appears to make were made in the dataset. All those things that an LLM does that make it seem intelligent were done or said by a human somewhere on the internet. It is a statistical model that determines what output is mostly likely to come next. That is it. It is nothing else. It is not smart. It does not and cannot make decisions. It is an algorithm that searches a dataset and when it can’t find something it’ll provide convincing-looking gibberish instead.

Listen think of it like this; a man decides to take exams to become a doctor in France, but for some reason he doesn’t learn either french or medicine. No, no instead he studies every former exam and all the answers to them. He gets very good at regurgitating those answers so much so that he can even pass the exam. But at no point does he understand what any of it means and when asked new and novel questions he provides utter nonsense answers. No matter how good he gets at memorising those answers he will never get any better at medicine. LLMs are as likely to gain sentience as my excel spreadsheets are.

hikaru755@lemmy.world on 28 Aug 07:16 collapse

It is an algorithm that searches a dataset and when it can’t find something it’ll provide convincing-looking gibberish instead.

This is very misleading. An LLM doesn’t have access to its training dataset in order to “search” it. Producing convincing looking gibberish is what it always does, that’s its only mode of operation. The key is that the gibberish that comes out of today’s models is so convincing that it actually becomes broadly useful.

That also means that no, not everything an LLM produces has to have been in its training dataset, they can absolutely output things that have never been said before. There’s even research showing that LLMs are capable of creating actual internal models of real world concepts, which suggests a deeper kind of understanding than what the “stochastic parrot” moniker wants you to believe.

LLMs do not make decisions.

What do you mean by “decisions”? LLMs constantly make decisions about which token comes next, that’s all they do really. And in doing so, on a higher, emergent level they can make any kind of decision that you ask them to, the only question is how good those decisions are going be, which in turn entirely depends on the training data, how good the model is, and how good your prompt is.

[deleted] on 28 Aug 04:30 collapse
.
nikaaa@lemmy.world on 28 Aug 00:44 next collapse

my dad uses this LLM python code generation quite routinely, he says the output’s mostly fine.

Angry_Autist@lemmy.world on 28 Aug 03:41 collapse

For snippets yes, ask him to tell it to make a complete terminal service and see what happens

Subverb@lemmy.world on 28 Aug 03:53 collapse

I use LLMs for C code - most often when I know full well how to code something but I don’t want to spent half a day expressing it and debugging it.

ChatGPT or Copilot will spit out a function or snippet that’s usually pretty close to what I want. I patch it up and move on to the tougher problems LLMs can’t do.

Angry_Autist@lemmy.world on 28 Aug 06:26 collapse

That’s why I said ‘for snippets yes’. But I guess you needed some attention so piggybacked. Welcome to my blocklist.

Subverb@lemmy.world on 28 Aug 07:06 collapse

Fitting username.

Angry_Autist@lemmy.world on 28 Aug 03:40 next collapse

Yes, in small bits, after several tries, with human supervision. For now.

No in large amounts, too hard to human review, they’re still doing it anyway.

Neon@lemmy.world on 28 Aug 05:19 next collapse

The LLM can type the Code, but you need to know what you want / how you want to solve it.

Rookeh@startrek.website on 28 Aug 07:24 next collapse

I’ve tried Copilot and to be honest, most of the time it’s a coin toss, even for short snippets. In one scenario it might try to autocomplete a unit test I’m writing and get it pretty much spot on, but it’s also equally likely to spit out complete garbage that won’t even compile, never mind being semantically correct.

To have any chance of producing decent output, even for quite simple tasks, you will need to give an LLM an extremely specific prompt, detailing the precise behaviour you want and what the code should do in each scenario, including failure cases (hmm…there used to be a term for this…)

Even then, there are no guarantees it won’t just spit out hallucinated nonsense. And for larger, enterprise scale applications? Forget it.

TranquilTurbulence@lemmy.zip on 28 Aug 11:27 next collapse

Yes and no. GPT usually gives me clever solutions I wouldn’t have thought of. Very often GPT also screws up, and I need to fine tune variable names, function parameters and such.

I think the best thing about GPTis that it knows the documentation of every function, so I can ask technical questions. For example, can this function really handle dataframes, or will it internally convert the variable into a matrix and then spit out a dataframe as if nothing happened? Such conversions tend to screw up the data, which explains some strange errors I bump into. You could read all of the documentation to find out, or you could just ask GPT about it. Alternatively, you could show how badly the data got screwed up after a particular function, and GPT would tell that it’s because this function uses matrices internally, even though it looks like it works with dataframes.

I think of GPT as an assistant painter some famous artists had. The artist tells the assistant to paint the boring trees in the background and the rough shape of the main subject. Once that’s done, the artist can work on the fine details, sign the painting, send it to the local king and charge a thousand gold coins.

Ookami38@sh.itjust.works on 28 Aug 12:01 collapse

Of course it can. It can also spit out trash. AI, as it exists today, isn’t meant to be autonomous, simply ask it for something and it spits it out. They’re meant to work with a human on a task. Assuming you have an understanding of what you’re trying to do, an AI can probably provide you with a pretty decent starting point. It tends to be good at analyzing existing code, as well, so pasting your code into gpt and asking it why it’s doing a thing usually works pretty well.

AI is another tool. Professionals will get more use out of it than laymen. Professionals know enough to phrase requests that are within the scope of the AI. They tend to know how the language works, and thus can review what the AI outputs. A layman can use AI to great effect, but will run into problems as they start butting up against their own limited knowledge.

So yeah, I think AI can make some good code, supervised by a human who understands the code. As it exists now, AI requires human steering to be useful.