Vinnaren i pepparkakshustävlingen!
2023-11-12, 23:30
  #121
Medlem
GrillTeknikers avatar
Citat:
Ursprungligen postat av Cooltrayne
Kommer inte ihåg namnet, men det var en av Sveriges mest kända programmerare som sa det.
Kanske inte kommer ihåg rätt.

Haha, "en av Sveriges mest kända programmerare"

Låter ungefär lika meningsfullt som att vara "en av Sveriges tjockaste kockar"...

Ja men då så, om han säger det så måste det ju vara så! Han är ju känd/tjock!
Citera
2023-11-13, 10:33
  #122
Moderator
Pontiac-Garages avatar
Citat:
Ursprungligen postat av 8978wxu642
Fast varför just C? Är det inte vettigare att lära sig något modernt då? Att de historiskt bygger C-logik vet jag inte riktigt om det är vettigt argument för att lära sig C. Dom flesta kommer aldrig kunna lära sig C särskilt bra och kommer aldrig ha användning för det.

Som sagt för att de allra flesta språk idag är byggda i C. Även om man inte kommer att koda i C specifikt förstår man i princip all annan programmering därefter då man har koll på mekanismerna bakom.
Citera
2023-11-13, 19:35
  #123
Medlem
Citat:
Ursprungligen postat av Pontiac-Garage
Som sagt för att de allra flesta språk idag är byggda i C. Även om man inte kommer att koda i C specifikt förstår man i princip all annan programmering därefter då man har koll på mekanismerna bakom.

Ja men då är det väl sak samma om man lär sig C#? Om de flesta språk är byggda i C och C# är ett av dom vad skulle då fördelen med att lära sig C vara? Enligt vad du säger borde man förstå all programmering därefter även om man lär sig C#.
Citera
2023-11-13, 22:18
  #124
Moderator
Pontiac-Garages avatar
Citat:
Ursprungligen postat av 8978wxu642
Ja men då är det väl sak samma om man lär sig C#? Om de flesta språk är byggda i C och C# är ett av dom vad skulle då fördelen med att lära sig C vara? Enligt vad du säger borde man förstå all programmering därefter även om man lär sig C#.

Lär man sig bara C# missar man lägre abstraktionsnivåer.

Men självklart är det viktigaste att komma igång med ett språk, sedan lär man sig snabbt fler.
Citera
2023-11-14, 00:11
  #125
Medlem
Retropropagations avatar
Citat:
Ursprungligen postat av Pontiac-Garage
Lär man sig bara C# missar man lägre abstraktionsnivåer

Mha unsafe, unchecked, StructLayout etc, når man låga abstraktionsnivåer. Så här kan man t.ex. implementera frexp i C#:

Kod:
        [StructLayout(LayoutKind.Explicit)]
        public struct DoubleUshorts 
        {
            [FieldOffset(0)] public double d;
            [FieldOffset(0)] public ushort u0;
            [FieldOffset(2)] public ushort u1;
            [FieldOffset(4)] public ushort u2;
            [FieldOffset(6)] public ushort u3;
        }

        static public unsafe double frexp(double x, out int pw2)
        {
            if (x == 0.0)
            {
                pw2 = 0;
                return 0.0;
            }

            DoubleUshorts u;
            u.d = x;

            short *q = (short *)&u.u3;

            int i = (*q >> 4) & 0x7ff;

            i -= 0x3fe;
            pw2 = i;
            unchecked
            {
                *q &= (short)0x800f;
            }
            *q |= 0x3fe0;
            return u.d;
        }

Originalkod: https://www.netlib.org/cephes/
Citera
2023-11-14, 10:35
  #126
Moderator
Pontiac-Garages avatar
Citat:
Ursprungligen postat av Retropropagation
Mha unsafe, unchecked, StructLayout etc, når man låga abstraktionsnivåer. Så här kan man t.ex. implementera frexp i C#:

Kod:
        [StructLayout(LayoutKind.Explicit)]
        public struct DoubleUshorts 
        {
            [FieldOffset(0)] public double d;
            [FieldOffset(0)] public ushort u0;
            [FieldOffset(2)] public ushort u1;
            [FieldOffset(4)] public ushort u2;
            [FieldOffset(6)] public ushort u3;
        }

        static public unsafe double frexp(double x, out int pw2)
        {
            if (x == 0.0)
            {
                pw2 = 0;
                return 0.0;
            }

            DoubleUshorts u;
            u.d = x;

            short *q = (short *)&u.u3;

            int i = (*q >> 4) & 0x7ff;

            i -= 0x3fe;
            pw2 = i;
            unchecked
            {
                *q &= (short)0x800f;
            }
            *q |= 0x3fe0;
            return u.d;
        }

Originalkod: https://www.netlib.org/cephes/

Sant men det är väl ytterst sällan man gör det? De allra flesta C#-kodare sysslar väl med just högnivåprogrammering?
Citera
2023-11-24, 18:32
  #127
Medlem
Citat:
Ursprungligen postat av Pontiac-Garage
Tror JohnnyMnemonic syftar på det faktum att mer eller mindre alla språk idag är byggda på C-logik, så har man väl lärt sig C blir det väldigt lätt att lära sig nästan vilket språk som helst. Även om det är rätt få jobb som kräver att man kodar i just C.
Ja ungefär så.

Citat:
Ursprungligen postat av 8978wxu642
Då gäller det väl snarare att man kan lära sig nästan vilket språk som helst och sen kunna alla?
Nej, se nedan.

Citat:
Ursprungligen postat av RoyBatty
OK. Det där argumentet har man ju hört några gånger och jag köper personligen inte det. C skiljer inte så pass mycket från andra språk att det på något magiskt sätt skulle bli lättare att lära sig nya språk jämfört om man t.ex. lärt sig C# eller Java.

Snarare tvärtom. I princip inga moderna språk idag som folk jobbar med har minneshantering och pekare, och C är inte objektorienterat vilket man kommer behöva i princip varhelst man jobbar, så jag skulle snarare säga att det är del saker som är tid i sjön. Skrev vår app i Objective C innan ARC kom och jag skulle ha dödat för att få skriva den i Swift
Nej C är tillräckligt lågnivå för att du ska få inblick i det som är viktigt i programmering, det viktiga är inte att skriva kod utan att förstå vad datorn gör med koden, C ger inte många verktyg annat än att du måste lära dig förstå hur data skyfflas, du måste lära dig hantera minne, du måste förstå pekare osv.

När du förstått detta kan du gå till språk som sköter sådant åt dig för du kommer inte skriva kod som du totalt skjuter dig i foten med vilket de flesta språk tillåter om du inte har detta i hand.

Jag skulle kunna sagt C++ men problemet är då att RAII är inte enforcat och dessutom är C++ onödigt komplext att börja med eftersom som språket är hårt typat och inbjuder till objektorientering och där med mer eller mindre tvingar fram användande av generics som genast gör att du hamnar i template hell.

Swift är ett bra språk, men det är bara glömma om du inte fokuserar enbart på iOS eller macOS.
Citera
2023-11-24, 18:37
  #128
Medlem
Citat:
Ursprungligen postat av JohnnyMnemonic
Ja ungefär så.


Nej, se nedan.


Nej C är tillräckligt lågnivå för att du ska få inblick i det som är viktigt i programmering, det viktiga är inte att skriva kod utan att förstå vad datorn gör med koden, C ger inte många verktyg annat än att du måste lära dig förstå hur data skyfflas, du måste lära dig hantera minne, du måste förstå pekare osv.

När du förstått detta kan du gå till språk som sköter sådant åt dig för du kommer inte skriva kod som du totalt skjuter dig i foten med vilket de flesta språk tillåter om du inte har detta i hand.

Jag skulle kunna sagt C++ men problemet är då att RAII är inte enforcat och dessutom är C++ onödigt komplext att börja med eftersom som språket är hårt typat och inbjuder till objektorientering och där med mer eller mindre tvingar fram användande av generics som genast gör att du hamnar i template hell.

Swift är ett bra språk, men det är bara glömma om du inte fokuserar enbart på iOS eller macOS.

Det där låter lite väl 2004. Knappast något problem idag med dagens moderna programmeringsspråk och verktyg. Kompilatorer och verktyg som Github Copilot hjälper dig mycket om du skirver kod som skjuter dig i foten.
Citera
2023-11-24, 18:39
  #129
Medlem
Citat:
Ursprungligen postat av 8978wxu642
Det där låter lite väl 2004. Knappast något problem idag med dagens moderna programmeringsspråk och verktyg. Kompilatorer och verktyg som Github Copilot hjälper dig mycket om du skirver kod som skjuter dig i foten.

Du kan ju fortsätta tro det då.
Citera
2023-11-24, 18:40
  #130
Medlem
Citat:
Ursprungligen postat av JohnnyMnemonic
Du kan ju fortsätta tro det då.

Vad menar du? Jag skulle säga att dom flesta programmerare under 35 idag aldrig har skrivit någon C utan började med python, javascript, java eller C# och klarar sig utmärkt.
Citera
2023-11-24, 18:50
  #131
Medlem
Citat:
Ursprungligen postat av 8978wxu642
Vad menar du? Jag skulle säga att dom flesta programmerare under 35 idag aldrig har skrivit någon C utan började med python, javascript, java eller C# och klarar sig utmärkt.

Jag menar att det är näst in till inga språk undantaget Rust som sätter stopp för att skjuta dig i foten och det går där också fast man får anstränga sig bra mycket för och troligtvis har man tröttnat på borrow checkern innan dess. Men du kan naturligtvis sprinkla koden med Ref<RefCell<T>> osv för allt.

Copilot är enligt min erfarenhet i stort oduglig så snart du går under python i abstraktionsnivå.
Och företag inte tillåter generellt inte användande av det heller eller i alla fall fram tills nyligen då OpenAI deklarerade att de betalar för eventuella copyright intrång vilket beror på att Copilot är tränad på open source github projekt och ingen kommersiell aktör vill råka få in GPL kod eller dyl i projekt.
Ett annat problem är att det ligger efter för mycket vilket gör det väldigt svårt att använda med språk som har ramverk som rör sig snabbt.

python och javascript som du nämner är inte på något sätt konkurrenter med nativspråk som C, C++, Rust osv.
Java, C#, Go osv är språk som är utmärkta för backend och heller inte direkta konkurrenter.

Min rekommendation utgår från total flexibilitet och inte någon speciell inriktning, C/C++ kommer alltid vara relevanta och speciellt ju närmare hårdvara du kommer, det enda språk som överhuvudtaget är inne och trampar på dessa domäner är just Rust.
Citera
2023-11-24, 20:44
  #132
Medlem
Citat:
Ursprungligen postat av JohnnyMnemonic
Jag menar att det är näst in till inga språk undantaget Rust som sätter stopp för att skjuta dig i foten och det går där också fast man får anstränga sig bra mycket för och troligtvis har man tröttnat på borrow checkern innan dess. Men du kan naturligtvis sprinkla koden med Ref<RefCell<T>> osv för allt.

Copilot är enligt min erfarenhet i stort oduglig så snart du går under python i abstraktionsnivå.
Och företag inte tillåter generellt inte användande av det heller eller i alla fall fram tills nyligen då OpenAI deklarerade att de betalar för eventuella copyright intrång vilket beror på att Copilot är tränad på open source github projekt och ingen kommersiell aktör vill råka få in GPL kod eller dyl i projekt.
Ett annat problem är att det ligger efter för mycket vilket gör det väldigt svårt att använda med språk som har ramverk som rör sig snabbt.

python och javascript som du nämner är inte på något sätt konkurrenter med nativspråk som C, C++, Rust osv.
Java, C#, Go osv är språk som är utmärkta för backend och heller inte direkta konkurrenter.

Min rekommendation utgår från total flexibilitet och inte någon speciell inriktning, C/C++ kommer alltid vara relevanta och speciellt ju närmare hårdvara du kommer, det enda språk som överhuvudtaget är inne och trampar på dessa domäner är just Rust.

Alla C++ utvecklare på mitt jobb använder copilot hela tiden med mycket goda resultat.
AI-utvecklingen går framåt hela tiden.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback