A quei tempi, gli sviluppatori stavano lavorando molto più vicino al metal. C era essenzialmente un sostituto di livello superiore per l'assemblaggio, che è quasi il più vicino possibile all'hardware, quindi era naturale che aveste bisogno di puntatori per essere efficienti nella risoluzione dei problemi di codifica. Tuttavia, i puntatori sono strumenti affilati, che possono causare gravi danni se usati con noncuranza. Inoltre, l'uso diretto dei puntatori apre la possibilità a molti problemi di sicurezza, che all'epoca non erano un problema (nel 1970 Internet consisteva in circa una dozzina di macchine in un paio di università e non si chiamava nemmeno così ...), ma è diventato sempre più importante da allora. Al giorno d'oggi, i linguaggi di livello superiore sono progettati consapevolmente per evitare i puntatori di memoria grezza.
Dire che "le cose avanzate fatte in VB.Net o Java non sono possibili in C" mostra un punto di vista molto limitato, per non dire altro :-)
Prima di tutto, tutte queste lingue (persino l'assemblaggio) sono Turing complete, quindi in teoria tutto ciò che è possibile in una lingua, è possibile in tutti. Pensa a cosa succede quando un pezzo di codice VB.Net o Java viene compilato ed eseguito: alla fine, viene tradotto in (o mappato a) codice macchina, perché questa è l'unica cosa che la macchina capisce. In linguaggi compilati come C e C ++, puoi effettivamente ottenere l'intero corpo del codice macchina equivalente al codice sorgente di livello superiore originale, come uno o più file / librerie eseguibili. Nei linguaggi basati su VM, è più difficile (e potrebbe non essere nemmeno possibile) ottenere l'intera rappresentazione equivalente del codice macchina del programma, ma alla fine è ancora lì da qualche parte, all'interno dei profondi recessi del sistema di runtime e del JIT.
Ora, naturalmente, è una questione completamente diversa se una soluzione sia fattibile in una lingua specifica. Nessuno sviluppatore sensibile inizierebbe a scrivere un'app Web in assembly :-) Ma è utile tenere presente che la maggior parte o tutti quei linguaggi di livello superiore sono costruiti su un'enorme quantità di runtime e codice della libreria di classi, un grosso pezzo di che è implementato in un linguaggio di livello inferiore, in genere in C.
Quindi per arrivare alla domanda,
Pensi che la conoscenza dei consigli ai giovani [...] sia importante?
Il concetto dietro i puntatori è il riferimento indiretto . Questo è un concetto molto importante e IMHO ogni buon programmatore dovrebbe coglierlo a un certo livello. Anche se qualcuno lavora esclusivamente con linguaggi di livello superiore, l'indirizzamento indiretto e i riferimenti sono ancora importanti. Non capire questo significa non essere in grado di utilizzare un'intera classe di strumenti molto potenti, limitando seriamente la propria capacità di risolvere i problemi a lungo termine.
Quindi la mia risposta è sì, se vuoi diventare un programmatore veramente bravo, devi capire anche i suggerimenti (oltre alla ricorsione - questo è l'altro tipico ostacolo per gli sviluppatori in erba). Potrebbe non essere necessario iniziare con questo - al giorno d'oggi non credo che C sia ottimale come prima lingua. Ma a un certo punto si dovrebbe acquisire familiarità con l'indirizzamento indiretto. Senza di essa, non potremo mai capire come funzionano effettivamente gli strumenti, le librerie e i framework che stiamo utilizzando. E un artigiano che non capisce come funzionano i suoi strumenti è molto limitato. Abbastanza giusto, si può capire anche nei linguaggi di programmazione di livello superiore. Un buon tornasole sta implementando correttamente un elenco doppiamente collegato: se riesci a farlo nella tua lingua preferita, puoi affermare di aver capito abbastanza bene l'indirizzamento indiretto.
Ma se non altro, dovremmo farlo per imparare il rispetto per i vecchi programmatori che sono riusciti a costruire cose incredibili usando gli strumenti ridicolmente semplici che avevano (rispetto a quello che abbiamo ora). Siamo tutti in piedi sulle spalle dei giganti, e ci fa bene riconoscerlo, piuttosto che fingere di essere noi stessi i giganti.