Skrivet av Ingetledigtnamn:
Nu skall vi vara noga med vad _du vill kunna_ göra och vad _man måste_ göra. Baserat på 80/20-regeln vågar jag påstå att för minst 80% av all programvara spelar det ingen som helst roll om du har kört minneshanteringen via STLs make_shared/make_unique eller via en noggrant uttänkt modell där du hanterar minnet själv med new och delete. Du kommer spendera mer tid väntandes på nätverket, disk I/O eller user input än du kör din kod så du kommer inte märka av den overhead STL introducerar. I de fall där du kan märka någon skillnad är det fortfarande 80% av koden som är helt irrelevant att optimera. Enligt mina uppskattningar är det 4% av koden där du kan få brilliera med dina kunskaper
De kvarvarande 96% av koden måste inte skrivas supereffektiv. Ute i den bistra verkligheten är ofta utvecklingstiden långt viktigare än prestanda och smarta pekare hjälper till att korta utvecklingstiden genom att avlasta utvecklarhjärnorna. Du skriver "väldigt brett spann på kodkvalitet", vad menar du med kodkvalité? För de flesta företag är kodkvalité a) korrekt kod och b) enkel och lättförståelig kod som är lätt (för andra) att göra ändringar i. Skulle tro att topprestanda kommer ganska långt ner på listan, det är nog mer en nice-to-have. Smarta pekare gör även språket mer tillgängligt för mindre erfarna utvecklare och hjälper dem göra färre misstag. Jag har svårt att se hur världen skulle vara bättre utan smarta pekare.
Jag förstår din poäng, men du missar en detalj: Många bäckar små.
Windows 95 rekommenderade specifikationer var en ancient singlecore 386 på 12.5MHz, 4MB arbetsminne, och 50MB diskutrymme.
Windows 11 rekommenderade specifikationer är modern dualcore 2000 MHz, 4000MB arbetsminne, och 64000MB diskutrymme.
Nog finns det vissa förbättringar här som befogar dom ökade kraven, men om 80% av koden är skriven slappt som du säger, så är det inte jättekonstigt att tänka sig att en majoritet av dessa ökade krav kommer från slappt skriven kod.
Detta är inte bara tillämpbart för Windows såklart, detta gäller nästan all mjukvara idag. Desto kraftfullare hårdvara vi får, desto slappare blir utvecklare. Och jag hatar det!
Tänk vad mycket prestanda som ligger på bordet här, som blir helt bortslösat på slappt kodhantverk.
Är programmering bara ens dagjobb och inget mer, dvs. man vill bara få arbetsdagen klar, man skiter i kvalitet på denna nivå, ja då är säkert (o-)"smart" minneshantering jättebra.
Men bryr man sig det minsta om hantverket man utför så ger man mer effort än såhär, tycker jag. Tänk om alla utvecklare var lika mycket neuropatiska autister som jag själv, och la 15% mer arbetskraft på att alltid göra saker ordentligt? Kan du tänka dig hur mycket processeringskraft, minne osv. vi hade haft idag? All mjukvara hade varit sinnessjukt snabb i jämförelse med skräpet som finns idag.
Utopiskt, javisst. Men jag tycker ändå man kan försöka bryta denna lathetstrend.
Tillägg: Och skiter man i detta, ja men använd C# eller Java istället. C++ ger dig ingenting i dessa fall!