C++ och dess framtid att programmera minnessäkert - Hur går utvecklingen?

Permalänk
Medlem
Skrivet av orp:

Jag tror att du också är kapabel till att förstå att företag inte enbart kan rekrytera seniora utvecklare. Vidare, jag har stött på seniora utvecklare som lyckats skapa buggar.

Linux-kärnan är ju notorisk för att ha höga standarder gällande kodkvalitet, testning, automatiserade verktyg, extern granskning med mera men det leta sig fortfarande in simpla buggar som typ use after free och inte kolla felkoder som hade fångats av Rust. Såg att @jefff redan postat om detta.

Misstaget de håller på att göra i linux nu (givetvis min personliga tolkning) är att inte förstå att människor är olika och tänker olika.

Varför tycker vissa att C är lätt medan andra tycker C är jättesvårt?
Varför har vissa lätt för att lära sig nya länders språk (svenska, tyska, engelska mm), medan andra har svårt för det
Varför kan vissa lära sig rita/måla medan andra knappt kan rita en streckgubbe.

Ta alla som har gått lång utbildning, kanske avancerade kurser på högskolan. Duktiga. Nästan alla där är notoriskt dåliga programmerare. Medan anda kufar som knappt kan stava ändå är mycket skickliga programmerare.

C programmerare är speciella, det är samma med C++ men där är det inte lika extremt.
När en C programmerare läser kod så är det inte koden i sig som är det viktiga, vad kodaren egentligen gör när den läser är att måla upp en bild över datat. Hur data lagras i minnet och hur data transporteras. Koden är bara en slags teknik för att transportera/omvandla data mellan olika delar områden i minnet. Det här är en speciell talang.
Kod som skrivs följer en del regler som gäller för hur datorer arbetar med data, C programmerare vet om hur en processor fungerar och tänker hela tiden utifrån det perspektivet.
För att klara det här effektivt är pekare helt centrala, det är mycket svårare att hantera sådan kod på ett smidigt sätt utan att arbeta med adresser.

De programmerare som INTE fokuserar på data utan istället programmerar utifrån hur människor tänker, försöker beskriva saker med litterära namn istället för datoranpassade. De kommer ha mycket svårt att förstå C koden, de läser C kod på fel sätt.

Det här tror jag kommer göra att Rust och C inte kan jobba ihop, problemet är generellt så det gäller absolut inte bara Rust. Exempelvis är det mer eller mindre omöjligt för C programmerare att diskutera lösningar med Java programmerare. De tänker alldeles för olika.
Som om en författare skall diskutera med en snickare. Två helt olika områden.

C programmerare kan ofta hantera enorma mängder kod, men det har inte något att göra med att de kommer ihåg koden utan att de har en ritning i skallen över hur datat i applikationen/systemet ser ut. De utgår från denna bilden/ritningen.

Rust programmerare gör det inte, de flesta andra programmerare gör det inte heller. Det är inte en kunskap som premieras i skolan, skolan premierar lässkicklighet och förmåga att minnas vad man läst.

Eftersom det är så olikt sätt att bearbeta kod blir det ständiga konflikter.

Permalänk
Medlem
Skrivet av klk:

C programmerare kan ofta hantera enorma mängder kod, men det har inte något att göra med att de kommer ihåg koden utan att de har en ritning i skallen över hur datat i applikationen/systemet ser ut. De utgår från denna bilden/ritningen.

Rust programmerare gör det inte, de flesta andra programmerare gör det inte heller. Det är inte en kunskap som premieras i skolan, skolan premierar lässkicklighet och förmåga att minnas vad man läst.

Eftersom det är så olikt sätt att bearbeta kod blir det ständiga konflikter.

Varför skulle endast C programmerare ha en mental bild av systemet? Hur ska du programmera något utan att du sätter det i ett större sammanhang?

Permalänk
Medlem
Skrivet av pine-orange:

Varför skulle endast C programmerare ha en mental bild av systemet? Hur ska du programmera något utan att du sätter det i ett större sammanhang?

Val av språk, varför vissa gillar C medan andra hatar det. Man kan ganska snabbt se hur programmerare tänker baserat på hur de skriver kod och vad för typ av lösningar som de gillar.
Det finns säkert utvecklare som tänker som C programmerare i andra språk men de kommer inte trivas med språket de använder.

Permalänk
Medlem
Skrivet av klk:

Val av språk, varför vissa gillar C medan andra hatar det. Man kan ganska snabbt se hur programmerare tänker baserat på hur de skriver kod och vad för typ av lösningar som de gillar.
Det finns säkert utvecklare som tänker som C programmerare i andra språk men de kommer inte trivas med språket de använder.

Och det är lite därför som bra programmerare måste lära sig flera olika programmeringsspråk - ju mer olika desto bättre.
Man lär sig lite olika sätt att tänka och angripa problem när man lär sig varierande programmeringsspråk, och blir på så sätt en bättre programmerare eftersom man då har tillgång till fler verktyg att använda.

Programmerare som bara kan tänka på ett sätt, är inte bra programmerare - alldeles för lite flexibilitet i hur de löser problem.

Permalänk
Medlem
Skrivet av klk:

Misstaget de håller på att göra i linux nu (givetvis min personliga tolkning) är att inte förstå att människor är olika och tänker olika.

Nej dom håller inte på att göra ett misstag. Dom har sagt att om du är en maintainer och enbart vill hålla på med C så kan du ignorera Rust-bitarna men då har du heller ingen beslutanderätt över hur Rust-delarna utformas.

Skrivet av klk:

C programmerare är speciella, det är samma med C++ men där är det inte lika extremt.
...

Jag vet inte varför du tror att C-utvecklare är några magiska varelser? Jag arbetar med C och hobbykodar i Rust och jag ser inga av problemen som du framställer.

Skrivet av klk:

Det här tror jag kommer göra att Rust och C inte kan jobba ihop, problemet är generellt så det gäller absolut inte bara Rust. Exempelvis är det mer eller mindre omöjligt för C programmerare att diskutera lösningar med Java programmerare. De tänker alldeles för olika.
Som om en författare skall diskutera med en snickare. Två helt olika områden.

Jag har mina misstankar om att många Android-utvecklare inte delar denna bilden.

Skrivet av klk:

C programmerare kan ofta hantera enorma mängder kod, men det har inte något att göra med att de kommer ihåg koden utan att de har en ritning i skallen över hur datat i applikationen/systemet ser ut. De utgår från denna bilden/ritningen.

Jag håller inte med. Det är viktigt för alla som kodar att hålla kod i huvudet eftersom det underlättar vardagligt arbete. Jag skulle inte påstå att jag tänker på data i samma utsträckning som arkitektur.

Skrivet av klk:

Rust programmerare gör det inte, de flesta andra programmerare gör det inte heller. Det är inte en kunskap som premieras i skolan, skolan premierar lässkicklighet och förmåga att minnas vad man läst.

Eftersom det är så olikt sätt att bearbeta kod blir det ständiga konflikter.

Nu hittar du på saker. Det finns många industrijättar som använda båda språken utan några större problem. Jag har även fått tre jobbförfrågningar som efterfrågar både C och Rust denna veckan så jag får intrycket av att konflikten inte är så omfattande.

Permalänk
Medlem
Skrivet av orp:

Jag vet inte varför du tror att C-utvecklare är några magiska varelser?

Har du lärt dig C för att det är ett sätt att komma in på arbetsmarknaden eller gillar du språket?

Skrivet av orp:

Jag vet inte varför du tror att C-utvecklare är några magiska varelser? Jag arbetar med C och hobbykodar i Rust och jag ser inga av problemen som du framställer.

Tre frågor:
- Varför hobbykodar du i Rust?
- Vad tycker du om kodstilen hungarian notation?
- Tycker du det är svårt med pekare, om du inte tycker det saknar du isåfall inte att leka med minnet som du kan göra i C men som inte går i Rust

Permalänk
Medlem
Skrivet av Erik_T:

Och det är lite därför som bra programmerare måste lära sig flera olika programmeringsspråk - ju mer olika desto bättre.

Eller så lär du dig ett multiparadigm språk som exempelvis C++ och kan sedan allt. Resten är bara olika syntaxer kombinerat med medföljande bibliotek.
Det är en av skillnaderna med att lära sig förstå minne och CPU jämfört med att lära sig programmeringsspråk.

En dator kan bara ett enda språk och det är processorns maskinkod. Allt omvandlas till det.

Jämför med att lära dig multiplikationstabellen.
- Teknik 1: Lär dig alla kombinationer utantill hur man multiplicerar ihop tal från 0 - 9 och applicera regler på det.
- Teknik 2: Lär dig hur multiplikation fungerar, att 2 * 2 innebär att man plussar ena talet det antal gånger som det andra talet säger.

Med teknik 1 finns det gränser med vad som går att åstadkomma eftersom man inte förstår logiken. En hjärna kan bara komma ihåg så mycket.

Permalänk
Medlem
Skrivet av klk:

Har du lärt dig C för att det är ett sätt att komma in på arbetsmarknaden eller gillar du språket?

Jag lärde mig C på universitetet och jag pluggade data-telekom så embedded blev ganska naturligt och därför var det C som gällde. Jag lärde mig C, arbetsmarknaden behövde C och jag gillar C.

Skrivet av klk:

Tre frågor:
- Varför hobbykodar du i Rust?
- Vad tycker du om kodstilen hungarian notation?
- Tycker du det är svårt med pekare, om du inte tycker det saknar du isåfall inte att leka med minnet som du kan göra i C men som inte går i Rust

1. Många anledningar.
1.1. Jag försöker anpassa mina språkkunskaper för att få bra täckning och ha multipla "verktyg" att välja mellan. Jag kodade en del Go men jag insåg att jag kunde slå två flugor i en smäll med att ersätta Go med Rust eftersom Rust var lämpligare för mina rötter i embedded linux. Samt att jag gillade iterator-funktionerna i Rust som inte fanns i Go vid tiden exempelvis map, filter, fold osv.
1.2. Framtidssäkring eftersom jag såg ökat intresse på marknaden.
1.3. Rust har ett enormt ekosystem så jag kan lösa många uppgifter i Rust om jag vill. Green threads, embedded och även modern webbutveckling om jag nu skulle vilja det.

2. Jag använder hungarian notation.

3. Nej, jag tycker inte att det är svårt med pekare och nej i majoriteten av fallen så behöver jag inte leka med minnet utan behöver enbart rutinmässigt allokera och frigöra minne. Jag har därför inget emot att Rust löser rutinmässiga problem.

Som jag var inne på tidigare jag kodar inte enbart C och Rust utan programmeringsspråk har sina styrkor och svagheter och det är bra att kunna några olika. Exempelvis, om jag behöver skriva ett multi-concurrent program som ska köra på multipla maskiner som enbart gör något litet som är prestandatungt för ett högnivåspråk. Varför skulle jag då inte skriva 98% av programmet i exempelvis Erlang/Elixir och 2% i Rust/C?

Jag tror jag har sagt detta vid tidigare tillfälle i denna tråden. Jag är inte nöjd med Rust. Jag tycker att det är komplext och syntaxen är jobbig(lifetimes, trait bounds), standard-lib:et är aningen tunt. Jag har haft en allt annat än lätt resa att lära mig Rust och jag känner fortfarande inte att jag behärskar det. Jag tycker har dock känt mig mer nöjd med Rust än de gångerna jag försökt mig på C++.

Man behöver inte vara binär bara för att man kodar binära maskiner

Permalänk
Medlem
Skrivet av klk:

Eller så lär du dig ett multiparadigm språk som exempelvis C++ och kan sedan allt. Resten är bara olika syntaxer kombinerat med medföljande bibliotek.

Inte alls. Inte alls. Om du tror att C++ täcker alla olika programmeringsparadigmer så har du mycket kvar att lära.

Du programmerar helt annorlunda i C++ jämfört med i ett funktionellt språk som Standard ML eller Lisp, eller hur du använder ett logikprogrammeringsspråk som Prolog.

Assembler/maskinkod är bara ytterligare en familj av programmeringsspråk, och de kan variera rätt mycket mellan olika processorfamiljer. Till och med mellan olika processorer i samma familj.

Lära sig programmeringsspråk är enkelt. Lära sig programmera är svårt.

Permalänk
Medlem
Skrivet av Erik_T:

Inte alls. Inte alls. Om du tror att C++ täcker alla olika programmeringsparadigmer så har du mycket kvar att lära.

Vad är det jag missar om jag lär mig C++?

Permalänk
Medlem
Skrivet av orp:

Varför skulle jag då inte skriva 98% av programmet i exempelvis Erlang/Elixir och 2% i Rust/C?

Det här är C++ kod

std::string stringDbName = GetApplicationFolder(); stringDbName += "db.sqlite"; gd::database::database_i* pdatabase = (gd::database::database_i*)new gd::database::sqlite::database_i("db"); auto result_ = pdatabase->open({ {"file", stringDbName} }); gd::database::cursor_i* pcursor = nullptr; pdatabase->get_cursor(&pcursor); result_ = pcursor->open("SELECT * FROM TCustomer;"); gd::table::dto::table tableCustomer; gd::database::to_table(pcursor, &tableCustomer); std::string stringResult; gd::table::to_string(tableCustomer, stringResult, gd::table::tag_io_header{}, gd::table::tag_io_csv{}); std::cout << stringResult << "\n";

Logiken under där är gjord så att samma kod fungerar på alla större databaser (SQL Server, Oracle, postgresql, mariadb o.s.v), även sqlite som i exemplet.
Det är C++ kod som abstraherat logiken för att med nästan ingen kod klara av att göra lite vad som helst med databaser.

När du skriver "Erlang/Elixir och 2% i Rust/C?" och att du väljer dessa språk så beror det inte på språken utan att det följer med färdigskriven kod du kan använda dig av.
Det kan du göra i C++ med, du kan abstrahera logik som inget annat språk klarar av med samma effektivitet.

Permalänk
Medlem
Skrivet av klk:

Det här är C++ kod

std::string stringDbName = GetApplicationFolder(); stringDbName += "db.sqlite"; gd::database::database_i* pdatabase = (gd::database::database_i*)new gd::database::sqlite::database_i("db"); auto result_ = pdatabase->open({ {"file", stringDbName} }); result_ = pcursor->open("SELECT * FROM TCustomer;"); gd::table::dto::table tableCustomer; gd::database::to_table(pcursor, &tableCustomer); std::string stringResult; gd::table::to_string(tableCustomer, stringResult, gd::table::tag_io_header{}, gd::table::tag_io_csv{}); std::cout << stringResult << "\n";

Logiken under där är gjord så att samma kod fungerar på alla större databaser (SQL Server, Oracle, postgresql, mariadb o.s.v), även sqlite som i exemplet.
Det är C++ kod som abstraherat logiken för att med nästan ingen kod klara av att göra lite vad som helst med databaser.

Sorry men jag vet inte vad du vill ha sagt med detta. Här är motsvarande i Rust ...

let dir = env::current_dir()?.join("customers.db").to_string_lossy(); let pool = SqlitePool::connect(format!("sqlite::{dir}").as_str()).await?; let recs = sqlx::query("SELECT foo, bar FROM TCustomer") .fetch_all(&pool) .await?; for rec in recs { println!("{} {}", rec.foo, rec.bar); }

Skrivet av klk:

När du skriver "Erlang/Elixir och 2% i Rust/C?" och att du väljer dessa språk så beror det inte på språken utan att det följer med färdigskriven kod du kan använda dig av.

Det stämmer inte helt men visst där är en VM under Erlang men det finns syntax för att skicka och ta emot meddelande mellan processer samt att det finns pattern matching för binärdata vilket gör det lätt att implementera nätverksprotokoll.

Skrivet av klk:

Det kan du göra i C++ med, du kan abstrahera logik som inget annat språk klarar av med samma effektivitet.

Ge gärna exempel när du kommer med sådana påstående ...

Permalänk
Medlem
Skrivet av orp:

Sorry men jag vet inte vad du vill ha sagt med detta. Här är motsvarande i Rust ...

let dir = env::current_dir()?.join("customers.db").to_string_lossy(); let pool = SqlitePool::connect(format!("sqlite::{dir}").as_str()).await?; let recs = sqlx::query("SELECT foo, bar FROM TCustomer") .fetch_all(&pool) .await?; for rec in recs { println!("{} {}", rec.foo, rec.bar); }

Det är inte samma, inte på långa vägar och det "table" objektet du ser i min kod, det kan massor.

Vad jag ville visa med det är att abstraktion inte är något unikt och kan man skriva den själv så kan man göra så mycket mer

Permalänk
Medlem
Skrivet av klk:

...
Det kan du göra i C++ med, du kan abstrahera logik som inget annat språk klarar av med samma effektivitet.

Här säger du att C++ kan abstrahera logik på ett sätt som inget annat språk klarar av med samma effektivitet (dvs unikt).

Skrivet av klk:

...
Vad jag ville visa med det är att abstraktion inte är något unikt och kan man skriva den själv så kan man göra så mycket mer

och här säger du att abstraktion inte är unikt ...

Skrivet av klk:

Det är inte samma, inte på långa vägar och det "table" objektet du ser i min kod, det kan massor.

Nej för jag orkade inte leta upp vad gd är och vad gd's table gör ... samtidigt är Rust-koden poolad och hanterar error ... Jag ser fortfarande inte din poäng mot Erlang i föregående inlägg. Min poäng var att man når ett resultat snabbare och lättare som troligen kommer vara mer stabilt för att poängtera vikten av rätt verktyg.

I ditt fall så känns det som att alla problem löser man bäst med C++ oavsett om det är en parser som ska skrivas eller om det är punkteringen på cykeln som ska lagas.

Permalänk
Medlem
Skrivet av orp:

Här säger du att C++ kan abstrahera logik på ett sätt som inget annat språk klarar av med samma effektivitet (dvs unikt).

och här säger du att abstraktion inte är unikt ...

Nej det är inte unikt jag menar utan med samma effektivitet (alla vet väl att man abstraherar logik i alla språk)

Skrivet av orp:

I ditt fall så känns det som att alla problem löser man bäst med C++ oavsett om det är en parser som ska skrivas eller om det är punkteringen på cykeln som ska lagas.

Det är en helt annan diskussion. Självklart får varje utvecklare välja de verktyg utvecklaren behärskar

Tråden handlar om minne och minnessäkerhet, att C/C++ får kritik där. En kritik som inte är korrekt och det är kanske därför som amerikanska staten backat ordentligt

Permalänk
Medlem
Skrivet av klk:

Nej det är inte unikt jag menar utan med samma effektivitet (alla vet väl att man abstraherar logik i alla språk)

Jag tror Rust och Zig klassas till samma effektivitet...

Skrivet av klk:

Tråden handlar om minne och minnessäkerhet, att C/C++ får kritik där. En kritik som inte är korrekt och det är kanske därför som amerikanska staten backat ordentligt

Detta trodde jag vi hade behandlat sedan länge i denna tråden och då vet jag inte varför du svävar ut om abstraktionsnivåer, förklaringar om varför jag kodar Rust som hobby, hur C-utvecklare ser på system osv...

Det är väl allmänt känt att varken C eller C++ kan erbjuda minnessäkerhet. Företag och myndigheter vill använda säker mjukvara och tycker att minnessäkerhet är ett kriterium för säker mjukvara.

Permalänk
Skrivet av klk:

Tråden handlar om minne och minnessäkerhet, att C/C++ får kritik där. En kritik som inte är korrekt och det är kanske därför som amerikanska staten backat ordentligt

Suck,

Hela din argumentation i andra sakfrågor än just huruvida C eller C++ är minnessäkert eller inte baseras ju på att man som programmerare lär sig den hårda vägen och har man skjutit sig i foten tillräckligt många gånger så lär man sig till slut att inte göra de vanliga felen (som out of bounds errors och access after free). Vi är väl ändå överens om att C helt och hållet saknar mekanismer som skyddar dig mot dylika fel? Och försöken att införa säkerhetsmekanismerna i C++ var helt förkastliga för det gjorde ju att man inte lärde sig den hårda vägen... Hur kan du säga att kritiken är obefogad?

Permalänk
Medlem
Skrivet av orp:

Det är väl allmänt känt att varken C eller C++ kan erbjuda minnessäkerhet. Företag och myndigheter vill använda säker mjukvara och tycker att minnessäkerhet är ett kriterium för säker mjukvara.

Myndigheter är stora inköpare av system skrivna i C# vad jag vet. Men försök hitta jobb som C# programmerare idag, där går AI fram som en ångvält.
Tror inte valet baserats på minnessäkerhet utan att det har gått att få tag i utvecklare som går att byta ut.

Permalänk
Medlem
Skrivet av klk:

Myndigheter är stora inköpare av system skrivna i C# vad jag vet. Men försök hitta jobb som C# programmerare idag, där går AI fram som en ångvält.
Tror inte valet baserats på minnessäkerhet utan att det har gått att få tag i utvecklare som går att byta ut.

Jag tror att myndigheter använder mer mjukvara än system som är skrivna i C# så som operativsystem, webbservrar, namnservrar osv. som hade tjänat på att vara minnessäkra.

Permalänk
Datavetare
Skrivet av klk:

Myndigheter är stora inköpare av system skrivna i C# vad jag vet. Men försök hitta jobb som C# programmerare idag, där går AI fram som en ångvält.
Tror inte valet baserats på minnessäkerhet utan att det har gått att få tag i utvecklare som går att byta ut.

Sökte bara lite snabbt med begränsning "stockholmsområdet", hoppade upp ~100 lediga jobb med C# som krav. Då det räcker med ett jobb för de flesta verkar våra AI-overlords inte helt tagit över än.

Och någonstans ovan nämnde du att nya styret i Washington har/kommer ändra policy kring krav på de som levererar programvara till statliga organisationer.

Det jag kan hitta är att de i sak inte verkar ändra något alls, bl.a. då det mest som Biden-adminstrationen införde var saker som förslogs och utreddes under förra Trump-adminstrationen.

Tvärtom ser man delen om att leverantörer kan bli ersättningskyldiga om intång uppdagas som visar sig beror på brister man hade kunna undvika med mer lämpliga teknikval. Inget förbjuder fortsatt användning av C och C++, men det man nu gör är ökar bevisbördan på leverantören att det teknikval man gjorde verkligen var det mest lämpade.

En väldigt försvårande omständighet här just för C och C++ är att man har nu tittat på en del större (>miljoner rader kod) projekt helt skriva i Rust och sett att de så här långt haft noll sårbarheten av den typen som står för ~70 % av alla sårbarheter i C och C++ kod.

Detta beskriver policy från nuvarande Trump admin

https://www.lawfaremedia.org/article/the-maga-case-for-softwa...

"A stronger, more direct approach would focus not on the development practices of software companies but on the features of the software they produce. It would require vendors to attest that they have taken measures to avoid specific common weaknesses for which there are readily available avoidance techniques. Vendors would be free to choose how to address these problems. But if software purchased by the government has one of these common weaknesses, and if there was a technique that could have eliminated that weakness, the vendor should be liable."

"In recent years, newer, innovative coding languages have been developed that are not susceptible to memory-safety vulnerabilities but also do not wastefully consume time and computing resources in the way that older memory-safe languages did. One memory-safe language is Rust, and it is now mature enough for Google to adopt its use in Android for new code: In 2022, Android 13 introduced 1.5 million lines of Rust with zero memory-safety issues."

Om det finns två sätt att göra rätt: skrika åt folk "gör rätt för f-n" eller använda metoder som gör det väldigt svårt att göra fel så tror jag att en beställare har rätt lätt att hävda att man inte gjort allt i sin makt om man använder metod 1 och det skiter sig. Även om det skiter sig med metod 2 lär man som leverantör stå betydligt grundare i skiten.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Tvärtom ser man delen om att leverantörer kan bli ersättningskyldiga om intång uppdagas som visar sig beror på brister man hade kunna undvika med mer lämpliga teknikval. Inget förbjuder fortsatt användning av C och C++, men det man nu gör är ökar bevisbördan på leverantören att det teknikval man gjorde verkligen var det mest lämpade.

Jag tror att du är rätt ute här.

Själv jobbar jag med säkerhetskritisk programvara på ett medelstort bolag som har drygt tusen utvecklare. Det mesta av vår gamla projekt är skrivna i C (μC) eller C++. Redan nu startas det upp Rust-projekt hos oss, men enligt de som är ansvariga för det extremt komplexa ämnet "certifieringar och funktionssäkerhet" (tänk: risk för personskador vid malfunction) finns inte verktygen som behövs för att stödja "process-aspekten" där än. Därför används framför allt Rust just nu (lite paradoxalt) just för de projekt som har LÄGRE säkerhetskrav. När ekosystemet kring Rust har mognat till något steg till så tror jag att vi kommer få se en explosionsartad tillväxt för språket inom bl.a. flyg, rymd, medtech, automotive, railway, robotics, och allt möjligt där funktionssäkerhet och realtidskrav är viktigare än allt annat.

Permalänk
Medlem
Skrivet av Perkoff:

Jag tror att du är rätt ute här.

Själv jobbar jag med säkerhetskritisk programvara på ett medelstort bolag som har drygt tusen utvecklare. Det mesta av vår gamla projekt är skrivna i C (μC) eller C++. Redan nu startas det upp Rust-projekt hos oss, men enligt de som är ansvariga för det extremt komplexa ämnet "certifieringar och funktionssäkerhet" (tänk: risk för personskador vid malfunction) finns inte verktygen som behövs för att stödja "process-aspekten" där än. Därför används framför allt Rust just nu (lite paradoxalt) just för de projekt som har LÄGRE säkerhetskrav. När ekosystemet kring Rust har mognat till något steg till så tror jag att vi kommer få se en explosionsartad tillväxt för språket inom bl.a. flyg, rymd, medtech, automotive, railway, robotics, och allt möjligt där funktionssäkerhet och realtidskrav är viktigare än allt annat.

Dessa företag (kan gissa vilka) har egentligen behov av en egen kompilator/toolchain men kan inte och vill inte slösa resurser på det. Att köpa in är ofta för dyrt i längden och man vill inte bli inlåst mot en levrantör av något. Största problemet med cerifiering är att man blir helt beroende av en version av en kompilator. Att stega en sådan är inte helt enkelt ur ett manstimmar perspektiv. Men vist, inte helt kul att ligga på gcc 4.x. 5.x. osv. Kan också vara så, med stor sannolikhet, att de saker man redan köpt in inte stöder det senaste eller ens en LTS version.

Problemet med Rust är lite som med c++ med alla fancy standard bibliotek och funktioner, det är för lätt att göra saker som man inte förstår den totala effekten av. Kul om en kille sitter med Rust när man har 20 utvecklare som inte hört talas om det eller har tid att sätta sig in i det. Då har man klantat sig i management. Teamwork! Please.

Säkra system -> håll det enkelt. Ofta enkla saker som ska göras ändå här annars är något feltänkt i sin system arkitektur från början. Till mer beslutsfatande delar i system, go wild... inom visa gränser för vad man klarar av att system verifiera - att ha riktig hårdvara att köra på (eller hyfsat lik) underlättar ju... inte alla företag som förstår det heller. Man är ändå tvingad att dra in 3:e part libar/frameworks för att få det att fungera. Troligtvids ligger man och kör med Linux som OS (så bara där fösvinner en del aspekter här som relativt omöjligt ändå)

Men en traktor är inte en bil.

Permalänk
Medlem
Skrivet av Yoshman:

Sökte bara lite snabbt med begränsning "stockholmsområdet", hoppade upp ~100 lediga jobb med C# som krav. Då det räcker med ett jobb för de flesta verkar våra AI-overlords inte helt tagit över än.

Vi kommer från en tid det nästan räckte med att säga "jag är intresserad av att lära mig programmera" och det var nära att man fick jobb. Efterfrågan på programmerare har varit extremt hög. Vet några som fick jobb efter tvåveckors kurs i html.

Eftersom efterfrågan varit så hög har också löner trissats upp (ordentligt).
Nu är det tuffare tider och det fler får lönsamhetsproblem, samtidigt sitter de med överbetalda utvecklare.

Det går absolut att få jobb om du har lång erfarenhet, är beredd att gå in på lägre lön. Är man däremot ny idag är det jättetufft i enklare miljöer.

Skrivet av Yoshman:

Och någonstans ovan nämnde du att nya styret i Washington har/kommer ändra policy kring krav på de som levererar programvara till statliga organisationer.

Vad skulle du sagt om exempelvis staten gick ut och sa till spelbolagen att sluta skriva spel i C++ för att få säkrare kod?

Försöker svara senare men just angående "säkerhet" och mjukvara är detta forumet kanske inte platsen det går att diskutera sådant. Jag personligen har aldrig trott att syftet med reglerna varit att få säkrare kod men det har tagit lite tid och gräva.

Är ganska säker på att de kommer plocka bort regeln om USA vill hänga med i teknikutvecklingen. Annars kommer andra länder ta över.

Permalänk
Medlem
Skrivet av riche:

Problemet med Rust är lite som med c++ med alla fancy standard bibliotek och funktioner, det är för lätt att göra saker som man inte förstår den totala effekten av. Kul om en kille sitter med Rust när man har 20 utvecklare som inte hört talas om det eller har tid att sätta sig in i det. Då har man klantat sig i management. Teamwork! Please.

+1

Det här kommer bita Rust i baken ordentligt. Möjligen har det varit tvunget att skapa en miljö som gör det lätt att komma igång med mindre projekt för locka utvecklare. Men det som fungerar i liten skala fungerar inte lika bra när det växer.

Python har inga ambitioner av att bli ett språk man gör större system med men har det där med att det dräller av komponenter, där är poängen med att snabbt slänga ihop något, behöver de ändra så skriv nytt. Där är det ok med komponenter som plötsligt inte fungerar. De skriver nytt och tanken är inte att skriva kod som går att underhålla.

Python är fantastiskt populärt till det som det är gjort för.

Men jag skulle inte säga att C++ har massa fancy bibliotek. C++ har STL och en del från C tiden, det finns misstag i det men är ganska få och en del har tagits bort.
I C++ är det mer marknaden som får avgöra om de väljer något externt eller utvecklar själva. Jag hade själv önskat att de höll igen lite på hur mycket man väljer att lägga in i STL.

Mina två önskemål nu om språket C++ är
1: Möjligheter att deklarera funktioner på flera ställen. Att man kan "bygga på" en deklaration. Orsaken till det är att kompilatorer blivit så bra och kan hjälpa till mycket samt de bättras på hela tiden. När C++ lägger till saker som mest är för kompilatorn så kladdar det ner läsbarhet. Jag väljer själv att låta bli och deklarera för saker som skulle vara bra att ha just för att koden blir kladdigare. Hade jag kunnat gömma undan det så hade det varit bättre.
2: Kunna sätta prioritet när det blir konflikt på överlagrade metoder, att jag skulle kunna deklarera metoder så när kompilatorn har två eller fler möjligheter att välja metod så har jag deklarerat prioritetsordningen. Det hade underlättat att skriva generell kod

Permalänk
Datavetare
Skrivet av klk:

Vi kommer från en tid det nästan räckte med att säga "jag är intresserad av att lära mig programmera" och det var nära att man fick jobb. Efterfrågan på programmerare har varit extremt hög. Vet några som fick jobb efter tvåveckors kurs i html.

Eftersom efterfrågan varit så hög har också löner trissats upp (ordentligt).
Nu är det tuffare tider och det fler får lönsamhetsproblem, samtidigt sitter de med överbetalda utvecklare.

Det går absolut att få jobb om du har lång erfarenhet, är beredd att gå in på lägre lön. Är man däremot ny idag är det jättetufft i enklare miljöer.

Vad skulle du sagt om exempelvis staten gick ut och sa till spelbolagen att sluta skriva spel i C++ för att få säkrare kod?

Försöker svara senare men just angående "säkerhet" och mjukvara är detta forumet kanske inte platsen det går att diskutera sådant. Jag personligen har aldrig trott att syftet med reglerna varit att få säkrare kod men det har tagit lite tid och gräva.

Är ganska säker på att de kommer plocka bort regeln om USA vill hänga med i teknikutvecklingen. Annars kommer andra länder ta över.

Fast här säger man absolut inget om vad industrin i stort ska göra. De regler/riktlinjer är mot företag som levererar produkter till statliga organisationer.

Oron C++ lägret känner kring detta gissar jag mer handlar om att det målar upp en bild av att "C och C++ ska man undvika, för de tenderar ge säkerhetsproblem" samt företag som jobbar både mot statliga och privata organisationer kommer snabbare gå till alternativ för det annars ger merkostnad.

Sen måste man titta lite framåt också. Hur många personer under 40 år känner du som använder C eller C++ som primära språk?
Får lite känslan av att en viktig anledning till att Linus Torvalds accepterade Rust i kärnan är för att han har redan gjort observationen att medelåldern på kernel utvecklare har ökat och det är inte i närheten lika stor andel som kan C idag som kunde det på 90/00-talen.

Tycker jag länge tillhörde "den yngre delen" under den rätt långa tid jag primärt jobbade med C, då är jag ändå 50+ idag...

Skrivet av klk:

+1

Det här kommer bita Rust i baken ordentligt. Möjligen har det varit tvunget att skapa en miljö som gör det lätt att komma igång med mindre projekt för locka utvecklare. Men det som fungerar i liten skala fungerar inte lika bra när det växer.

Python har inga ambitioner av att bli ett språk man gör större system med men har det där med att det dräller av komponenter, där är poängen med att snabbt slänga ihop något, behöver de ändra så skriv nytt. Där är det ok med komponenter som plötsligt inte fungerar. De skriver nytt och tanken är inte att skriva kod som går att underhålla.

Python är fantastiskt populärt till det som det är gjort för.

Men jag skulle inte säga att C++ har massa fancy bibliotek. C++ har STL och en del från C tiden, det finns misstag i det men är ganska få och en del har tagits bort.
I C++ är det mer marknaden som får avgöra om de väljer något externt eller utvecklar själva. Jag hade själv önskat att de höll igen lite på hur mycket man väljer att lägga in i STL.

Mina två önskemål nu om språket C++ är
1: Möjligheter att deklarera funktioner på flera ställen. Att man kan "bygga på" en deklaration. Orsaken till det är att kompilatorer blivit så bra och kan hjälpa till mycket samt de bättras på hela tiden. När C++ lägger till saker som mest är för kompilatorn så kladdar det ner läsbarhet. Jag väljer själv att låta bli och deklarera för saker som skulle vara bra att ha just för att koden blir kladdigare. Hade jag kunnat gömma undan det så hade det varit bättre.
2: Kunna sätta prioritet när det blir konflikt på överlagrade metoder, att jag skulle kunna deklarera metoder så när kompilatorn har två eller fler möjligheter att välja metod så har jag deklarerat prioritetsordningen. Det hade underlättat att skriva generell kod

Fråga: har du någonsin använt Rust? För en sak som ibland ses som en nackdel med Rust är att det har ett rätt litet standardbibliotek. Det är långt mer jämförbart med standardbiblioteket i C++ än standardbiblioteket i Python, C#, Java, Go, m.fl.

Category

Rust Standard Library

C++ Standard Library

Notes

Memory Management

- Ownership and Borrowing
- Smart pointers:

Box<T>

,

Rc<T>

,

Arc<T>

- Manual memory management with RAII
- Smart pointers:

std::unique_ptr

,

std::shared_ptr

,

std::weak_ptr

Rust enforces memory safety at compile time without a garbage collector, while C++ relies on RAII and smart pointers.

Collections

-

Vec<T>

(dynamic array)
-

HashMap<K, V>

,

BTreeMap<K, V>

-

HashSet<T>

,

BTreeSet<T>

-

LinkedList<T>

(less common)

-

std::vector<T>

-

std::unordered_map<K,V>

,

std::map<K,V>

-

std::unordered_set<T>

,

std::set<T>

-

std::list<T>

Both provide similar data structures, though Rust’s collections are designed to integrate with its ownership model.

Strings & Text

- Owned string:

String

- Borrowed string slice:

&str

-

std::string

-

std::wstring

(for wide characters)

Rust distinguishes between owned and borrowed strings, emphasizing immutability by default.

I/O and File System

- I/O traits:

std::io::Read

,

std::io::Write

- File and directory handling in

std::fs

- Path manipulation:

std::path::Path

and

std::path::PathBuf

- Stream-based I/O:

<iostream>

,

<fstream>

- File system:

<filesystem>

(since C++17)

Rust’s modular I/O is built around traits, while C++ has recently standardized filesystem support.

Error Handling

- Uses

Result<T, E>

for recoverable errors
-

Option<T>

for nullable values
- No exceptions (errors are handled explicitly)

- Exceptions for error handling
-

std::optional<T>

(since C++17)
-

std::variant<...>

(since C++17)

Rust forces explicit error handling via its type system, reducing hidden control flow compared to exceptions in C++.

Concurrency

- Threads:

std::thread

- Channels:

std::sync::mpsc

- Synchronization primitives:

Mutex

,

RwLock

,

Arc

- Threads:

<thread>

- Synchronization:

<mutex>

,

<atomic>

,

<condition_variable>

- Futures and async (C++20)

Both languages offer robust concurrency support; Rust’s model guarantees data race freedom at compile time.

Time & Duration

-

std::time::Instant

,

std::time::Duration

-

<chrono>

library for time points and durations

Both offer abstractions for measuring time and durations.

Algorithms & Iterators

- Extensive iterator traits and combinators
- Built-in methods on collections (map, filter, reduce)

-

<algorithm>

library (e.g.,

std::sort

,

std::accumulate

)

Rust emphasizes lazy, composable iterators while C++ uses generic algorithms operating on iterators.

Formatting

- Macro-based formatting:

format!

,

println!

(powered by

std::fmt

)

- Stream-based formatting with

std::cout

and manipulators
-

std::format

(since C++20)

Rust’s macros provide type-safe, concise formatting compared to C++ streams (or

std::format

).

Utility & Traits

- Traits for polymorphism (similar to interfaces)
- Utility types like

Option

,

Result

, tuples, pattern matching

- Type traits in

<type_traits>

- Utility types:

std::tuple

,

std::pair

- Runtime polymorphism via virtual functions

Rust uses traits to define behavior at compile time; C++ combines compile-time and runtime polymorphism.

Networking

- Basic networking support in

std::net

(TCP, UDP)

- No official built-in networking until recent proposals (commonly uses libraries like Boost.Asio)

Rust offers fundamental TCP/UDP support; C++ often relies on third-party libraries for networking.

Reflection & Metaprogramming

- Compile-time metaprogramming with macros and generics
- No runtime reflection

- Limited runtime type information (RTTI)
- Compile-time metaprogramming with templates
- No comprehensive runtime reflection

Both have minimal runtime reflection, but Rust’s macro system offers powerful compile-time code generation without runtime overhead.

Denna ChatGPT komponerade jämförelse var faktiskt rätt bra
Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Oron C++ lägret känner kring detta gissar jag mer handlar om att det målar upp en bild av att "C och C++ ska man undvika, för de tenderar ge säkerhetsproblem" samt företag som jobbar både mot statliga och privata organisationer kommer snabbare gå till alternativ för det annars ger merkostnad.

Kan inte tänka mig att C++ gänget eller C gänget känner någon oro. I alla fall inte utvecklare. De som möjligen kan känna oro är de som tjänar pengar på att lära ut, prata eller kanske på annat sätt är involverade med att sprida C++. För dem är det viktigt med fler potentiella kunder.
Så länge jag varit programmerare har det kanske gått 5 VB programmerare på varje C++ programmerare eller senare så 5 C# programmerare på varje C++ utvecklare. Antalet personer som skriver C eller C++ har aldrig varit den stora massan.

Möjligen att det ökat en del senaste 5-10 åren när så mycket skall datoriseras.

Skulle det dyka upp något språk som är en värdig konkurrent skulle nog en majoritet av C/C++ utvecklare byta ganska omgående. Jag tror inte de som använder språket gör det för att de älskar språket utan att det är det språket som är bäst lämpat för det man skall göra.
C++ är mitt huvudspråk men skriver mycket javascript och en del python och LUA också.

Min egen "oro" har snarare handlat om att de senaste 10-15 åren så har utveckling handlat mer och mer om deklarativ kod, mycket på grund av utspädning. Att fokusera på att skriva deklarativ kod är enligt mig ett helt annat yrke men kletas samman med programmering.

Skrivet av Yoshman:

Sen måste man titta lite framåt också. Hur många personer under 40 år känner du som använder C eller C++ som primära språk?
Får lite känslan av att en viktig anledning till att Linus Torvalds accepterade Rust i kärnan är för att han har redan gjort observationen att medelåldern på kernel utvecklare har ökat och det är inte i närheten lika stor andel som kan C idag som kunde det på 90/00-talen.

Möljligen, men jag tror många undrar vad Linus strategi varit för jag tror inte det blir ett lyckligt slut om han inte kraftigt förklarar att kod inte skall blandas. Att skriva ett operativsystem är hemmaplan för C, inget annat språk är så lämpat för det som C. C och Rust kan inte diskutera, personer i de olika lägren är för olika. Det är min slutsats efter att ha läst olika konverseationer i snart ett halvår. Vissa forum där det finns personer som gillar Rust, där är det nästan omöjligt för C/C++ att beskriva något om språket innan de hugger. Jag vet massor som är riktigt trötta på det. Linkedin har flera som postat om att Rust måste ta och tagga ner.

Hantera minne är mycket kraftfullt verktyg men det går knappt hitta ställen där det inte finns rust som vips är där och skriker ajabaja.

Skrivet av Yoshman:

Fråga: har du någonsin använt Rust? För en sak som ibland ses som en nackdel med Rust är att det har ett rätt litet standardbibliotek.

Nej men var på vippen att testa. Mitt huvdsakliga problem med rust är att så många skriver message chains, förkortar variabler och har svårt för hungarian notation. Bara en sådan sak som att sätta "m_" medlemsvariabler är svårt att få gehör för.

Det är också vanligt med formaterare när rust, tror en vanlig som används kallas för rustfmt eller något sådant.
Har jag kommit in i någon grupp där de använder formaterare så är det bland det första jag förösker kasta ut. Formaterare är INTE bra att använda sig av. Programmerare måste lära sig skriva kod, enligt mig är programmering mer en konstart än att det är något man kan läsa sig till.

Permalänk
Medlem
Skrivet av Yoshman:

Då det räcker med ett jobb för de flesta verkar våra AI-overlords inte helt tagit över än.

Angående AI så tror jag att jag är tidig på bollen men det är inte svårt att förstå hur mycket detta kommer förändra. För mig känns det som man fått "superkrafter" men det är inte bara jag utan alla andra med.

Självklart är det många som också använder tekniken fel men tror att de snabbt rensas ut.
Och det är självklart inte bara programmering som påverkas av AI, detta kommer förändra hela samhället.

Permalänk
Datavetare
Skrivet av klk:

Kan inte tänka mig att C++ gänget eller C gänget känner någon oro. I alla fall inte utvecklare. De som möjligen kan känna oro är de som tjänar pengar på att lära ut, prata eller kanske på annat sätt är involverade med att sprida C++. För dem är det viktigt med fler potentiella kunder.
Så länge jag varit programmerare har det kanske gått 5 VB programmerare på varje C++ programmerare eller senare så 5 C# programmerare på varje C++ utvecklare. Antalet personer som skriver C eller C++ har aldrig varit den stora massan.

Vad det gäller antal såg jag en rätt målande beskrivning över vad tillväxten vi sett i IT-branschen betyder i form av snittålder och medianålder. Kommer inte ihåg exakta detaljer, men kontentan var ändå att man rätt snabbt hamnade "äldre/jobbat längre" än genomsnittet/medianen p.g.a. det.

C och C++ var majoriteten på 90-talet, men p.g.a. tillväxt och vad som primärt varit populärt bland de som kommit in har C och C++ sedan länge blivit väldigt nischade språk. Vilket absolut inte är problematiskt i sig, de är systemspråk och är därför inte "best-match" för en lång rad saker som utvecklas idag.

De som brinner för C++ och är med och driver utvecklingen verkar definitivt bekymrade kring den salvo som riktats mot språket på senare tid. Det som är i hårkorset är ju precis vad tråden handlar om, statistiken visar att C och C++ är sämst i klassen (bland språk som har någon relevans) när det kommer till säkerhetsproblem men är långt ifrån självklart vad som är bäst väg framåt.

Det har pratats väldigt mycket om Safe-C++ sedan det förslagets lanserades mid 2024
https://www.theregister.com/2024/09/16/safe_c_plusplus/

Men alla är inte säkra på att det är rätt väg framåt. Vissa (t.ex. Bjarne) tycker problemet redan är löst, men här är jag helt eniga med kritikerna mot det påståendet

"Those involved with C++ became defensive. Two years ago, in response to Russinovich's call to dump C/C++, C++ creator Bjarne Stroustrup told The Register, "We can now achieve guaranteed perfect type and memory safety in ISO C++."

Yet that claim was met with some skepticism. Josh Aas, co-founder and executive director of the Internet Security Research Group (ISRG), which oversees a memory safety initiative called Prossimo, last year told The Register that while it's theoretically possible to write memory-safe C++, that's not happening in real-world scenarios because C++ was not designed from the ground up for memory safety."

Förstår också kritiken mot Safe-C++ förslaget. Övergången från "gamla C++", d.v.s. pre-C++11, och "modern C++" är fortfarande långt ifrån klart. Förändringarna Safe-C++ medför i hur man skriver C++ är ännu större än dessa och för att inte paja bakåtkompatibilitet måste man ändå låta Safe-C++ delarna vara opt-in, vilket då får samma problem som vi ser med "modern C++".

Då Safe-C++ rätt mycket är ett nytt språk, varför då ens bry sig och inte bara skriva om allt i t.ex. Rust som nu faktiskt börjar få bevis för att det rätt mycket helt löst just det specifika problemet man ser C och C++ lider mest av?

Skrivet av klk:

Möjligen att det ökat en del senaste 5-10 åren när så mycket skall datoriseras.

Skulle det dyka upp något språk som är en värdig konkurrent skulle nog en majoritet av C/C++ utvecklare byta ganska omgående. Jag tror inte de som använder språket gör det för att de älskar språket utan att det är det språket som är bäst lämpat för det man skall göra.
C++ är mitt huvudspråk men skriver mycket javascript och en del python och LUA också.

Fast du är ju själv redan ett typexempel på varför det inte är så i praktiken. Då då inte har testat och framförallt inte använt Rust i produktionskod kan du faktiskt inte avgöra om det kanske vore bättre att använda det i ett kommande projekt.

Och det är nog normalfallet. Många fastnar i ett eller några få språk/ramverk under större delen av sin karriär. Stora förändringar behöver komma "underifrån", men där finns barriärer i form av att de saknar erfarenhet.

I denna intervju med Herb Sutter (ordförande ISO-C++) och Steve Klabnik (som jobbat väldigt aktivt med Rust utveckling och skrivit flera böcker om Rust-programmering)
https://herbsutter.com/2024/10/23/podcast-interview-rust-and-...

Uttrycker även de en viss oro för "systemspråk" i form av att dessa i alla mindre grad lärs ut på skolor och universitet och därför får en extra tröskel när folk börjar jobba.

Värt att notera att båda dessa ändå säger att även som systemprogrammerare (i praktiken C, C++, Rust och Zig när det når en stabil release) bör man lära sig andra språk då det kommer ge en andra perspektiv som i många fall kommer leda till att man blir bättre programmerare i sitt "primära språkval". Så visst finns det ett visst mått av "tänka som en C-programmerare", men det är inte nödvändigtvis bättre/sämre än andra sätt.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Vad det gäller antal såg jag en rätt målande beskrivning över vad tillväxten vi sett i IT-branschen betyder i form av snittålder och medianålder. Kommer inte ihåg exakta detaljer, men kontentan var ändå att man rätt snabbt hamnade "äldre/jobbat längre" än genomsnittet/medianen p.g.a. det.

Det är många "nya" programmerare idag och där är det nästan inga C++ men det har mer och göra med att behovet i andra områden, exempelvis web utveckling mm. Där har det varit efterfrågan. Och standarden på programmerare är mycket lägre idag än förr.
Skrivs C/C++ kod kan den användas länge. Ta världens kändaste databas, sqlite. C kod där det mesta skrevs för många många år sedan. Det finns inte anledning att skriva en ny sqlite. Även om någon skulle kunna göra det på kanske ett halvår så krävs det så mycket tid för att marknadsföra och samtidigt tävla mot en databas som finns överallt.

Jag har jobbat en hel del med att bädda in LUA i C++ kod. Tills för c.a. 3 år sedan fanns en hel hög med wrappers, alltså kod som förenklade arbetet med att koppla lua till C++ kod. Men som kom sol2. Nu använder alla det och den slaktade i princip resten av biblioteken. Det kommer dröja innan någon skriver en ny wrapper till LUA.

C++ är för effektivt, därför kommer det aldrig bli så många som jobbar i det. Omöjligt att tävla mot skickliga C++ utvecklare.

Det finns självklart en hel massa C++ programmerare som borde sitta i andra språk för det är inget för nybörjare. De här kan säkert orsaka ett och annat problem sett till minnet.
Är man van så är det inte ett problem

Skrivet av Yoshman:

Fast du är ju själv redan ett typexempel på varför det inte är så i praktiken. Då då inte har testat och framförallt inte använt Rust i produktionskod kan du faktiskt inte avgöra om det kanske vore bättre att använda det i ett kommande projekt.

Det är inte bättre. Enda anledningen till att jag tänkte testa är att andra utvecklare i Rust är så entusiastiska. Samtidigt är koden de skriver inte speciellt bra om det inte handlar om deklarativ kod. Lite som när man ser yngre spelprogrammerare, de är också helt värdelösa i arkitektur och skriver illa. Man vill få fram sitt spel och är inte jätteintresserad av koden som skrivs.
Jag är själv typiskt entusiast programmerare (hobby och yrke). Det skiljer exempelvis gruppen mot C# och Java. De som skriver kod i dessa språk accepterar i princip vad som helst, det är bara ett yrke. Utvecklare i Rust har mycket mer driv.

Permalänk
Medlem

Diskussionen om minnessäkerhet inom programmering har intensifierats, särskilt med fokus på språk som C och C++. Organisationer som Microsoft och USA:s regering har rekommenderat att undvika dessa språk i nya projekt på grund av deras inneboende risker för minnesrelaterade sårbarheter. Samtidigt hävdar förespråkare för C++, inklusive språkets skapare Bjarne Stroustrup, att det är möjligt att skriva minnessäker kod i C++ genom att använda rätt tekniker och verktyg.

Utvecklingen av minnessäkerhet i C++ pågår aktivt. Bjarne Stroustrup har betonat vikten av att implementera riktlinjer och verktyg för att förbättra språkets säkerhet. Ett exempel är AddressSanitizer (ASAN), ett verktyg som hjälper utvecklare att identifiera och åtgärda minnessäkerhetsfel under testning. Microsoft har integrerat ASAN i Visual Studio, vilket underlättar för utvecklare att upptäcka minnesfel utan att programmet avslutas vid första felet. https://learn.microsoft.com/sv-se/cpp/sanitizers/asan-continu...

Stroustrup har också introducerat konceptet "Guideline Support Library" (GSL) och profiler för att upprätthålla resurs- och typsäkerhet. Dessa verktyg syftar till att hjälpa utvecklare att följa bästa praxis och undvika vanliga minnesrelaterade misstag. Trots dessa framsteg är dessa profiler fortfarande under utveckling och inte fullt implementerade. https://developers.slashdot.org/story/25/02/09/0636247/c-on-s...

Att förvandla C++ till ett helt minnessäkert språk är en komplex och pågående process. Det kräver inte bara nya verktyg och bibliotek, utan också förändringar i utvecklarnas arbetsflöden och kodningsstandarder. Stroustrup har påpekat att säkerhet inte enbart handlar om minnessäkerhet, utan också innefattar andra aspekter som kan påverka programvarans robusthet.

För närvarande finns det ingen specifik tidsram för när C++ kan betraktas som fullt minnessäkert. Implementeringen av säkerhetsprofiler och verktyg pågår, men det är osannolikt att en enkel kompilatorflagga kommer att vara tillräcklig för att säkerställa fullständig minnessäkerhet. Istället krävs en kombination av verktyg, riktlinjer och utbildning för utvecklare för att minimera minnesrelaterade sårbarheter i C++-projekt. https://www.reddit.com/r/computerscience/comments/10yd9g1/can...