Attenzione: questa non è una risposta tanto quanto una critica del discorso a cui "utente sconosciuto" è stato collegato nella sua risposta.
Il suo primo punto principale è il (presumibilmente) "standard in continua evoluzione". In realtà, gli esempi che fornisce riguardano tutti i cambiamenti in C ++ prima c'era uno standard. Dal 1998 (quando il primo standard C ++ è stato finalizzato) le modifiche al linguaggio sono state abbastanza minime - in realtà, molti sostengono che il vero problema è che dovevano essere apportate modifiche più . Sono ragionevolmente certo che tutto il codice conforme allo standard C ++ originale sia ancora conforme allo standard attuale. Anche se è un po ' meno sicuro, a meno che qualcosa cambi rapidamente (e in modo inaspettato) lo stesso sarà praticamente vero anche con lo standard C ++ in arrivo (teoricamente, tutto il codice che ha usato export
si interromperà, ma praticamente nessuno esiste, dal punto di vista pratico non è un problema). Riesco a pensare a pochi altri linguaggi, sistemi operativi (o molto altro collegato al computer) che possono presentare una simile richiesta.
Quindi entra in "stili in continua evoluzione". Ancora una volta, la maggior parte dei suoi punti sono piuttosto vicini alle sciocchezze. Cerca di caratterizzare for (int i=0; i<n;i++)
come "old and busted" e for (int i(0); i!=n;++i)
"new hotness". La realtà è che mentre ci sono tipi per i quali tali cambiamenti potrebbero avere senso, per int
, non fa differenza - e anche quando potresti ottenere qualcosa, è raramente necessario per scrivere codice buono o corretto. Anche nel migliore dei casi, sta facendo una montagna da una talpa.
La sua prossima affermazione è che il C ++ sta "ottimizzando nella direzione sbagliata" - in particolare, mentre ammette che l'uso di buone librerie è facile, sostiene che C ++ "rende quasi impossibile la scrittura di buone librerie". Qui, credo che sia uno dei suoi errori più fondamentali. In realtà, scrivere delle buone librerie per quasi qualsiasi linguaggio è estremamente difficile. Come minimo, scrivere una buona libreria richiede la comprensione di alcuni domini problematici così bene che il tuo codice funziona per una moltitudine di possibili applicazioni in (o relative a) quel dominio. La maggior parte di ciò che C ++ realmente fa è "alzare il livello" - dopo aver visto quanto è migliore una can libreria, le persone raramente sono disposte a tornare a scrivere il tipo di dreck avrebbero altrimenti. Ignora anche il fatto che alcuni veramente buoni codificatori scrivono un bel po 'di librerie, che possono quindi essere usate (facilmente, come ammette) da "il resto di noi". Questo è davvero un caso in cui "non è un bug, è una caratteristica".
Non cercherò di colpire ogni punto in ordine (ciò richiederebbe pagine), ma salterò direttamente al suo punto di chiusura. Egli cita Bjarne nel dire: "l'ottimizzazione dell'intero programma può essere utilizzata per eliminare tabelle di funzioni virtuali e dati RTTI inutilizzati. Tale analisi è particolarmente adatta per programmi relativamente piccoli che non utilizzano collegamenti dinamici."
Egli critica questo affermando che "Questo è un veramente problema difficile", arrivando addirittura a paragonarlo al problema dell'arresto. In realtà, non è nulla del genere - infatti, il linker incluso in Zortech C ++ (praticamente il primo compilatore C ++ per MS-DOS, negli anni '80) lo ha fatto. È vero che è difficile essere certi che tutti i dati potenzialmente estranei siano stati eliminati, ma è comunque del tutto ragionevole fare un lavoro abbastanza equo.
Indipendentemente da ciò, tuttavia, il punto più importante è che questo è assolutamente irrilevante per la maggior parte dei programmatori in ogni caso. Come quelli di noi che hanno smontato un bel po 'di codice sanno, a meno che non si scriva linguaggio assembly senza librerie, i tuoi eseguibili contengono quasi sicuramente una buona quantità di "roba" (sia codice che dati, in casi tipici) che tu probabilmente non ne so nemmeno, per non parlare mai in realtà usando. Per la maggior parte delle persone, il più delle volte, non importa, a meno che non si stia sviluppando per i più piccoli sistemi embedded, che il consumo extra di storage sia semplicemente irrilevante.
Alla fine, è vero che questo sproloquio ha un po 'più di sostanza dell'idiozia di Linus - ma questo gli dà esattamente la schiacciante lode che merita.