Frågor angående programmering!

Permalänk
Medlem

Jag kliver in i er diskussion med lite kommentarer...

Skrivet av kira9204:

Du påstår alltså att C++, troligen det mesta använda och kraftfullaste språket(efter C då kanske?) som finns, där du jobbar direkt emot hårdvaran och där du faktiskt måste veta exakt vad du gör, är ett skitspråk?

C++ är absolut inget skitspråk, där har du rätt. Att påstå att man jobbar direkt mot hårdvaran är däremot direkt lögn, men det vet du nog redan.

Skrivet av kira9204:

Låt mig tala om vad som är riktiga skitspråk: Dem som du just nämde. Där du programmerar mot någon låssasmaskin/virituell hårdvara/OS. Dessa språk är inget annat är en lekstuga där allt redan är klart för dig. Du behöver inte veta hur du hanterar minnet, vad som skiljer olika datatyper ifrån varandra, eller hur OSet fungerar alls.

Jag tycker att dessa språk, som kompilerar till bytekod/intermediärspråk istället för cpu-instruktioner, är smarta. Maximal portabilitet är en tungt vägande faktor, och det är dessutom inte sällan som JIT kan generera extremt effektiv kod i runtime, särskilt om det anpassas dynamiskt under tiden programmet/processen körs. Kompilerad C++ har mer "pålitlig" prestanda, men intermediärspråk kan faktiskt sparka ännu mer arsle beroende på omständigheter.

Jag skulle påstå att C++ är bäst lämpat vid behov av garanterad prestanda (omän assembler förstås är än bättre i extremfall), och i de fall där det inte finns något egentligt alternativ (t.ex. då en runtime för intermediärspråk överhuvudtaget inte kan användas). Till vardags är det bara mer omständigt och besvärligare att underhålla. För att inte nämna hur lätt det är att råka skapa minnesläckor eller säkerhetshål, vilket jag tycker är största nackdelen med C++.

Skrivet av kira9204:

Du använder heller sällan dessa s.k "String":s som dessa språk använder. I C++ sker allt via char arrays eller char pekare,(pekare används nästan uteslutande) klassen "string" som används är i sig inget mer än en dold version utav en char array då du lika gärna kan göra string aaa = "aaa"; aaa[2] = 'c';. Men då få klasser accepterar string varför fejka något.

En standardiserad String-klass är så fantastiskt mycket smidigare än jonglerande med char-arrayer. Gissa varför de kom till? Mångårig erfarenhet av alla förbaskade problem och besvärligheter med char-arrayer. Det finns en anledning varför String alltid brukar vara immutable också. Vid jonglering med strängar så är dessutom StringBuilder (i C#/Java) extremt mycket smidigare än att bängla med arrayer.

Skrivet av kira9204:

Jag brukade vara en javaprogrammerare som skrev några nätverksapplikationer, GUIs, grafiska spel("Mario" och "Wreck It!") osv. Och tro mig, mind = blown när jag gick över till C++. Det var inte en lätt övergång.

Jag säger inte att C++ är bättre för att det är svårare, men jag säger att om du hade förstått lite mer grundläggande om vad som skiljer dessa språk åt, hur en dator fungerar och även hur program körs/dess hirarki, så hade du förstått varför C och C++ är dem mest använda språken idag som alla stora program är skrivna i dem.

Jag gick andra vägen. C -> C++ -> Java -> C#. Jag föredrar både C# och Java framför C/C++ av tusen miljoner anledningar, och jag vet definitivt vad som skiljer språken åt.

Varför många "stora" program är skrivna i C/C++ har mest med historia att göra; intermediärspråk fanns inte (eller var i för omoget stadium) när de påbörjades. Förutom som sagt i de fall där intermediärspråk inte kan eller bör användas (t.ex. operativsystem, åtminstone i dagsläget).

Däremot håller jag helt med om att folk som börjar knacka Java eller C# utan att ha någon aning om hur det fungerar "under huven", lätt kan försätta sig i situationer med urusel prestanda och fullständigt vansinnig minneshantering, utan att begripa varför. Det är t.ex. mycket nyttigt att sätta sig in i hur den gargabe collector språket använder fungerar, och vad man bör undvika.

Visa signatur

5950X, 3090