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

Edit: Thanks everyone for insightful and considered replies.

I think the general consensus is basically where my head was at - use it as a tool like you would SO or other resources but be aware the code may be incorrect, and the reality is there will be work required to adapt and integrate with your current project (very much like SO) and that’s where you programming skills really come in to play.

I think I still have imposter syndrome when it comes to development, which is maybe where the question was coming from in my mind. :D.

  • TeaHands@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    2 years ago

    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.

  • JackbyDev@programming.dev
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    2 years ago

    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

    • mrkite@programming.dev
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 years ago

      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.

  • SJ_Zero@lemmy.fbxl.net
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 years ago

    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.

    • Dazawassa@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 years ago

      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
        arrow-up
        0
        ·
        2 years ago

        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
          arrow-up
          0
          ·
          2 years ago

          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.

          • axo10tl@sopuli.xyz
            link
            fedilink
            English
            arrow-up
            1
            ·
            edit-2
            2 years ago

            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.

          • Dazawassa@programming.dev
            link
            fedilink
            English
            arrow-up
            1
            ·
            2 years ago

            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.

  • Beej Jorgensen@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 years ago

    Programming pays well because it’s hard. Just keep in mind that if AI is making it easy for you, it’s making it easy for a lot of people who could easily replace you.

    Use it as a tool, but know what it’s doing, and be able to do it yourself after you learn from it.

    Personally, I generally struggle through on my own first and then ask it to critique. Great teachers don’t just give you the code to copy.

    By analogy, you need to be able to hand fly this plane when the autopilot dies; those are the pilots who get the jobs.

    • Baldur Nil@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      2 years ago

      Trying yourself first seems like the best approach. There are people who recommend you not to Google the answer until you have tried all the options and looked at the official documentation as an “exercise” of problem-solving without being fed the answer, cause you won’t always have it.

      I’m in a situation like that. I currently work for a huge bank which requires a lot of custom configurations and using their own framework for a lot of stuff. So, most of the problems people have cannot be searched online as they’re company specific. I see new workers there struggle a lot because they don’t try to understand what’s wrong and just want a fed copy paste solution to make the problem go away.