Over the last year I’ve been learning Swift and starting to put together some iOS apps. I’d definitely class myself as a Swift beginner.

I’m currently building an app and today I used ChatGPT to help with a function I needed to write. I found myself wondering if somehow I was “cheating”. In the past I would have used YouTube videos, online tutorials and Stack Overflow, and adapted what I found to work for my particular usage case.

Is using ChatGPT different? The fact that ChatGPT explains the code it writes and often the code still needs fettling to get it to work makes me think that it is a useful learning tool and that as long as I take the time to read the explanations given and ensure I understand what the code is doing then it’s probably a good thing on balance.

I was just wondering what other people’s thoughts are?

Also, as a side note, I found that chucking code I had written in to ChatGPT and asking it to comment every line was pretty successful and a. big time saver :D

The Bard in Green
link
fedilink
English
-11Y

Not using it will make it awfully hard to compete with all the devs who ARE using it.

Asking to ChatGPT to write comments is a GREAT idea!

Cheating? What test or game are you playing that it might be considered cheating? Honestly, I feel it’s a legitimate tool to build applications and it can help teach you along the way. If you can stomach using a Microsoft tool then Bing Chat might be an even better option. It’s the same technology with a better, IMO, data set.

I’ve never seen utilizing advancing tools as “cheating”, but I can understand why purists might scoff at it. You should always be running checks and making sure everything is legit before deployment anyway, so I have a hard time seeing it as anything but Autopilot+.

No, it’s not cheating (unless you are using it to do your homework, I guess). It’s a tool and like any other we learn how to use it appropriately.

But one needs to be aware of other ethical concerns related to using AI generated code. The discussion revolves around companies (OpenAI, Github, etc.) training their models using the code written by people who have not consented use of their code as training data. In some cases, licensing is clear and allows for such use, but in some cases it’s debatable (I’m not that much involved in those discussions, so I cannot provide more details).

When creating software, the value we bring is the understanding of a problem and the ability to ask the correct questions that will bring us to a good solution. In simple scenarios, even a machine can do what we do and we should definitely use the machine instead of spending time on that.

Over time you’ll realize Chatgpt has giant holes.

As a developer you do use tools every day – you probably use a rapid gui tool, you use a compiler, you use APIs, and they’re things you probably couldn’t build on your own. Even under MS-DOS, you’re using bios or msdos interrupts. The PC also handles lot of stuff.

So it’s just another tool, and it doesn’t do everything so you need to use it as one thing in your pouch. Don’t rely on it too much, and be mindful of IP concerns – ai is like a monkey with a camera legally, you can’t copyright whatever it creates.

This! Not even 2 months ago I had a classmate be convinced that he could prompt ChatGPT to write a program that could both encrypt and then decrypt files and store the key secured. It didn’t do a single one of those things so we got a long way to go until we got ChatGPT Operating Systems.

@mrkite@programming.dev
link
fedilink
English
61Y

My favorite test for ChatGPT is to ask it to write a function to divide two numbers in 6502 assembly. Not only is there no DIV instruction to rely on, but the 6502 is very register starved, so you get a lot of screwups. Here’s one example of what ChatGPT generated:

; Inputs:
; - A: dividend
; - X: divisor

DIVISION:
    LDX #0       ; initialize quotient to 0
    CPX #0       ; check for divide-by-zero error
    BEQ DIVIDE_BY_ZERO
    CLC          ; clear carry flag
DIV_LOOP:
    CMP X,A      ; compare divisor with dividend
    BCC DIV_DONE ; if divisor is greater, division is complete
    SEC          ; set carry flag
    ROL A        ; shift dividend left
    INX          ; increment quotient
    JMP DIV_LOOP ; continue division
DIV_DONE:
    RTS          ; return from subroutine
DIVIDE_BY_ZERO:
    ; handle divide-by-zero error here
    RTS

You can see it immediately overwrites the divisor with the quotient, so this thing will always give a divide by zero error. But even if it didn’t do that, CMP X,A is an invalid instruction. But even if that wasn’t invalid, multiplying the dividend by two (and adding one) is nonsense.

@Deely@programming.dev
link
fedilink
English
61Y

Honestly I still don’t get it. Every dialog with ChatGPT where I tried to do something meaningful always ends with ChatGPT hallucinations. It answers general questions, but it imagine something everytime. I asks for a list of command line renderers, it returns list with a few renderers that do not have CLI interface. I asks about library that do something, it returns 5 libraries with one library that definitely can’t do it. And so on, so on. ChatGPT is good on trivial task, but I don’t need help with trivial task, I can do trivial task myself… Sorry for a rant.

That’s what (most) people don’t understand. It’s a language model. It’s not an expert system and it’s not a magical know-it-all oracle. It’s supposed to give you an answer like a random human would do. But people trust it much more as they would trust a random stranger, because “it is an AI”…

No you aren’t the only one. I’ve prompted ChatGPT before for SFML library commands and it’s given me commands that either don’t work anymore or just never existed everytime.

@axo10tl@sopuli.xyz
link
fedilink
English
3
edit-2
1Y

That’s because ChatGPT and LLM’s are not oracles. They don’t take into account whether the text they generate is factually correct, because that’s not the task they’re trained for. They’re only trained to generate the next statistically most likely word, then the next word, and then the next one…

You can take a parrot to a math class, have it listen to lessons for a few months and then you can “have a conversation” about math with it. The parrot won’t have a deep (or any) understanding of math, but it will gladly replicate phrases it has heard. Many of those phrases could be mathematical facts, but just because the parrot can recite the phrases, doesn’t mean it understands their meaning, or that it could even count 3+3.

LLMs are the same. They’re excellent at reciting known phrases, even combining popular phrases into novel ones, but even then the model lacks any understanding behind the words and sentences it produces.

If you give an LLM a task in which your objective is to receive factually correct information, you might as well be asking a parrot - the answer may well be factually correct, but it just as well might be a hallucination. In both cases the responsibility of fact checking falls 100% on your shoulders.

So even though LLMs aren’t good for information retreival, they’re exceptionally good at text generation. The ideal use-cases for LLMs thus lie in the domain of text generation, not information retreival or facts. If you recognize and understand this, you’re all set to use ChatGPT effectively, because you know what kind of questions it’s good for, and with what kind of questions they’re absolutely useless.

I’ve only ever done X86 Assembly. But oh lord that does not look like it can really do much. Yet still somehow has like 20 lines.

@colonial@lemmy.world
link
fedilink
English
21Y

I recently took an “intro to C” course at my university, despite already having some experience - they wouldn’t let me test out - so I ended up helping a few of my classmates. Some had made the rookie mistake of “posting the assignment into ChatGPT and hitting enter,” whereupon their faces were eaten by nasal demons.

Here’s the worst example I saw, with my comments:

char* getName() {
    // Dollar store ass buffer
    char name[1];

    printf("Enter your name: ");
    // STACK GOES BOOM
    scanf("%s", name);
    
    // Returning stack-allocated data, very naughty
    return name;
}

Sighs

@danc4498@lemmy.world
link
fedilink
English
111Y

Anything that isn’t assembly language is cheating.

no

Yes and no. If your goal is to learn how to code manually, then you are “cheating” in that you may not learn as much.

If your goal is to learn how to utilize AI to assist you in daily tasks, I would say you’re not.

If your goal is to provide value for others through how much you can produce in a given amount of time, then you’re definitely not.

Cheating who?

Its only cheating if you pretend you didn’t use it. Chatgpt provides based on what you ask and you are responsible for its endresult which will not be perfect and only as good as you can understand and use it. Its a super effective powertool and aid but hiding that your using it is like saying you code with just a keyboard and no monitor.

I wrote a fairly detailed spec for some software and told it what dependencies to use, what it should do, and what command-line options it should use. The base was a decent starting point, but after several hours of back-and-forth, after actually reading the code, I realized it had completely misinterpreted my spec somehow and implemented a similar feature in a completely broken way, as well as making a few mistakes/redundancies elsewhere. I tried to coach it to fix these issues, but it just couldn’t cope.

I spent about 3 hours getting this base code generated, and about 5 hours re-writing it and implementing the features properly. The reason I turned to ChatGPT is because I needed this software written by the end of the day, and I didn’t have time to read all the different docs for the dependencies I needed to use to write it. It likely would have taken me at least 2 days to write this program myself. It was an interesting learning experience, but my only ChatGPT usage in the future is likely to be with individual code blocks.

You really need to pay attention if you’re using LLMs to generate code. I’ve found it usually gets at least one thing wrong, and sometimes multiple things horribly wrong. Don’t rely on it; look for other sources to corroborate all of its explanations. Additionally, please do not feed proprietary, copyrighted code into ChatGPT. The software I was writing was released under a free license. OpenAI will use it as training data unless you use their API and opt out of it. ChatGPT isn’t really a tool; it’s a service which is using you as much as you’re using it.

Baldur Nil
link
fedilink
English
1
edit-2
1Y

I had similar experiences and nowadays I just ask for sample exemples of how to do stuff in isolation then I piece them together myself.

One example was trying to create some hooks for git to avoid copy-pasting something every commit. After trying to often correct it again and again, I just decided to start fresh and ask for a generic sample. It finally gave me a correct one. But I did the work to customize if for my needs and test it.

The nature of the software I was writing was inter-dependent on other functions, so it needed to understand the surrounding context, which was difficult to coach it on. Its strength is definitely in isolated examples.

I’ve been using Kagi’s Discuss Document feature for some things, like understanding documentation or an API. It’s pretty useful. Also works on videos/files like PDFs.

@truthy@programming.dev
link
fedilink
English
11
edit-2
1Y

No, it’s not cheating. But you are expected to understand what your code does and how.

And this brings us to the explanations it provides. Keep in mind that these AI tools excell in producing content that seems right. But they may very well be hallucinating. And just as for code, small details and exact concepts matter.

I would therefore recommend you to verify your final code against official documentation, to make sure you actually understand.

In the end, as long as you don’t trust the AI, neither for solutions or knowledge, its just another tool. Use it as it fits.

Baldur Nil
link
fedilink
English
41Y

I’d go as far as saying you should know what every line of code does or you’re risking the whole thing to have unexpected side effects. When you understand what the code is doing, you know what parts you should test.

I really don’t think so. You are asking it how to write a function. It explains how the function works and sometimes even how to expand on it. You still have to intergrate that function into your program yourself and tailor it to the purpouse of the program. It’s far quicker than Stackoverflow giving 8 functions that don’t work.

@axtualdave@lemmy.world
link
fedilink
English
61Y

ChatGPT is, at least for the moment, just a really fancy snippet repository with an search function that works really well.

Is re-using code someone else wrote cheating? Nah.

But, no matter where you get the code from (cough Stackoverflow), if you use it without understanding what it’s doing, you’re not doing yourself any favors.

@Deely@programming.dev
link
fedilink
English
81Y

I just want to add that ChatGPT is a “really fancy snippet repository” that sometimes, randomly lies to you.

@axtualdave@lemmy.world
link
fedilink
English
61Y

As a generative language model, I am incapable of lying, but sometimes, I am very, very wrong. /s

@themizarkshow@lemm.ee
link
fedilink
English
31Y

It’s no more cheating than scrubbing through StackOverflow posts for help. Just a lot quicker.

Create a post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



  • 1 user online
  • 1 user / day
  • 1 user / week
  • 1 user / month
  • 1.11K users / 6 months
  • 1 subscriber
  • 1.21K Posts
  • 17.8K Comments
  • Modlog