2023-05-28, 18:22
  #1
Medlem
Ett stort problem med C++ är att det är inte ett minnessäkert programmeringsspråk. För att lösa det där med minnessäkerheten så har skaparen av C++, Bjarne Stroustrup, har sagt i en video här att C++ kan inte förenklas som språk, men C++ kan förenklas när det kommer till användning.

Bjarne Stroustrup säger i videon att ofta när man programmerar i C++ så bryter man mot massa regler. Då finns det externa program som analyserar C++ koden som man har skrivit och avgör vilka regler man har brutit mot. Problemet är att dessa program är externa program, inte något som ingår i C++ standarden. Något som Bjarne Stroustrup vill implementera.

Han kallar det för "Statisk analyserare". En sådan kan analysera om man har bryter mot minnessäkerheten t.ex. man har minnesläckor i sin C++ kod.

Då är frågan

Denna typ av fråga har varit på tapeten under många år. Programmeringsspråket Rust tar just nu många C++ utvecklares uppmärksamhet för att Rust har denna möjlighet att låta kompilatorn analysera Rust-koden och sedan skriva ut vart felen är.

Kommer en sådan analyserare bli inkluderad i C++ i framtiden?
Citera
2023-05-30, 13:04
  #2
Medlem
Jadu.

Är väl utvecklarnas egna ansvar att införa kodanalysverktyg i sin egna utvecklingskedja, tänker jag.

Som du skriver, så finns det redan idag massa verktyg, och tror inte att det hade blivit någon skillnad om man integrerade det i C++ standarden. Folk hade förmodligen bara struntat i resultatet, stängt av varningarna osv..
Citera
2023-05-30, 18:33
  #3
Medlem
Den som lever får se... om Bjarne säger det så kan det säkert materialiseras.
Vore väl inte helt fel.

Men är man inte hyffsat säker om man enbart använder sig av smart pointers? Skippar råa pekare och heap-allokeringar med 'new' ?
Citera
2023-06-01, 14:03
  #4
Medlem
Pepsthecats avatar
Citat:
Ursprungligen postat av oxis
Jadu.

Är väl utvecklarnas egna ansvar att införa kodanalysverktyg i sin egna utvecklingskedja, tänker jag.

Som du skriver, så finns det redan idag massa verktyg, och tror inte att det hade blivit någon skillnad om man integrerade det i C++ standarden. Folk hade förmodligen bara struntat i resultatet, stängt av varningarna osv..
Man kan införa statisk analys eller core guidelines, men att tro att det gör någon skillnad är naivt. Det är upp till utvecklaren att inte "cut corners" och vara rigorösa i sin kodning. Men av det jag har sett så är det oftast inte så. Rust kommer inte kunna nå samma användarbas som C++ har idag oavsett hur bra Rust blir. De flesta företag är inrutade med C++ och de måste se till att bästa praxis följs.
Citera
2023-06-06, 19:25
  #5
Medlem
Citat:
Ursprungligen postat av G.Zamani
Då är frågan

Denna typ av fråga har varit på tapeten under många år. Programmeringsspråket Rust tar just nu många C++ utvecklares uppmärksamhet för att Rust har denna möjlighet att låta kompilatorn analysera Rust-koden och sedan skriva ut vart felen är.

Kommer en sådan analyserare bli inkluderad i C++ i framtiden?

För duktiga programmerare (ursäkta om någon känner sig kränkt) är minnet inte något större problem. Tänk på att nästan allt är skrivet i C++ om du går ner i programs kärnfunktionalitet.
Utvecklar en frontendprogrammerare i Javascript är det egentligen inte javascript utan det är en javascript tolk skriven i C++ som omvandlar javascript till maskinkodsinstruktioner.

Det har hela tiden funnits programmerare som börjat koda C++ men inser att de är för svårt och letar sig till andra språk där det finns bättre skydd. Friheten i C++ gör självklart att man också kan göra fel. Kör du en formel-1 bil måste du lära dig. Kör du en volvo kan du nästan somna bakom ratten

C++ kommer fortsätta dominera, inte på det viset att majoriteten av utvecklare sitter i språket. Mer att duktiga kodare i C++ blir så extremt produktiva och skapar mycket som väldigt många andra använder.
Citera
2023-06-09, 19:45
  #6
Medlem
Citat:
Ursprungligen postat av Pepsthecat
Man kan införa statisk analys eller core guidelines, men att tro att det gör någon skillnad är naivt. Det är upp till utvecklaren att inte "cut corners" och vara rigorösa i sin kodning. Men av det jag har sett så är det oftast inte så. Rust kommer inte kunna nå samma användarbas som C++ har idag oavsett hur bra Rust blir. De flesta företag är inrutade med C++ och de måste se till att bästa praxis följs.
Jo exakt.
Hos oss så har vi massa olika kodanalysprogram, som hindrar att vi kan committa in till vår master branch om någon regel bryts.
Citera
2024-07-08, 02:00
  #7
Medlem
Det är onekligen lättare att göra rätt från början, vilket väl var grundtanken med Rust och oerhört mycket svårare att komma in med det efter 25+ år när antalet kodrader är oräkneliga.

Jag vet inte om det kommer bli tillräckligt bra för att göra den där viktiga skillnaden.

Det blir lite av en kapplöpning. Rust vinner mark, mognar som språk och löser problem som c++ helt enkelt inte fixar. Fler och fler lär sig Rust.

Samtidigt så utvecklas c++ och är troligen betydligt mer robust om 10 år än idag. Men då återstår ändå all kod man knackat ner sedan c++ kom till världen och att folk ska lära sig ändra den koden.

Så det blir spännande hur det går, men man kan nog lugnt säga att många upplever att de är fast med c++ oavsett i sina gamla projekt.
Citera
2024-09-08, 17:04
  #8
Medlem
Psykpatient33s avatar
Citat:
Ursprungligen postat av G.Zamani
Ett stort problem med C++ är att det är inte ett minnessäkert programmeringsspråk. För att lösa det där med minnessäkerheten så har skaparen av C++, Bjarne Stroustrup, har sagt i en video här att C++ kan inte förenklas som språk, men C++ kan förenklas när det kommer till användning.

Bjarne Stroustrup säger i videon att ofta när man programmerar i C++ så bryter man mot massa regler. Då finns det externa program som analyserar C++ koden som man har skrivit och avgör vilka regler man har brutit mot. Problemet är att dessa program är externa program, inte något som ingår i C++ standarden. Något som Bjarne Stroustrup vill implementera.

Han kallar det för "Statisk analyserare". En sådan kan analysera om man har bryter mot minnessäkerheten t.ex. man har minnesläckor i sin C++ kod.

Då är frågan

Denna typ av fråga har varit på tapeten under många år. Programmeringsspråket Rust tar just nu många C++ utvecklares uppmärksamhet för att Rust har denna möjlighet att låta kompilatorn analysera Rust-koden och sedan skriva ut vart felen är.

Kommer en sådan analyserare bli inkluderad i C++ i framtiden?

Det kommer mer och mer krav från köpstarka kunder att nätverksansluten mjukvara ska vara skrivet i språk som är memory safe. Nationer tar till sig det kravet i upphandlingar allt mer och mer. Det blir så när cyber security seglat upp som ett fenomen bland politiker och makthavare, de har fattat och börjat lyssna på sina säkerhetsexperter. Förr sket de högaktningsfullt i vad säkerhetsexperterna sade.

Det betyder att några av företagen helt enkelt måste byta till Rust snart, om deras applikation var skriven i C++ och de inte är okej med en prestandaminskning.

C++ kan nog få bo kvar i (pseudo-)embedded några årtionden till. Det dör nog aldrig riktigt ut. Men jag tror Rust kommer ersätta C++ inom 20 år eller nåt. Linuxkerneln har redan börjat lite. Det är ett vackrare språk också. Vackrare än C++ på alla sätt och vis. Man ska inte underskatta vikten i vad nörden bakom tangentbordet tycker och vill med sitt liv. Nästan alla nördar vill ha Rust.

Bjarne Stroustrup har ingen ryggrad och har låtit flera olika kommiteer bestämma motstridiga saker i hans språk. Det ser ut som fan. Han förtjänar ett kok stryk.

Nej någon analysator kommer inte inkluderas i C++ i framtiden. Det hade inte gått att trycka in det i alla olika ISO/IEC-komitteer och få dem att enas om nåt. Deras kultur är att de inte bryr sig om ekosystem, bara travar med metertjocka standard-texter om själva språket i sig, dess syntax. De är byråkrater, de saknar själar.
__________________
Senast redigerad av Psykpatient33 2024-09-08 kl. 17:29.
Citera
2024-09-15, 22:36
  #9
Medlem
Nu har jag minimal erfarenhet av rust, just pga att det i min bransch inte alls blir så säkert som så gärna skyltas med av förespråkarna (så fort du ska greja med hårdvarunära saker blir "unsafe" ett jävligt vanligt nyckelord). C++ är inte heller så vanligt faktiskt, även om det är 100x mer förkommande än rust, men där handlar det mer om den overhead som följer med ett objektorienterat språk, både den kodmässiga och den implicita som kommer av saker som statisk initiering, vtables, operatoröverlagring, etc.

C++ kommer inte dö ut, inte på 10 års sikt, inte på 50 heller. Däremot är jag övertygad om att rust kommer att knycka andelar (precis som t.ex. pyton gjorde en gång i tiden), men alla språk har sin nisch. Sedan har Bjarne aldrig släppt in C++ i linuxkärnan, troligtvis mycket pga nämnda anledningar, men även för att ett sådant språk inte riktigt gör sig i en OS-kärna där saker man vill åstadkomma behöver ha minimal overhead, utan konstiga bindningar och med ett enkelt ABI som är lätt att länka till diverse "påhang"...

Som sagt, jag har inget mot rust och jag tror det är ett skitbra språk när man väl lärt sig det, men att använda det för att ersätta C++ rakt av känns lite som att man på verkstaden bestämmer sig för att byta ut alla skiftnycklar mot hylsnycklar bara för att inte sabba muttrarna ifall man råkar anställa en mekaniker som inte vet hur en skiftnyckel fungerar...
Citera
2024-09-16, 06:41
  #10
Avstängd
PalmeKillers avatar
Mer och mer av linux kärnan skrivs i Rust av den orsaken.
Citera
2024-11-02, 09:04
  #11
Medlem
sizeofvoids avatar
C++ är på väldigt många sätt ett fruktansvärt programmeringsspråk tycker jag, men jag tycker också att Bjarne har rätt i mycket här. Det handlar om verktyg som används utan att folk kollar eller bryr sig om regler/best practices/hantverket, skiftnyckel-analogin ovan är klockren!

Är C-programmerare själv, men jag tycker rust är rätt ballt, dock så har minnessäkra (eller snarare minnessäkrare) språk funnits länge. Kanske har NSA insett att kineserna har fler minnesrelaterade 0-days än dom själva nu, och vill rikta in sig på den fantastiska attack-vektorn 'cargo install leftpad' istället?

Att just static analyzern skulle vara en del av standarden låter som en knee jerk reaction på det där pinsamma och tragiska utspelet från CISA om minnessäkra språk.

Det är pinsamt för att det anspelar på att detta skulle vara någon silverkula, vilket det inte är (jag har en heartbleed-proof-of-concept i rust om nån är intresserad) samtidigt som de föreslagna ersättningsspråkens "best practices" öppnar upp för helt nya attackytor.
Det är tragiskt därför att det hintar om att IT-branchen nu börjar regleras av direktiv som detta, vilket kommer leda till att innovationstakten sjunker rejält, och det är aldeles för tidigt för det.

Håller även till viss del med om komitte-kritiken ovanför, men samtidigt är det tack vare standardiseringen som det kan finnas toolchains till hundratals platformar. Sist jag kollade gick Rust inte ens att bootstrapa på 32-bit pga address space.
Utan formell spec till rust så lever den i rustc-implementationen. gcc kämpar på men kommer de vara ur sync med olika features i olika implementationer tills de löser problemet... hur då? Jo antagligen med en standard för språket och då får man folk utan själar som sitter med meterhöga papperstravar och skiter i ekosystemet.
Citera
2024-12-31, 10:05
  #12
Medlem
sganderss avatar
Herb Sutter pratar om att det blir ökat fokus på safety i C++26

https://herbsutter.com/2024/11/11/a-...-year-for-cpp/

Så man får väl hoppas att det går i den riktningen, det hjälper kanske inte med existerande kodbaser i alla lägen all hjälp man kan få är bra.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in