Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Er det noen online communities som f.eks på discord programmerer henger på? Eneste eg har vært borti er stackoverflow, og det er jo greit, men av og til kunne det vært greit med litt lav terskel løst snakk om enkelte ting.

I spill har man ofte en stor kanal på disc, hvor man kan spørre om diverse, og generelt bare diskutere løst og fritt.

Lenke til kommentar
  • 1 år senere...
Videoannonse
Annonse
Ernie skrev (1 time siden):

Av ren nysgjerrighet, er det noen her som også programmerer i Rust i en profesjonell setting? Hvis ja, hvordan er erfaringen med å få med seg kollegene på det?

Har vært på andre siden av bordet der en Rust-evangelikal bestemte seg for å blande inn Rust i en C/C++ kodebase. Siden flere utviklere hadde lite erfaring med Rust så endte det opp med å bli kode som ikke kunne vedlikeholdes, og det resulterte i amper stemning.

Det er en krevende jobb å få flertall i å introdusere et (fortsatt) eksotisk språk. Tviler på at du klarer å snu en større skute, men om du jobber i et mindre selskap der alle utviklerne kan eller vil lære Rust, så bør det være mulig.

Lenke til kommentar
  • 6 måneder senere...

Jeg sitter litt med et frontend kurs, instruktøren går gjennom javascript nå. Eksemplene i kurset er alltid så 'konstruerte', og jeg skjønner ikke hva jeg skal bruke disse tingene til. Instruktøren sier bare "du kan sikkert tenke deg flere eksempler selv", men jeg kan faktisk ikke det. Jeg er ikke så kreativ ... 

Hva er f.eks. et sannsynlig bruksområde for en "for loop"? 

Eller array, når er det fornuftig å lage det? At vi i kurssammenheng lager et array med fire matretter og lister opp alle sammen i console, det gir meg ingenting.

Hadde satt pris på om noen kunne gi meg noen eksempler "fra virkeligheten". 

Lenke til kommentar

Høres ut som du tar feil kurs. Men bare fyr løs med spørsmål her så kan vi prøve å svare dem så godt vi klarer.

I programmering så har du aldri lyst til å gjenta deg selv, så om du skal f.eks. skrive ut en sekvens ala:
Hei 1
Hei 2
Hei 3
...

Så kan du i stedet for å repetere deg selv gang etter gang lage en for loop. Jeg programmerer ikke Javascript, men C er ikke så ulikt.
 

for(int i = 0; i <= 10; i++){
	printf("Hei %d\n\r", i);
}

Dette vil printe 10 stykker med sekvensielle nummer.

Array er for å ta vare på data. Det er litt som postbokser der du har et nummer som sier hvilken boks du vil ha og boksene har hvert sitt innhold.

const char *diskusjon_brukere[4];
diskusjon_brukere[0] = "Utakt";
diskusjon_brukere[1] = "Gavekort";
diskusjon_brukere[2] = "Pelle";
diskusjon_brukere[3] = "Geir";

//Print ut en bruker sitt navn
printf("%s\n\r", diskusjon_brukere[2]);
//Output: 
//Pelle

//Print ut alle brukere
printf("Diskusjon sine brukere:\n\r");
for(int i = 0; i <= 3; i++){ //Array er alltid indeksert fra 0, så vi looper fra 0 til 3
  printf("%s\n\r", diskusjon_brukere[i]);
}
//Output:
//Diskusjon sine brukere:
//Utakt
//Gavekort
//Pelle
//Geir


 

Lenke til kommentar
:utakt skrev (12 minutter siden):

Jeg sitter litt med et frontend kurs, instruktøren går gjennom javascript nå. Eksemplene i kurset er alltid så 'konstruerte', og jeg skjønner ikke hva jeg skal bruke disse tingene til. Instruktøren sier bare "du kan sikkert tenke deg flere eksempler selv", men jeg kan faktisk ikke det. Jeg er ikke så kreativ ... 

Hva er f.eks. et sannsynlig bruksområde for en "for loop"? 

Eller array, når er det fornuftig å lage det? At vi i kurssammenheng lager et array med fire matretter og lister opp alle sammen i console, det gir meg ingenting.

Hadde satt pris på om noen kunne gi meg noen eksempler "fra virkeligheten". 

Når du bare har 4 matretter så skjønner jeg at du ikke helt ser poenget med array. Da virker det enklere å bare bruke 4 variabler (matrettEn, matrettTo, matrettTre, matrettFire). Array's brukes normalt sett til større datasett. F.eks. en tabell over tippeligaen, alle lagene, antall kamper, seire/uavgjort/tap, scoringer og antall poeng. Du kunne brukt et hav av variabler for å holde styr på alt dette, men det er mye enklere å håndtere med et array. Da kommer også for-loops til nytte, for da skriver du koden 1 gang og traverserer array'et for hvert av lagene i array'et (og deres respektive data). Da får du mye mindre jobb, pluss at koden blir mye mer oversiktelig. 

  • Liker 1
Lenke til kommentar

Takk. Fotballtabell ga litt mening. Jeg skjønner for så vidt logikken (tror jeg!), men jeg sliter med å forstå i hvilke situasjoner jeg faktisk kommer til å trenge denne funksjonaliteten. 

Det hadde vært kult om noen kunne linke til en hvilken som helst side; enten det er Komplett eller Aftenposten eller hva som helst, vise til en seksjon på sidene som sannsynligvis bruker dette her og forklare hvorfor/hvordan.

Skjønner at det er mye å be om, så no worries. Men hvis noen har tid og lyst blir jeg glad. :) 

Lenke til kommentar
Skrevet (endret)
:utakt skrev (2 timer siden):

Det hadde vært kult om noen kunne linke til en hvilken som helst side; enten det er Komplett eller Aftenposten eller hva som helst, vise til en seksjon på sidene som sannsynligvis bruker dette her og forklare hvorfor/hvordan.

Her gikk jeg inn på komplett.no sin side. Der har de en liste over produkter. Så det den gjør er å først hente en liste (f.eks. array) over produkter, og så skal de vise den. Der vil du  "automatisere" visningen/renderingen av hver rad i listen for det kan bli mange og du vet heller ikke hvor mange det er. Så da vil du kjøre en loop og gjøre det samme for hver liste.

Her er listen

image.thumb.png.4b29b21aad2c83506c11b443e87e11f9.png

Jeg er litt lat så jeg dyttet det bildet inn i chatgpt og fikk den til å forklare hvordan du kan velge å rendre en slik liste ved hjelp av javascript eller react. Så selv om det kan være gyldig JS og React så er det bare for å illustrere poenget.
 

<!DOCTYPE html>
<html>
<head>
    <title>Product List</title>
</head>
<body>
    <table id="productTable">
        <thead>
            <tr>
                <th>Name</th>
                <th>Price</th>
                <th>Stock</th>
            </tr>
        </thead>
        <tbody>
            <!-- Rows will be inserted here -->
        </tbody>
    </table>

    <script>
        const products = [
            { name: "MSI MAG B760 Tomahawk WIFI", price: "1 899,-", stock: 50 },
            { name: "ASUS PRIME H610M-K D4", price: "1 416,-", stock: 23 },
            { name: "ASRock H610M-HDV/M.2", price: "1 019,-", stock: 7 },
            { name: "MSI MEG X670E ACE", price: "10 999,-", stock: 7 },
            { name: "MSI MPG B650 EDGE WIFI", price: "3 390,-", stock: 25 },
            { name: "MSI MEG Z790 ACE", price: "10 239,-", stock: 75 },
            { name: "Thermaltake 1x12VHPWR", price: "699,-", stock: 6 },
        ];

        const tableBody = document.querySelector("#productTable tbody");

        products.forEach(product => {
            const row = document.createElement("tr");
            row.innerHTML = `
                <td>${product.name}</td>
                <td>${product.price}</td>
                <td>${product.stock}</td>
            `;
            tableBody.appendChild(row);
        });
    </script>
</body>
</html>

Eller i react

import React from 'react';

const products = [
    { name: "MSI MAG B760 Tomahawk WIFI", price: "1 899,-", stock: 50 },
    { name: "ASUS PRIME H610M-K D4", price: "1 416,-", stock: 23 },
    { name: "ASRock H610M-HDV/M.2", price: "1 019,-", stock: 7 },
    { name: "MSI MEG X670E ACE", price: "10 999,-", stock: 7 },
    { name: "MSI MPG B650 EDGE WIFI", price: "3 390,-", stock: 25 },
    { name: "MSI MEG Z790 ACE", price: "10 239,-", stock: 75 },
    { name: "Thermaltake 1x12VHPWR", price: "699,-", stock: 6 },
];

const ProductTable = () => (
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>Price</th>
                <th>Stock</th>
            </tr>
        </thead>
        <tbody>
            {products.map((product, index) => (
                <tr key={index}>
                    <td>{product.name}</td>
                    <td>{product.price}</td>
                    <td>{product.stock}</td>
                </tr>
            ))}
        </tbody>
    </table>
);

const App = () => (
    <div>
        <h1>Product List</h1>
        <ProductTable />
    </div>
);

export default App;


Selve loopingen skjer her ved products.ForEach i første eksemplet og i products.Map på andre eksemplet. ForEach sier bare at du skal gjøre noe for hvert element i arrayet. Det blir som en for loop der du selv slipper å bruke indexen til å sette grensene for hvor og når du starter. Map looper igjennom og så returnerer disse jsx/react-elementene tilbake. Map er som en foreach der du mapper fra en ting til noe annet.

Det å kunne loope igjennom en liste av noe er en av de viktigste delene i programmering som gjør at det er raskere enn å gjøre ting manuelt.

Håper det hjelper litt :D 

Endret av Comma Chameleon
  • Liker 1
Lenke til kommentar
Skrevet (endret)

Mulig det bare forvirrer ekstra. Men en viktig forskjell på eksempel 1 og 2 fra Comma Chameleon, er at i det første eksempelet så endres det direkte på DOMen (https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction), dermed kan man bruke en forEach loop (som ikke returnerer noe).

Mens i det andre eksempelet så brukes Javascript rammeverket React. Den gjør manipuleringen av DOMen for deg.

Endret av blured
Lenke til kommentar

Takk! Jeg har aldri tenkt på at jeg skulle lage noe sånt, men ja, det gir jo mening. 

Jeg stusser litt på det med at man må taste inn alle elementene manuelt. Det blir jo ganske statisk og mye å oppdatere uansett. Om Komplett her får et nytt produkt må man inn i dette arrayet og legge til det nye produktet osv.

Tenker høyt, senere i kursprogrammet jeg følger blir det kanskje demonstrert at man kan automatisk hente data til koden fra en database? Det høres logisk ut, og da kan jeg se større nytteverdi i at ting går litt "automagisk". 

Lenke til kommentar
Skrevet (endret)
:utakt skrev (42 minutter siden):

Jeg stusser litt på det med at man må taste inn alle elementene manuelt. Det blir jo ganske statisk og mye å oppdatere uansett. Om Komplett her får et nytt produkt må man inn i dette arrayet og legge til det nye produktet osv.

Tenker høyt, senere i kursprogrammet jeg følger blir det kanskje demonstrert at man kan automatisk hente data til koden fra en database? Det høres logisk ut, og da kan jeg se større nytteverdi i at ting går litt "automagisk". 

Ja alle tjenester henter ut slikt automatisk fra en database. Og så har de gjerne et eget system de bruker får å importere/redigere den dataen før den blir mulig å hente ut via API-kall til selve nettsiden.

Du kan simulere det selv ved å lage en JSON fil med data og så laste inn fra den. Så vil da den filen fungere som en database for deg. Du kan også få ChatGPT til å generere en JSON-fil med testdata/dummydata. Da ser du hvor mye nytte du får av å loope igjennom ting.

Så lenge man husker på at ChatGPT kan hallusinere litt, og man burde verifisere at ting faktisk fungerer, så funker det veldig bra som introduksjon til en del emner der den har mye treningsdata og kan svare riktig.

Her er eksempel på en prompt som forklarer litt basics rundt loops. Enkle ting bruker den som regel å klare greit
https://chatgpt.com/share/240fc4f1-a587-40da-9b9a-2b3aaf03c682

Igjen blir det kanskje for enkelt, og da kan du spørre om mer avanserte eksempler.

Endret av Comma Chameleon
Lenke til kommentar
  • 4 måneder senere...

Merker at det er vondt å gå vekk fra Copilot nå etter å ha brukt det i en stund, og jeg anser det som en positiv ting.

Det er for meg personlig. Jeg er litt bekymret for de som lærer seg koding med Copilot, og som ikke forstår seg på koden de genererer.

Men for boilerplate kode, lære seg syntaks eller for å finne en algoritme (det som tidligere var Stack Overflow kopiering) så er det helt perfekt. Det er så utrolig mye lettere å lære seg Rust med Copilot som mentor/assistent, spesielt siden Rust ærlig talt ikke har en veldig ryddig og enkel syntaks.

  • Liker 1
Lenke til kommentar
  • 2 uker senere...

Personlig så deaktiverte jeg alt av completion assists som Copilot for 2-3 måneder siden og har ikke angret et sekund. Hvis jeg trenger hjelp til noe boilerplate så har editorene til jetbrains en snarvei (cmd+i) som åpner et prompt-vindu der jeg kan be spesifikt om det jeg ønsker.

Bruker heller ChatGPT O1 eller Claude til rubberduck debugging eller spørsmål der det er greit å få litt annen input for å se at man ikke går glipp av noe, eller for å få en oversikt over hva er det man ikke vet at man ikke vet når man lærer noe nytt.

Lenke til kommentar

Enig der. Jeg får med kontekst via den in-editor prompten fra Jetbrains. Hvis jeg først hopper over til ChatGPT/Claude så er det alltid litt mer styr med å gi en detaljert prompt. Samt å huske å skru på temporary chat hver gang i ChatGPT. De fleste andre tjenester er mye bedre på å ikke spytte ting inn i treningsdata for modellene, men med ChatGPT må man bruke temporary chat hver gang manuelt. Gjør det selv om jeg aldri sender inn noe privat dit. Tungvint.

Lenke til kommentar
2 minutes ago, Comma Chameleon said:

Enig der. Jeg får med kontekst via den in-editor prompten fra Jetbrains. Hvis jeg først hopper over til ChatGPT/Claude så er det alltid litt mer styr med å gi en detaljert prompt. Samt å huske å skru på temporary chat hver gang i ChatGPT. De fleste andre tjenester er mye bedre på å ikke spytte ting inn i treningsdata for modellene, men med ChatGPT må man bruke temporary chat hver gang manuelt. Gjør det selv om jeg aldri sender inn noe privat dit. Tungvint.

IKan slå det av i innstillingene under data control i ChatGPT. 

Vet egentlig ikke hvorfor jeg bruker github copilot, bruker ikke chat funksjonen, så er kun for auto-complete av repeterende ting. Kunne egentlig bare lage snippets for det, eller egne generator gjennom nx. 

Er også krangling mellom copilot og intellisense, for tab autocomplete, må heletida ta en backspace, skriv et tegn også vent et halvt sek på copilot, hvis ikke blir intellisense brukt istede. 

Lenke til kommentar
Curuion skrev (Akkurat nå):

IKan slå det av i innstillingene under data control i ChatGPT. 

Den har jeg skrudd av siden første stund. Kanskje det er godt nok. Føler at å ha temporary chat oppå der føles litt tryggere ut, så har bare vært en vane, men kan hende det blir det samme i praksis og det er totalt unødvendig av meg.

Curuion skrev (1 minutt siden):

Er også krangling mellom copilot og intellisense, for tab autocomplete, må heletida ta en backspace, skriv et tegn også vent et halvt sek på copilot, hvis ikke blir intellisense brukt istede. 

Ja det kan også være irriterende. 

Lenke til kommentar
  • 5 uker senere...
On 20.10.2024 at 11:46 AM, Gavekort said:

Merker at det er vondt å gå vekk fra Copilot nå etter å ha brukt det i en stund, og jeg anser det som en positiv ting.

Det er for meg personlig. Jeg er litt bekymret for de som lærer seg koding med Copilot, og som ikke forstår seg på koden de genererer.

Men for boilerplate kode, lære seg syntaks eller for å finne en algoritme (det som tidligere var Stack Overflow kopiering) så er det helt perfekt. Det er så utrolig mye lettere å lære seg Rust med Copilot som mentor/assistent, spesielt siden Rust ærlig talt ikke har en veldig ryddig og enkel syntaks.

Å lære seg ting via KI er vel å potensielt skyte seg ganske grundig i foten. Problemet er jo at disse tingene er veldig bastante og helt uten evne til å signaliser at de ikke har peiling på hva du spør om. Både jeg og kollegaer har opplevd flere tilfeller hvor de regelrett finner opp fullstendig tullball uten rot i virkeligheten. Det ser ekte ut, men refererer f.eks. til API som ikke finnes. Den dagen KI kan åpent erkjenne av seg selv at de ikke har peiling, så kanskje man kan begynne å stole litt på dette, men inntil da så gjør man seg selv fort en bjørnetjeneste.

Endret av Ernie
  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...