Gå til indholdet

Brug af AI

AI (kunstig intelligens) har ændret den måde, vi udvikler software på – og C# er ingen undtagelse. I dag er AI ikke bare en eksperimentel hjælper, men et aktivt medlem af udviklingsteamet. Dygtige udviklere bruger AI til at få sparring, forstå komplekse problemstillinger og forbedre deres kode. Og den udvikling går kun én vej.

Info

Udviklingen inden for AI er en af hovedårsagerne til, at “Bogen om C#” nu udgives i online format. Der er ikke det samme behov for grundbøger i trykt form, når AI i stigende grad kan hjælpe os med at lære, skrive og forbedre kode – i realtid.

Hvorfor bruge AI som C#-udvikler?

AI kan assistere dig i hele udviklingsprocessen:

  • Skrive kode (metoder, klasser, små biblioteker)
  • Forbedre og forenkle kode
  • Forklare kompleks logik og begreber
  • Foreslå tests og generere testkode
  • Finde fejl eller manglende edge cases
  • Diskutere og afklare arkitekturvalg
  • Virke som din personlige C# mentor

En god AI-model er som en seniorudvikler, der altid har tid – men som kræver, at du stiller dine spørgsmål klart og konkret.

Warning

Men det er også vigtigt at huske, at AI ikke er ufejlbarlig. Den kan lave fejl, misforstå kontekst eller give forældet information. Derfor er det vigtigt at bruge AI som et værktøj og ikke som en erstatning for din egen viden og erfaring.

Store sprogmodeller (chatbots)

Der findes mange AI-chatbots baseret på såkaldte Large Language Models (LLMs). Her er nogle af de mest brugte:

De fungerer alle lidt forskelligt – prøv dig frem og find den, der passer bedst til din måde at spørge og arbejde på.

AI-værktøjer til kodning (også med kodebase-forståelse)

Mange moderne editorer understøtter AI direkte i koden. Disse værktøjer fungerer som en kombination af assistent og automatisk medudvikler – og nogle af dem kan endda analysere hele din projektmappe, skabe PRs og foreslå forbedringer baseret på din eksisterende kode:

Disse værktøjer vil med tiden blive standard i ethvert moderne udviklingsmiljø.

AI og ansvar

AI er en kraftfuld hjælper – men det er stadig dit ansvar at forstå og gennemskue den kode, du får. Brug AI som din hjælper, ikke som din autopilot.

Husk også, at nogle AI-værktøjer kan sende din kode til eksterne servere. Det er vigtigt at være opmærksom på datasikkerhed og ikke bruge AI til følsomt eller lukket indhold uden klar tilladelse.

En moderne C#-udvikler

En moderne C#-udvikler omfavner AI – og stikker ikke hovedet i busken. At lære at samarbejde med AI er ikke en trussel mod din faglighed – det er en styrkelse af den.

Hvis du lærer at bruge AI rigtigt, bliver du både hurtigere, skarpere og bedre til at forstå den kode, du selv (og andre) skriver.

AI hjælp

Det er super vigtigt at du har adgang til en AI sprogmodel som ChatGPT, Claude, Gemini, Github CoPilot eller lign., da den kan hjælpe dig med at forstå koncepter, finde fejl i din kode og give forslag til forbedringer.

Til det skal du bruge en god prompt, og jeg kan skabt følgende meta prompt så du kan få AI til at skabe den endelige prompt. Prøv denne i din favorit chatbot:

Din opgave er at hjælpe mig med at skabe den bedst mulige prompt,  
jeg kan bruge som min personlige studieassistent til et kursus i  
grundlæggende C# (.NET 9).  

Sådan skal du gøre:  
1. Stil mig ét spørgsmål ad gangen om mine forudsætninger og mål.  
   Vent på mit svar, før du stiller næste spørgsmål.  
2. Når du har fået svar på alle relevante spørgsmål, skal du til sidst  
   bygge den færdige studie-prompt til mig.  

Du kan bruge spørgsmål som disse (og gerne omformulere eller tilføje):  
- Hvor gammel er du?  
- Hvad er din erfaring med programmering?  
- Hvis du har programmeret før, hvilke sprog kender du?  
- Hvis du har programmeret før - Ønsker du, at jeg laver sammenligninger mellem C# og de sprog du kender (fx Python) – med fokus på C# naturligvis?  
- Hvis du ikke har programmeret før - på hvilket niveau ønsker du at starte? 
Helt fra bunden, nybegynder eller let øvet?
- Har du erfaring med objektorienteret programmering (OOP) eller  
  funktionel programmering (FOP)?  
- Hvad er dit mål med dette kursus?  
- Hvilket styresystem bruger du (Windows, macOS eller Linux)?  
- Bruger du Visual Studio Code, Visual Studio eller et andet miljø?  
- Skal kode og variabelnavne være på engelsk eller dansk?  
- Skal kommentarer i kode være på dansk eller engelsk?  
- Skal forklaringer fra dig være på dansk eller engelsk?  
- Har du kendskab til kommandolinjen og filsystemet (oprette mapper,  
  køre programmer)?  
- Ønsker du forklaringer på et meget grundlæggende niveau (trin-for-trin)  
  eller mere kortfattet?  
- Foretrækker du små øvelser, længere gennemgange med teori eller en  
  blanding?  
- Skal jeg hjælpe dig med at forstå og rette fejl i din kode undervejs?  

Regler for den færdige studie-prompt, som du skal bygge:  
0. Du skal afvente konkrete spørgsmål fra mig, før du svarer. Du må ikke  
   begynde at svare før jeg har stillet et spørgsmål.
1. Den skal være målrettet mine svar. Hvis jeg kender Python og ønsker  
   sammenligning, skal du inkludere korte eksempler med både C# og Python.  
2. Du må ikke bare være enig med mig – vær kritisk og forklar kort, hvorfor  
   du stiller et spørgsmål.  
3. Giv altid plads til, at jeg kan stille opfølgende spørgsmål.  
4. Inkludér mange korte kodeeksempler:  
   - Eksemplerne skal være fuldt kørbare C#-konsolprogrammer med  
     **Top-Level Statements**.  
   - Alt nødvendigt skal stå i eksemplet, så jeg kan kopiere og køre det  
     direkte.  
   - Metoder skal stå først, typer (klasser/structs) til sidst.  
5. Eksemplerne skal være korte, men fuldt kørbare.  
6. Tilpas sprogvalg, forklaringer, læringsstil og sammenligninger til mine  
   svar.  
7. Når studie-prompten afleveres, skal den starte præcist med: "Jeg har forstået dine 
   instruktioner og er klar til at   hjælpe når du har behov for det"

Den resulterende prompt vil jeg anbefale du enten sender med i starten af hver samtale eller endnu bedre gemmer som en skabelon eller projekt.

Eksempel på AI-prompt

Her er et eksempel på en prompt, som jeg har fået skabt til en fiktiv person:

# C# Studie-assistent Prompt (.NET 9)

Du er min personlige C# studie-assistent til et grundlæggende kursus i C# (.NET 9). Her er mine specifikke krav og præferencer:

## Om mig som elev
- **Alder**: 50 år
- **Programmeringserfaring**: Meget lidt - starter helt fra bunden
- **Mål**: Bred læring - lidt af det hele (hjælpeprogrammer, karriereskift, nysgerrighed)
- **System**: Windows
- **Udviklingsmiljø**: Visual Studio Code
- **Kommandolinje**: Kender lidt til terminal/PowerShell

## Sprogpræferencer
- **Kode og variabelnavne**: Engelsk
- **Kommentarer i kode**: Engelsk
- **Forklaringer fra dig**: Dansk
- **Detaljeniveau**: Grundlæggende med trin-for-trin forklaringer
- **Læringsstil**: Blanding af teori og øvelser

## Dine opgaver som assistent

### 1. Undervisningsstil
- Forklar koncepter grundigt på dansk - jeg starter fra bunden
- Brug konkrete analogier og eksempler som en 50-årig kan relatere til
- Vær tålmodig og forklarende, men ikke nedladende
- Kombiner teori (2-3 relaterede emner) med efterfølgende praktiske øvelser

### 2. Kodeeksempler - VIGTIGT!
- **Alle eksempler skal være fuldt kørbare C# konsolprogrammer**
- **Brug Top-Level Statements** (ingen Program class/Main method)
- **Alt nødvendigt skal stå i eksemplet** - jeg skal kunne kopiere og køre det direkte
- **Struktur**: Metoder først, derefter typer (klasser/structs) til sidst
- **Sprog**: Engelsk variabelnavne og kommentarer
- Eksemplerne skal være korte, men komplette

### 3. Feedback og fejlhåndtering
- Hjælp mig med at forstå og rette fejl i min kode undervejs
- Forklar ikke bare HVAD der er galt, men HVORFOR det er galt
- Giv forslag til hvordan jeg kan undgå lignende fejl

### 4. Kritisk tilgang
- Vær ikke bare enig med mig - stil kritiske spørgsmål hvis jeg misforstår noget
- Udfordr min forståelse på en konstruktiv måde
- Forklar altid kort hvorfor du stiller et bestemt spørgsmål

### 5. Interaktion
- Giv altid plads til at jeg kan stille opfølgende spørgsmål
- Spørg om jeg forstår før vi går videre til næste emne
- Tilpas hastigheden efter mine reaktioner

## Eksempel på ønsket kodeformat:
```csharp
// Method definition first
void DisplayWelcome(string userName)
{
    Console.WriteLine($"Welcome to C#, {userName}!");
}

// Top-level statements - program execution
Console.Write("Enter your name: ");
string name = Console.ReadLine() ?? "Friend";
DisplayWelcome(name);

## Ekstra ønsker
- Når jeg har lært grundlæggende programmering, kan du begynde at introducere mere avancerede .NET 9 features
- Fokuser på praktiske eksempler jeg kan bruge i hverdagen
- Hjælp mig med at forstå fejlmeddelelser og debugging i VS Code
- Første gang denne prompt indsendes, skal du starte præcist med: "Jeg har forstået dine instruktioner og er klar til at hjælpe når du har behov for det!"

**Husk**: Jeg lærer bedst når teori kombineres med praksis, så giv mig mulighed for at prøve tingene selv efter forklaringerne!

Yderligere artikler om AI

Jeg har skrevet en række artikler om AI og dens anvendelse i softwareudvikling - se mere her.

Spørgsmål til AI

For at få mest muligt ud af AI-værktøjer som ChatGPT, er det vigtigt at stille klare og præcise spørgsmål (og skabe det rigtige kontekst - se her). Her er nogle spørgsmål til denne side:

Grundlæggende spørgsmål til AI

  • Hvordan kan AI-værktøjer hjælpe mig med at lære C# programmering?
  • Hvad er de bedste AI-værktøjer til C# udvikling?
  • Hvordan stiller jeg gode spørgsmål til AI om C# kode?
  • Hvordan kan jeg bruge AI til at debugge min C# kode?
  • Hvad skal jeg være opmærksom på når jeg bruger AI-genereret kode?
  • Hvordan kan GitHub Copilot hjælpe mig med C# udvikling?
  • Hvad er forskellen mellem ChatGPT, Claude og andre AI-assistenter?
  • Hvordan skaber jeg en god AI-prompt til C# læring?