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

Permalänk
Medlem
Skrivet av root:

Tycker du detta har något med "C++ och dess framtid att programmera minnessäkert - Hur går utvecklingen?" att göra?

Det har väldigt mycket med minnessäkerhet och göra. Tidigare i tråden kom vi in lite på data orienterad design, fler borde gräva djupare i det. Trots att du får lov att göra vad du vill med minnet kan du ändå bygga säkrare program än de språk som inte tillåter utvecklare att göra vad de vill.

Programmering är fortfarande ett hantverk, det tar tid att förstå hantverket

Vem som helst idag kan med alla hjälpmedel och bra information på nätet lära sig skriva lite kod på ganska kort tid. Men det är inte samma sak som att man kan skriva stora program med kod som måste underhållas i kanske mer än 10 år

Permalänk
Medlem
Skrivet av klk:

Det har väldigt mycket med minnessäkerhet och göra. Tidigare i tråden kom vi in lite på data orienterad design, fler borde gräva djupare i det. Trots att du får lov att göra vad du vill med minnet kan du ändå bygga säkrare program än de språk som inte tillåter utvecklare att göra vad de vill.

Programmering är fortfarande ett hantverk, det tar tid att förstå hantverket

Vem som helst idag kan med alla hjälpmedel och bra information på nätet lära sig skriva lite kod på ganska kort tid. Men det är inte samma sak som att man kan skriva stora program med kod som måste underhållas i kanske mer än 10 år

Det som jag tror @root syftade på i ditt inlägg handlade om kommentarer och method-chaining och det du pratar om nu är kodkvalitet men inget av detta har med minnessäkerhet att göra...

Permalänk
Medlem
Skrivet av klk:

Tidigare i tråden kom vi in lite på data orienterad design..

Du kom in på det menar du.

Permalänk
Skrivet av Yoshman:

Om man tar en sample-size på 1 kan man "bevisa" exakt vad som helst i stort sätt var som helst... Enda potentiellt relevanta Zed tillför är att det (vad jag får fram när jag läser om projektet) visar att en sak Rust kan användas som är, likt bl.a. C och C++, högpresterande applikationer. Aldrig använt Zed, men det som lyfts fram är att det är en text-redigerare som håller väldigt hög prestanda även när fil(erna) som redigeras är gigantiska.

Vill du se exempel på idiomatisk Rust som också visar hur man dels kan skriva inom ramen för, just nu, bästa tänkbara skydd mot minnes-osäker kod kan du kika på t.ex.

https://github.com/tkaitchuck/aHash - Hashset/map som är API kompatibel med den i std:rust, fast med klart bättre prestanda

https://github.com/serde-rs/serde - väldigt bra exempel på hur "traits" kan användas väldigt ortogonalt mot andra saker ett bibliotek gör där serde "bara" tillför möjligheten att serialisera/deserialisera dina datastrukturer till JSON, YAML, CSV, Pickle, eller vad det nu må vara. Det på ett högt effektivt och minnes-säkert sätt

https://github.com/rayon-rs/rayon - min favorit då det man uppnår här är på flera sätt helt makalöst, fångar data-race compile-time. Finns få saker som är svårare att få rätt i modern programmering än just concurrency-problem.

Alla dessa tre är saker som inte är del av standardbiblioteket, men som alla är väldigt populära "crates" som alla har 100-tals miljoner nedladdningar. De är alla också utvecklare med idiomatisk Rust.

Ett uttalande som "tar betydligt längre tid att utveckla i X jämfört med Y" saknar väldigt mycket kritiskt kontext. Klart det är sant om några som primärt jobbat med X testar att göra något av liknande komplexitet i Y, innan de lärt sig Y kommer det vara svårare/långsammare.

Sen kommer "problemet" som diskutera här från observationen att C++ (och även C) står för en förkrossande stor andel av en specifik klass av buggar. Tror det tar rätt mycket längre tid att få C++ till samma kvalité på den punkten som motsvarande Rust, om det ens är praktiskt möjligt (vilket är det Bjarne et.al. vill visa att det är, för annars kommer C++ bli portat från att fler områden).

Skulle i.o.f.s. hävda att Rust har en liten särställning i raden av "språk som ska döda C++"...

Det är sant att lite väl många sagt något likt ovan. Ingen har så här långt "dödat" C++. Givet hur mycket som redan är skrivet i C++ och kommer fortsättas användas under överskådlig tid lär inget döda C++ (inget har ju lyckas döda Cobol så här långt...).

Man kan se det från en liten annan vinkel: det är rätt många områden där C++ skulle varit ett självklart val för de flesta under 90-talet som idag i praktiken helt är ersatt av Java och C#. Så för en lång rad områden "dödade" Java/C# C++, men samtidigt finns områden där Java/C# inte var en bättre lösning.

Samma med Go. Google skapade Go specifikt för att ersätta fall där de vid tidpunkten använde C++, men där de såg stora skalbarhetsproblem med C++ både p.g.a. av dess extrema komplexitet (inte positivt när man har väldigt stora och många team) samt den enorma storleken på kodbaser (kompileringstiderna var direkt horribla, mem:et är ju att första versionen av Go skrevs medan de 3 skaparna väntade på att deras C++ projekt skulle kompilera klart).

Go har sedan haft betydligt inflöde från Python, C# och Java än från C++. Nischen detta språk fyller är microservices, molntjänster och C++ har man nog primärt "ersatt" (i.e. är nog det vanligare valet idag) som språk för CLI-verktyg.

Det unika med Rust är att det nog är första språk som har ett nära 100 % överlapp med C++ i att vara topp-valet för de nischer där C++ idag fortfarande är topp-valet. Tror det är något gör att vissa inom C++-världen ser en större rivalitet mellan dessa två språk än vad man sett innan.

Men inte ens Rust lär "döda" C++. Däremot kan det ju bli en rätt snabb minskning av C++-användning om så viktiga institutioner som USA och EU mer eller mindre säger: ni får ha väldigt bra på fötterna kring varför C++ alls bör användas om organisationer vi direkt hanterar är kunden. Är väl just den delen Bjarnes "call to action" riktar sig mot.

Jag tror att vi kommer få se en mindre narcissistisk attityd från dom som bestämmer kring standarden av C++.
Ska C++ utvecklas i linje med övriga språk. Då måste C++ tänka om lite.

Jag har absolut inget emot om det skulle finnas en flagga man kan aktivera i kompilatorn och kompilatorn granskar koden efter misstänkta osäkerheter. Likt som Rust. Jag vet att denna idé verkar skrotas av dom som utvecklar C++ standarden. Men vadå? Dom kanske är okunniga och har fel?

Hur svårt ska det vara liksom? Vi landar på månen och besöker Mars och Pluto med rymdsonder...men göra C++ minnessäkert är en omöjlighet?

Jag tror som sagt att allt handlar bara om viljan. Viljan att göra ändringar.

Permalänk
Medlem
Skrivet av Xeonist:

Du kom in på det menar du.

Ursäkta, ja, jag kom in på det men poängen var att visa en bra teknik för att skriva säker kod. Tråden handlar ju om säkerhet

Permalänk
Medlem
Skrivet av klk:

Ursäkta, ja, jag kom in på det men poängen var att visa en bra teknik för att skriva säker kod. Tråden handlar ju om säkerhet

Du förstår att minnessäkerhet är en språk-feature och helt orelaterat till egna processer/metoder?
Lite som att hävda att din bil är full self-driving eftersom du håller i ratten ...

Permalänk
Medlem

Jag arbetar professionellt med C++ och Rust kodbaser sedan runt 7 år. Specifikt en [rutt-planerare](https://github.com/valhalla/valhalla) där det krävs absurt mycket rå pekararitmetik för att snabbt kunna expandera grafen över vägnätverket.

Vi har också börjat skriva nya projekt i Rust. Precis som Amazon, Google och Microsoft anser jag att man inte ska starta nya projekt i C++. Punkt. Vår effektivitet i Rust projekten är så mycket högre, då kompilatorn fångar väldigt mycket fler problem och den generella utvecklarmiljön med cargo och annat funkar så mycket bättre. C++ koden är generellt en lång serie av Undefined behaviour buggar, segfaults och andra Heisenbugs.

Vi har till och med ett stort projekt där vi bygger C++ ruttplaneraren som ett C lib och laddar in till ett Rust program med FFI för att kunna återanvända delar av C++ koden i vårt Rust program. Detta tror jag kommer bli mer och mer vanligt. Att man tar äldre kodbaser som inte kan migreras till andra språk speciellt enkelt och börjar bygga nya system runt dem i mer moderna språk.

Visa signatur

Archlinux, Sway och Rust, vad mer behövs?

Permalänk
Medlem
Skrivet av Gräs-Mannen:

Vi har också börjat skriva nya projekt i Rust.

Fråga, vad har ni för regler sett till att koden skall kommenteras eller skriver ni mest domänspecifik kod?

Permalänk
Medlem
Skrivet av orp:

Du förstår att minnessäkerhet är en språk-feature och helt orelaterat till egna processer/metoder?

Menar du att man kan trolla bort minnesproblematik med en språk-feature om man skall skriva parallelliserad kod?

Vet du varför så många servrar är stateless? Att skriva en statless servermjukvara (mjukvara som skall hantera många användare) är inte gratis, den blir extremt mycket mer komplicerad eftersom state måste följa med användaren eller sökas.
stateless är de flesta för att det är för svårt att hantera minne i parallelliserad kod.
Klarar utvecklare att skriva kod som hanterar state blir allt så mycket enklare, tror inte jag överdriver om jag säger att allt annat blir mer än 10 gånger enklare.

Orsaken är att det är så svårt att skriva parallelliserad kod, det löses inte med en språk-feature

Permalänk
Datavetare
Skrivet av heretic16:

Jag tror att vi kommer få se en mindre narcissistisk attityd från dom som bestämmer kring standarden av C++.
Ska C++ utvecklas i linje med övriga språk. Då måste C++ tänka om lite.

Jag har absolut inget emot om det skulle finnas en flagga man kan aktivera i kompilatorn och kompilatorn granskar koden efter misstänkta osäkerheter. Likt som Rust. Jag vet att denna idé verkar skrotas av dom som utvecklar C++ standarden. Men vadå? Dom kanske är okunniga och har fel?

Hur svårt ska det vara liksom? Vi landar på månen och besöker Mars och Pluto med rymdsonder...men göra C++ minnessäkert är en omöjlighet?

Jag tror som sagt att allt handlar bara om viljan. Viljan att göra ändringar.

Att göra dagens version av C++ minnes-säkert enbart via kompilatorn är bevisat omöjligt. Det i sig är inte konstigare än att vi kan säga: har du ett underbestämt ekvationssystem kan du inte få fram en entydig lösning.

Implikationen av ovan är tyvärr också att det inte finns något sätt att lösa den detaljen med mindre än att göra icke-bakåtkompatibla förändringar. I det läget är det väl rätt naturligt att det inte är självklart hur vägen framåt ser ut.

Möjlig kritik mot ISO-kommittén är att man eventuellt hamnar i att inget görs till C++26 kring detta. Samtidigt måste man också ha med sig att det som en gång hamnat i standarden är väldigt svårt att få bort i praktiken, så ändå rätt att inte bara slänga in första bästa förslag.

Men samtidigt är det lite osäkert hur bråttom det är. Om "under attack" mer bör likas vid en krigssituation bör det hanteras annorlunda, i det läget är icke-beslut det sämsta man kan göra. Vilket beslut som helst, bara det görs ut utförs, är bättre.

Oavsett vad man gör kommer C++ används under lång tid framöver. Huvudfrågan är kanske vad som har störst värde för de som idag använder C++: att försöka utveckla språket så det framåt fortsätter vara relevant för nya utmaningar, eller fokusera på att det som redan är skrivet får en så bra/stabil miljö som möjligt och acceptera en tynande tillvaro i green-field projekt. Båda har för- och nackdelar.

Kan tycka att det senare inte är så dåligt alternativ. Det finns ju redan fullgoda alternativ framåt.

Finns väl egentligen kanske 3 huvudgrupper av C++ användare
* de som följer med utvecklingen och idag helt anammat "modern C++"
* de som till största del stannat på C++98 (och lite är de som Bjarne verkar anse vara "problematiska")
* de som aldrig ens kommit ISO C++, utan använder C++ som ett "bättre C"

Inser att jag själv nog främst nästan bara kommer använda C++ i den sista kategorin framöver. Är där man hittar användning i mikrokontrollers och liknande. Tycker C++-användningen här är ett steg upp från "ren" C, men samtidigt är det inte mycket mer än "C with classes" man jobbar med då.

Visa signatur

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

Permalänk
Datavetare
Skrivet av klk:

Menar du att man kan trolla bort minnesproblematik med en språk-feature om man skall skriva parallelliserad kod?

Vet du varför så många servrar är stateless? Att skriva en statless servermjukvara (mjukvara som skall hantera många användare) är inte gratis, den blir extremt mycket mer komplicerad eftersom state måste följa med användaren eller sökas.
Klarar utvecklare att skriva kod som hanterar state blir allt så mycket enklare, tror inte jag överdriver om jag säger att allt annat blir mer än 10 gånger enklare.

Orsaken är att det är så svårt att skriva parallelliserad kod, det löses inte med en språk-feature

Rust Rayon har visat att det sista faktiskt kan lösas ur aspekten minnessäkerhet. Däremot är det fortfarande långt ifrån trivialt då man måste förstå domänen i detalj och explicit uttrycka den möjliga parallellismen.

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:

Rust Rayon har visat att det sista faktiskt kan lösas ur aspekten minnessäkerhet. Däremot är det fortfarande långt ifrån trivialt då man måste förstå domänen i detalj och explicit uttrycka den möjliga parallellismen.

Poängen med att skriva parallelliserad kod är att det skall skala, det är svårt. Vad jag sett av Rust ser det ut att vara svårare än C++ eftersom man hela tiden måste bråka med rusts interna regelverk vad man kan och inte kan göra.

Permalänk
Medlem
Skrivet av klk:

Poängen med att skriva parallelliserad kod är att det skall skala, det är svårt. Vad jag sett av Rust ser det ut att vara svårare än C++ eftersom man hela tiden måste bråka med rusts interna regelverk vad man kan och inte kan göra.

Nej, detta är helt fel i min erfarenhet. Jag har skrivit flertalet multithreaded och multiprocessed program i både C++ och Rust. Rust är så mycket lättare att få effektivt och felfritt.

Det är sant att det tar ett tag att lära sig Rust, beroende på vilken bakgrund man har. Men om du tar dig över den initiala puckeln är jag förvånad om du ärligt säger att C++ är enklare.

Rust existerar ju i princip för att Mozilla inte lyckades skriva en flertrådad CSS renderare i C++.

Visa signatur

Archlinux, Sway och Rust, vad mer behövs?

Permalänk
Medlem
Skrivet av Gräs-Mannen:

Nej, detta är helt fel i min erfarenhet. Jag har skrivit flertalet multithreaded och multiprocessed program i både C++ och Rust. Rust är så mycket lättare att få effektivt och felfritt.

Det är sant att det tar ett tag att lära sig Rust, beroende på vilken bakgrund man har. Men om du tar dig över den initiala puckeln är jag förvånad om du ärligt säger att C++ är enklare.

Har du exempel på sådan kod för jag hittar den inte. Skall söka mer strax och även det @Yoshman tipsade om men det jag sett från rust tills nu är inte bra.

Permalänk
Datavetare
Skrivet av klk:

Poängen med att skriva parallelliserad kod är att det skall skala, det är svårt. Vad jag sett av Rust ser det ut att vara svårare än C++ eftersom man hela tiden måste bråka med rusts interna regelverk vad man kan och inte kan göra.

Om vi håller oss till delmängden: utnyttja parallellim i algoritmer som är "compute bound" skulle jag säga att det är klart enklare i Rust jämfört med i C++. Det trots att jag under 2010-talet jobbade rätt mycket med multicore optimeringar i C och C++, har ett par patent på området.

Skrivet av Gräs-Mannen:

Nej, detta är helt fel i min erfarenhet. Jag har skrivit flertalet multithreaded och multiprocessed program i både C++ och Rust. Rust är så mycket lättare att få effektivt och felfritt.

Det är sant att det tar ett tag att lära sig Rust, beroende på vilken bakgrund man har. Men om du tar dig över den initiala puckeln är jag förvånad om du ärligt säger att C++ är enklare.

Rust existerar ju i princip för att Mozilla inte lyckades skriva en flertrådad CSS renderare i C++.

Från Mozillas kontor innan de hade Rust. Har för mig att personen på bilden är ca 2m lång.

Visa signatur

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

Permalänk
Skrivet av Gräs-Mannen:

Jag arbetar professionellt med C++ och Rust kodbaser sedan runt 7 år. Specifikt en [rutt-planerare](https://github.com/valhalla/valhalla) där det krävs absurt mycket rå pekararitmetik för att snabbt kunna expandera grafen över vägnätverket.

Vi har också börjat skriva nya projekt i Rust. Precis som Amazon, Google och Microsoft anser jag att man inte ska starta nya projekt i C++. Punkt. Vår effektivitet i Rust projekten är så mycket högre, då kompilatorn fångar väldigt mycket fler problem och den generella utvecklarmiljön med cargo och annat funkar så mycket bättre. C++ koden är generellt en lång serie av Undefined behaviour buggar, segfaults och andra Heisenbugs.

Vi har till och med ett stort projekt där vi bygger C++ ruttplaneraren som ett C lib och laddar in till ett Rust program med FFI för att kunna återanvända delar av C++ koden i vårt Rust program. Detta tror jag kommer bli mer och mer vanligt. Att man tar äldre kodbaser som inte kan migreras till andra språk speciellt enkelt och börjar bygga nya system runt dem i mer moderna språk.

Varför bygger inte Microsoft, GCC med flera en C++ kompilator som kan fånga in flera problem? Låter som att Rust-kompilatorn är nämligen bättre än C++-kompilatorn på hitta fel. Då borde man göra detta i C++ också.

Permalänk
Skrivet av Yoshman:

Att göra dagens version av C++ minnes-säkert enbart via kompilatorn är bevisat omöjligt. Det i sig är inte konstigare än att vi kan säga: har du ett underbestämt ekvationssystem kan du inte få fram en entydig lösning.

Implikationen av ovan är tyvärr också att det inte finns något sätt att lösa den detaljen med mindre än att göra icke-bakåtkompatibla förändringar. I det läget är det väl rätt naturligt att det inte är självklart hur vägen framåt ser ut.

Möjlig kritik mot ISO-kommittén är att man eventuellt hamnar i att inget görs till C++26 kring detta. Samtidigt måste man också ha med sig att det som en gång hamnat i standarden är väldigt svårt att få bort i praktiken, så ändå rätt att inte bara slänga in första bästa förslag.

Men samtidigt är det lite osäkert hur bråttom det är. Om "under attack" mer bör likas vid en krigssituation bör det hanteras annorlunda, i det läget är icke-beslut det sämsta man kan göra. Vilket beslut som helst, bara det görs ut utförs, är bättre.

Oavsett vad man gör kommer C++ används under lång tid framöver. Huvudfrågan är kanske vad som har störst värde för de som idag använder C++: att försöka utveckla språket så det framåt fortsätter vara relevant för nya utmaningar, eller fokusera på att det som redan är skrivet får en så bra/stabil miljö som möjligt och acceptera en tynande tillvaro i green-field projekt. Båda har för- och nackdelar.

Kan tycka att det senare inte är så dåligt alternativ. Det finns ju redan fullgoda alternativ framåt.

Finns väl egentligen kanske 3 huvudgrupper av C++ användare
* de som följer med utvecklingen och idag helt anammat "modern C++"
* de som till största del stannat på C++98 (och lite är de som Bjarne verkar anse vara "problematiska")
* de som aldrig ens kommit ISO C++, utan använder C++ som ett "bättre C"

Inser att jag själv nog främst nästan bara kommer använda C++ i den sista kategorin framöver. Är där man hittar användning i mikrokontrollers och liknande. Tycker C++-användningen här är ett steg upp från "ren" C, men samtidigt är det inte mycket mer än "C with classes" man jobbar med då.

Du menar att trots att C++ har moderna nya standarder (som har bättre minnessäkerhet), så fortsätter ändå vanliga C++ programmerare att skriva med äldre standard?

Permalänk
Medlem
Skrivet av heretic16:

Varför bygger inte Microsoft, GCC med flera en C++ kompilator som kan fånga in flera problem? Låter som att Rust-kompilatorn är nämligen bättre än C++-kompilatorn på hitta fel. Då borde man göra detta i C++ också.

C++ som språk är underdefinierat. Du kan inte fixa grundläggande problem i efterhand i en kompilator. Det är därför du har en stor delmängd av C++ utvecklare som helt enkelt inte tror på dessa uttalanden från Bjarne.

C++ kommer inte försvinna. Det finns en helt ofantligt stor mängd kod skriven i C++, och mängden C++ som är gammaldags, ibland mer som C än C++ är också stor. Denna kod kommer behöva folk som kan ändra, laga och modifiera under lång tid framöver.

Men när du har valet att starta ett nytt projekt idag, då finns det bättre verktyg, vilket fler och fler organisationer upptäcker.

> Lars Bergstrom (Google Director of Engineering): "Rust teams are twice as productive as teams using C++."
https://www.theregister.com/2024/03/31/rust_google_chttps://c...

> On Monday, Russinovich urged the technology industry to leave C/C++ behind. "Speaking of languages, it's time to halt starting any new projects in C/C++ and use Rust for those scenarios where a non-[garbage collected] language is required," he said. "For the sake of security and reliability, the industry should declare those languages as deprecated."

Microsoft azure CTO https://www.theregister.com/2022/09/20/rust_microsoft_c/

Till och med federala regeringen i USA rekommenderar att man slutar med memory unsafe languages som C++
https://www.cisa.gov/resources-tools/resources/product-securi...

Och för alla som pratar om C++ inom Embedded, till och med Volvo har börjat skeppa Rust i en av deras ECUs i deras bilar
https://corrode.dev/podcast/s03e08-volvo/

Visa signatur

Archlinux, Sway och Rust, vad mer behövs?

Permalänk
Medlem
Skrivet av Yoshman:

Om vi håller oss till delmängden: utnyttja parallellim i algoritmer som är "compute bound" skulle jag säga att det är klart enklare i Rust jämfört med i C++. Det trots att jag under 2010-talet jobbade rätt mycket med multicore optimeringar i C och C++, har ett par patent på området.

Det kan så vara, att det är enklare i algoritmer men tror inte heller det är speciellt svårt i andra språk

Om jag beskriver en normal servermjukvara som skall hantera exempelvis frontend för massa användare-

  • Säkerhet

  • Databasen (här har databaser själva löst problemet, finns gott om tekniker för att skala databaskopplingar)

  • Cacha data

  • Antal endpoints

  • Specialfunktioner (här är allt som är special för specifikt system)

Om en server är stateless måste i princip alla ovanstående delar lösas utanför servern förutom endpoints (serverns körbara metoder ). Det blir snabbt en stor röra om man går utanför databas och säkehet då just databashantering och säkerhet är så vanligt så där brukar det finnas färdiga ramverk och följa. Så fort projekt går utanför ramverken är risken extremt stor för kollaps, utvecklare är inte tränade i att skriva sådant samt att ramverken i sig blir en börda (teknisk skuld).

En server som kan hantera state kan hantera säkerhet internt, databasen körs likartat med stateless servrar men saker som cache vilket kan minska ner databasanrop drastiskt, antal endpoints kan minskas och alla specialare blir så mycket enklare.
Men varje del måste hanteras så att det kan skala och vad det oftast då handlar om är att man minimerar logik för att skriva data som flera har tillgång till. All sådan kod är extremt optimerad för att undvika låsningar

Permalänk
Medlem
Skrivet av klk:

Menar du att man kan trolla bort minnesproblematik med en språk-feature om man skall skriva parallelliserad kod?

Delvis men vi pratar om minnessäkerhet och inte generell minnesproblematik.

Permalänk
Medlem
Skrivet av orp:

Delvis men vi pratar om minnessäkerhet och inte generell minnesproblematik.

C++ åker på kritik för deras säkerhetsbrister, jag tror inte bristerna ligger i enklare synkroniserade lösningar. Det är inte svårt och få till oavsett språk.
Isåfall blir det som att skjuta mygg med kanoner.

Permalänk
Skrivet av Gräs-Mannen:

C++ som språk är underdefinierat. Du kan inte fixa grundläggande problem i efterhand i en kompilator. Det är därför du har en stor delmängd av C++ utvecklare som helt enkelt inte tror på dessa uttalanden från Bjarne.

Jo. Allt går. Bara sätta lite press på C++ ISO kommittén så fixar sig allt.
Detta fick jag lära mig av en chef: "Vill man få något gjort, då lägger man press på dom under och se till att dom får jobba extra hårt utan att säga något emot. Veckan efter så är problemet löst med goda marginaler".

Så mitt förslag är att ISO kommittén för C++ får väll jobba hårdare och sluta ha möten efter möten efter möten. Vi har landat på Månen. Klart mänskligheten kan fixa C++ hur enkelt som helst.

Permalänk
Medlem
Skrivet av Gräs-Mannen:

> Lars Bergstrom (Google Director of Engineering): "Rust teams are twice as productive as teams using C++."
https://www.theregister.com/2024/03/31/rust_google_chttps://c...

> On Monday, Russinovich urged the technology industry to leave C/C++ behind. "Speaking of languages, it's time to halt starting any new projects in C/C++ and use Rust for those scenarios where a non-[garbage collected] language is required," he said. "For the sake of security and reliability, the industry should declare those languages as deprecated."

Hmmm, undrar hur många gånger jag varit med om samma retorik.

Minns när VB (visual basic) var så poppis (det första så kallade RAD verktyget). Att skriva windows program i C/C++ var ju gigantiskt svårt medan de i VB kunde dra och släppa in saker grafiskt utformade miljöer medan koden genererades. De var otroligt produktiva i en månad, sedan tog allt längre och längre tid.

Java hade samma retorik, allt blev så mycket enklare. Gick fort i början tills efter ett tag när hastigheten minskade och minskade drastiskt.

Micorsoft har släppt ett antal verktyg för att generera applikationer under årens lopp, nästan alla har pensionerats

Det kommer bli samma resultat nu, skall något skala och leva länge måste man förstå och bygga en stabil grund.

Skrivet av Gräs-Mannen:

Och för alla som pratar om C++ inom Embedded, till och med Volvo har börjat skeppa Rust i en av deras ECUs i deras bilar
https://corrode.dev/podcast/s03e08-volvo/

Stämmer inte, volvos problem ligger i att det inte är ett mjukvaruföretag, de kan bygga bilar. Alla företag som måste ställa om sitter på en hög med människor med höga löner som inte vill bli av med jobbet. Och de kan inte lära nytt. En mycket svår resa

Volvo måste lära om, det löser de inte med rust (tvärtom)
När så många människor är oroliga för sina jobb blir de rädda för att göra fel och vågar inte göra något alls eller så får fel personer för mycket att säga till om. Finns en del som sett hur Volvo utvecklar och vad jag vet finns det gott om "intressanta" historier

Permalänk
Skrivet av klk:

Hmmm, undrar hur många gånger jag varit med om samma retorik.

Minns när VB (visual basic) var så poppis (det första så kallade RAD verktyget). Att skriva windows program i C/C++ var ju gigantiskt svårt medan de i VB kunde dra och släppa in saker grafiskt utformade miljöer medan koden genererades. De var otroligt produktiva i en månad, men det sedan tog allt längre och längre tid.

Java hade samma retorik, allt blev så mycket enklare. Gick fort i början tills efter ett tag när hastigheten minskade och minskade drastiskt.

Micorsoft har släppt ett antal verktyg för att generera applikationer under årens lopp, nästan alla har pensionerats

Det kommer bli samma resultat nu, skall något skala och leva länge måste man förstå och bygga en stabil grund.

Stämmer inte, volvos problem ligger i att det inte är ett mjukvaruföretag, de kan bygga bilar. Alla företag som måste ställa om sitter på en hög med människor med höga löner som inte vill bli av med jobbet. Och de kan inte lära nytt. En mycket svår resa

Volvo måste lära om, det löser de inte med rust (tvärtom)
När så många människor är oroliga för sina jobb blir de rädda för att göra fel och vågar inte göra något alls eller så får fel personer för mycket att säga till om. Finns en del som sett hur Volvo utvecklar och vad jag vet finns det gott om "intressanta" historier

Det du beskriver är trender.

Rust är en trend. Efter denna trend har fått sin smekmånad avslutad så kommer Zig att komma in i rampljuset. Efter Zigs smekmånad är över så är Carbon nästa på tur in. Carbon är typ som att kombinera Rust + Zig + C/C++ i ett språk, samt att Carbon kan använda C och C++ filer.

Men som sagt så är det bara trender vi ser. Det är dock inga dåliga trender som vi ska ignorera. Vi ska lyssna på vad alla har att säga.

- Rust
- Zig
- Carbon
- Någon fler på kö?

Permalänk
Medlem
Skrivet av heretic16:

Det du beskriver är trender.

Rust är en trend. Efter denna trend har fått sin smekmånad avslutad så kommer Zig att komma in i rampljuset. Efter Zigs smekmånad är över så är Carbon nästa på tur in. Carbon är typ som att kombinera Rust + Zig + C/C++ i ett språk, samt att Carbon kan använda C och C++ filer.

Men som sagt så är det bara trender vi ser. Det är dock inga dåliga trender som vi ska ignorera. Vi ska lyssna på vad alla har att säga.

- Rust
- Zig
- Carbon
- Någon fler på kö?

Håller med och jag menar inte att det är dåligt för det är bra med konkurrens.

Permalänk
Medlem
Skrivet av klk:

C++ åker på kritik för deras säkerhetsbrister, jag tror inte bristerna ligger i enklare synkroniserade lösningar. Det är inte svårt och få till oavsett språk.
Isåfall blir det som att skjuta mygg med kanoner.

Nu känns det som du svarat på något helt annat...

Minnessäkerhet handlar ju om att få bort problem som buffer overflows och dangling pointers. Sådana problem kan ju existera i alla implementationer oavsett komplexitet och det vi diskuterar är ju lösningsförslag som presenterats som profiles och safe-c++. Det faktumet att problemet inte redan är löst borde väl tolkas som att det inte är helt trivialt att lösa ...

Permalänk
Medlem
Skrivet av heretic16:

Det du beskriver är trender.

Rust är en trend. Efter denna trend har fått sin smekmånad avslutad så kommer Zig att komma in i rampljuset. Efter Zigs smekmånad är över så är Carbon nästa på tur in. Carbon är typ som att kombinera Rust + Zig + C/C++ i ett språk, samt att Carbon kan använda C och C++ filer.

Men som sagt så är det bara trender vi ser. Det är dock inga dåliga trender som vi ska ignorera. Vi ska lyssna på vad alla har att säga.

- Rust
- Zig
- Carbon
- Någon fler på kö?

Som jag varit inne på tidigare, skriv i C++ om ni vill det. Diskussionen är ju om C++ anses vara minnessäkert och i dagsläget är svaret, nej.

Jag har sett en ökad efterfrågan på kod som är skriven i Rust och Go. Samt att jag slår flera flugor i en smäll genom Rust eftersom jag nu har ett andra språk som jag kan skriva drivare i (till Linux).

Permalänk
Medlem
Skrivet av orp:

Nu känns det som du svarat på något helt annat...

Minnessäkerhet handlar ju om att få bort problem som buffer overflows och dangling pointers. Sådana problem kan ju existera i alla implementationer oavsett komplexitet och det vi diskuterar är ju lösningsförslag som presenterats som profiles och safe-c++. Det faktumet att problemet inte redan är löst borde väl tolkas som att det inte är helt trivialt att lösa ...

Är det inte just detta som "nya" språk fokuserar på, att de löser problemet genom att förhindra den typen av kod?

Permalänk
Datavetare
Skrivet av heretic16:

Du menar att trots att C++ har moderna nya standarder (som har bättre minnessäkerhet), så fortsätter ändå vanliga C++ programmerare att skriva med äldre standard?

Finns absolut C++ programmerare som aldrig riktigt anammat "modern C++" (C++11 och framåt). Och finns nog flera orsaker till det.

En kritik mot "modern C++" är att det gjorde ett redan komplex språk ännu mer komplext. Men den vanligast är nog den "@Gräs-Mannen" tar upp: man jobbar vidare med "gammal kod" och finns ibland fullt rationella anledningar att det man stoppar in fortsätter följa stilen/nivån som resten håller.

C++11 och senare var en av de större förändringarna som språket gått igenom. Det är en viss tröskel att ta sig över.

Skrivet av klk:

Hmmm, undrar hur många gånger jag varit med om samma retorik.

Minns när VB (visual basic) var så poppis (det första så kallade RAD verktyget). Att skriva windows program i C/C++ var ju gigantiskt svårt medan de i VB kunde dra och släppa in saker grafiskt utformade miljöer medan koden genererades. De var otroligt produktiva i en månad, sedan tog allt längre och längre tid.

Java hade samma retorik, allt blev så mycket enklare. Gick fort i början tills efter ett tag när hastigheten minskade och minskade drastiskt.

Micorsoft har släppt ett antal verktyg för att generera applikationer under årens lopp, nästan alla har pensionerats

Det kommer bli samma resultat nu, skall något skala och leva länge måste man förstå och bygga en stabil grund.

Stämmer inte, volvos problem ligger i att det inte är ett mjukvaruföretag, de kan bygga bilar. Alla företag som måste ställa om sitter på en hög med människor med höga löner som inte vill bli av med jobbet. Och de kan inte lära nytt. En mycket svår resa

Volvo måste lära om, det löser de inte med rust (tvärtom)
När så många människor är oroliga för sina jobb blir de rädda för att göra fel och vågar inte göra något alls eller så får fel personer för mycket att säga till om. Finns en del som sett hur Volvo utvecklar och vad jag vet finns det gott om "intressanta" historier

Fast Java var knappast en trend som blåste förbi. Java/C# har i praktiken helt ersatt C++ inom en rad områden. De har däremot inte ersatt C++ inom alla områden, Microsoft brände sig bl.a. på att de försökte använda .NET även där det inte passade (eller i alla fall inte var tillräckligt moget när "longhorn" var aktuellt).

Kan mycket väl vara lite samma sak vi ser på storbolagen nu med Rust. Rust kommer knappast ersätta C++ helt och hållet, men 10-20 från nu (Java fyller 30 år 2026 och C# fyller 25 år) kan vi mycket väl se samma sak vi sett med Java/C#: saker som idag fortfarande nyutvecklas i C++ kanske nästan helt gått över till Rust då.

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:

Fast Java var knappast en trend som blåste förbi. Java/C# har i praktiken helt ersatt C++ inom en rad områden. De har däremot inte ersatt C++ inom alla områden, Microsoft brände sig bl.a. på att de försökte använda .NET även där det inte passade (eller i alla fall inte var tillräckligt moget när "longhorn" var aktuellt).

C# tog över VB, inte C++ mer än möjligen i mindre skala. Och det beror framförallt på att många program tvingas till att skrivas om då lagstiftning ändrats. Förr fanns det gott om företag med egna servrar och egen komptens, de förstod själva tekniken.
Sedan ändrades lagar och annat, chefer blev livrädda för att själva ta ansvar för säkerhet då företag kunde åka på massa böter om de "läkte" uppgifter så det mesta började flyttas till molnet (cloud).
Inom cloud kontrollerar IT jättar det mesta och där kan de styra vad som utvecklas med. C# för microsoft är en pengamaskin, inte C++ för där klarar utvecklare tekniken själva.

Sverige idag, där är det mängder med IT konsulter som skriver specialanpassade applikationer och då anpassar man sig efter det, utvecklare måste hålla nere komplexitet och de skall kunnas bytas ut samt det mesta ligger i cloud lösningar.

Java växte på grund av deras runtime, Java kunde köras på olika hårdvara utan att programmerare behövde skriva kod som kunde kompileras upp med olika regler för att passa. Detta har varit en mycket stor bromskloss för C++ där man måste kunna hårdvara och operativsystem samt att det dessutom skall vara smidigt och konfigurera upp projekten. Bara 5 år tillbaka så var det fortfarande stora problem.
Men här har det hänt massor och även om apple är ett hemskt bolag så kanske vi kan tacka dem för mest just när det handlar om att skriva C++ för olika operativsystem. Att apple flyttade till ARM och satsade på att kunna porta program har gjort det mycket enklare att skriva C++ kod till olika hårdvara och olika OS. Idag är det inte alls svårt