Programmering med ChatGPT: Forskelle mellem versioner

Fra HTX Arduino
Spring til navigation Spring til søgning
Linje 40: Linje 40:
For at kunne anvende modulet i koden skal der kommunikeres med modulet på en måde, som er angivet i beskrivelsen af modulet - det er dog ikke nødvendigt at sætte sig ind i den grundlæggende kommunikation, hvis man blot ønsker at få værdier ind i sin software. Som en dokumentation for hvordan man anvender biblioteket kan man skrive følgende:
For at kunne anvende modulet i koden skal der kommunikeres med modulet på en måde, som er angivet i beskrivelsen af modulet - det er dog ikke nødvendigt at sætte sig ind i den grundlæggende kommunikation, hvis man blot ønsker at få værdier ind i sin software. Som en dokumentation for hvordan man anvender biblioteket kan man skrive følgende:


====Eksempel på dokumentation====
Til at hente værdierne fra den 4 kanals AD-konverter anvendes et bibliotek fundet på GitHub (Singh, 2018) som kan indlæse de analoge spændinger.
Til at hente værdierne fra den 4 kanals AD-konverter anvendes et bibliotek fundet på GitHub (Singh, 2018) som kan indlæse de analoge spændinger.
Til at sætte AD-konverteren rigtigt op, til at kunne læse 4 spændinger, så anvendes eksemplet ”ADS1115_SingleEnded.ino” og i setup skrives følgende kode:
Til at sætte AD-konverteren rigtigt op, til at kunne læse 4 spændinger, så anvendes eksemplet ”ADS1115_SingleEnded.ino” og i setup skrives følgende kode:

Versionen fra 15. mar. 2024, 14:08

Det er ikke så svært at få ChatGPT[1] til at lave kode, der skal man blot beskrive hvad man gerne vil have programmet til at gøre, og så kopiere den kode, der kommer ud af det - det giver tit ret gode resultater.

Problemet med at anvende ChatGPT i forbindelse med skoleprojekter er, at man har forståelsen med i det, og at man ikke kan blive anklaget for plagiat.

Hvad må man ikke i en skoleprojekt

  • Man må ikke kopiere kode, som man ikke selv har skrevet, til et programmeringsprodukt uden at man angiver en kilde. Det er uanset hvor koden stammer fra, også selvom man har brugt ChatGPT til at "udvikle" koden.
  • Man må ikke aflevere et produkt hvor de primære dele af koden er kopieret, heller ikke selvom man kildehenviser.
  • Man må ikke få ChatGPT til at dokumentere sin kode, ved at man kopierer ChatGPT's beskrivelse ind i sin dokumentation af koden.

De beskrevne eksempler er at betragte som plagiat, og vil blive håndteret efter skolens ordensregler, hvilket i værste fald kan ende med at et fag annulleres eller man bliver bortvist fra uddannelsen.

Hvad er tilladt med ChatGPT

På samme måde som man må anvende kilder fra internettet, så må man i programmerings-faget i gymnasiet anvende ChatGPT i udviklingen af kode til et programmeringsprodukt. Dette er blevet tilladt via en revidering af vejledningen til faget[2].

I vejledningen står der som følger:

"brug af internettet er tilladt som fagligt hjælpemiddel ved de mundtlige prøver, inkluderer de tilladte hjælpemidler anvendelsen af chatbots og lignende på en måde, som afspejler, hvordan man arbejder i den daglige undervisning. Dette kunne fx være brug af ChatGPT til at debugge kode."

Det skal altså afspejle den normale brug, som man også har ved at bruge internettet. Som angivet under hvad man ikke må, så er den normale brug, at man anvender information til at lære et programmere, men at man ikke tager så meget af sit produkt fra nettet, så man ikke har en forståelse af hvordan produktet er sammensat.

Videre i vejledningen står der:

"I forhold til denne type hjælpemidler er det vigtigt at være opmærksom på, at den tilladte anvendelse er betinget af, at hjælpemidlerne kun benyttes i et omfang, hvor prøvebesvarelsen er selvstændig og udelukkende elevens egen."

Igen understreges at det der afleveres skal være elevens selvstændigt udviklede produkt og dokumentation, hvor man på normal vis anvender internettet som et værktøj til at bibringe forståelse.

Problemet med ChatGPT

Ligesom man ikke kan kilde-henvise til "google", for at angive at man har fundet informationer på nettet, så kan man heller ikke kildehenvise til ChatGPT direkte som en kilde.

Når man finder informationer med google', så skal man angive hvor på nettet man har fundet dem med så præcis en kildehenvisning, at man kan se den information der er blevet anvendt.

Denne type henvisning kan man ikke lave i forhold til ChatGPT, da sprogmodellen der ligger bag ChatGPT konstant udvikler sig, samt at de svar sprogmodellen giver her et randomiseret element indbygget, som er med til at give bedre svar[3].

Her er man altså nødt til at tage andre metoder i brug, for at kunne dokumentere at man har udviklet sit produkt ordentligt og redeligt.

Kildehenvisninger i dokumentation

Der kan være forskellige standarder for hvordan man kildehenviser i forskellige uddannelser, dette er skrevet med udgangspunkt i at man anvender Word bibliografi-værktøj og her vist med en Harvard-lignende standard[4].

Normal Internet-kilde til kode

I dette eksempel er der angivet hvordan man ville dokumentere at man har anvendt kode fra et bibliotek til noget hardware på en Arduino. I det tænkte eksempel er det en 4 kanals AD-konverter[5], der er købt som modul.

For at kunne anvende modulet i koden skal der kommunikeres med modulet på en måde, som er angivet i beskrivelsen af modulet - det er dog ikke nødvendigt at sætte sig ind i den grundlæggende kommunikation, hvis man blot ønsker at få værdier ind i sin software. Som en dokumentation for hvordan man anvender biblioteket kan man skrive følgende:

Eksempel på dokumentation

Til at hente værdierne fra den 4 kanals AD-konverter anvendes et bibliotek fundet på GitHub (Singh, 2018) som kan indlæse de analoge spændinger. Til at sætte AD-konverteren rigtigt op, til at kunne læse 4 spændinger, så anvendes eksemplet ”ADS1115_SingleEnded.ino” og i setup skrives følgende kode:

    ads.getAddr_ADS1115(ADS1115_DEFAULT_ADDRESS);   // 0x48, 1001 000 (ADDR = GND)
    ads.setGain(GAIN_TWO);          // 2x gain   +/- 2.048V  1 bit = 0.0625mV (default)
    ads.setMode(MODE_CONTIN);       // Continuous conversion mode
    ads.setRate(RATE_128);          // 128SPS (default)
    ads.setOSMode(OSMODE_SINGLE);   // Set to start a single-conversion
    ads.begin();

I loop() testes i første omgang, om det kan lade sig gøre at læse de 4 kanaler. Dette gøres ved at afvikle følgende testkode:

    address = ads.ads_i2cAddress;
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0)
    {
        int16_t adc0, adc1, adc2, adc3;

        adc0 = ads.Measure_SingleEnded(0);
        Serial.print("Digital Value of Analog Input at Channel 1: ");
        Serial.println(adc0);
        adc1 = ads.Measure_SingleEnded(1);
        Serial.print("Digital Value of Analog Input at Channel 2: ");
        Serial.println(adc1);
        adc2 = ads.Measure_SingleEnded(2);
        Serial.print("Digital Value of Analog Input at Channel 3: ");
        Serial.println(adc2);
        adc3 = ads.Measure_SingleEnded(3);
        Serial.print("Digital Value of Analog Input at Channel 4: ");
        Serial.println(adc3);
    }

Denne test giver det ønskede resultat.

Ud fra denne beskrivelse viser man, at man tager andres kode, og anvender ind i sit eget projekt, og man angiver præcist i sin beskrivelse hvad man har taget fra andres kode.

I kildelisten vil kilden optræde på følgende måde:

Singh, Y., 2018. Arduino Library ADS1115 16 bit 4 channel ADC. [Online]
Available at: https://github.com/ncdcommunity/Arduino_Library_ADS1115_16Bit_4Channel_ADC
[Senest hentet eller vist den 15 marts 2024].

Referencer

  1. ChatGPT Login - Indgangen til ChatGPT
  2. Vejledning til Valgfaget Programmering C
  3. Webinar om kunstig intelligens
  4. Kildelister anvendt i Microsoft Word
  5. 4 kanals AD-konverter fra ArduinoTech
Programmering
Programmeringsbegreber Initialisering - Sekvens - Algoritme - Hexadecimal - Det Binære Talsystem - HEX-fil - ASCII - Interrupt - Events - Styresystem - Autocomplete - Selvstudie Programmering - Hour Of Code - Stepwise Improvement - Syntaks - Prog-links - Microcontroller - ChatGPT
Grundlæggende C C float - C double - C-løkker - Datatyper - Konstanter - Regnearter - Funktioner - Return - Returværdi - Rekursion - Semikolon
Variabel Typer boolean - byte - int - unsigned int - word - long - unsigned long - short - float - double - char - unsigned char - string - char array - String - object - Array - 2-dimensionelt Array - void
Program-klassikere Polling - State-machine - Trykknap - Forkant - Bagkant - Prel
Arduino Arduino til Programmering - C til Arduino - Programmering Shield - Arduino PC-software - Arduino Udviklingsmiljø - Arduino Pin Library - Funktion - Arduino Seriel - Arduino String - Arduino String Split - Arduino StateChangeDetection - setup() - loop() - Compilerdirektiver - Asynkron kommunikation - millis() - micros() - Scratch for Arduino - Send fra Arduino til Excel - [[]] - [[]]
Processing Grafik i Processing‎ - Keyboard i Processing - Mus i Processing‎ - Tid i Processing‎ - Draw() - Setup() - Tal Input til Processing - Syntaksfarvning - Kommunikation fra Arduino til Processing - Kommunikation fra Processing til Arduino
javaScript Javascript input‎ - Javascript output‎ - Javascript strukturer‎ - Javascript syntaks‎ - Tid i javaScript - Objekt‎ - AJAX
Serverprogrammering PHP - MySQL - Task Scheduler - WeMOS
PIC JAL - [[]]
Scratch for Arduino S4A Installation - S4A programmering - S4A undervisningsforløb - S4A begrænsninger
Program Dokumentation Algoritme - Flowchart - Pseudokode - Datastruktur - Dataabstraktion - Pulsplaner - Program-kommentar - Teori - Test - UML