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
No, it’s not cheating, but also please don’t blindly trust it. Random people on the internet can be wrong too but people can at least correct them if they are. Stuff ChatGPT outputs is fresh for your eyes only.
Edit: typo
Agreed. While I’ve never used ChatGPT on an actual project, I’ve tested it on theoretical problems and I’ve never seen it give an answer that didn’t have a problem.
So I would treat it like any answer on Stack Overflow, use it as a start, but you should definitely customize it and fix any edge cases.
I’ve never used ChatGPT (the workflow sounds tedious) but I have used GitHub copilot for personal stuff. The free ChatGPT has weird rights to your queries, whereas GH copilot doesn’t snarf up your code. It genuinely saves a ton of time if you treat it like an in-line Stack Overflow query. It never gets it 100% right, but it can crap out boilerplate like nobody’s business.
It also seems to depend a lot on how popular what you’re asking about is. I asked it some questions about docker and it helped me understand some nuances between different commands in Dockerfiles that I was having trouble with. Docker is pretty widely used. I then asked it some questions about how to use the jpackage command from Gradle and it couldn’t help at all.
Cheating who?
If you understand the code and are able to adapt it to for your needs it’s no different to copy pasting from other sources, imo. It’s just a time saver.
If you get to the point where you’re blindly trusting it with no ability to understand what it’s doing, then you have a problem. But that applied to Stack Overflow too.
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.
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.
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.
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.
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