In quei giorni, gli sviluppatori lavoravano molto più vicino al metallo. C era essenzialmente un rimpiazzo di livello superiore per l'assemblaggio, che è quasi il più vicino possibile all'hardware, quindi era naturale che avessimo bisogno di indicatori per essere efficienti nel risolvere i problemi di codifica. Tuttavia, i puntatori sono strumenti appuntiti, che possono causare gravi danni se usati con noncuranza. Inoltre, l'uso diretto dei puntatori apre la possibilità a molti problemi di sicurezza, che non erano un problema allora (nel 1970, Internet era costituito da circa una dozzina di macchine in un paio di università, e non era nemmeno chiamato così ...), ma da allora è diventato sempre più importante. Quindi oggigiorno linguaggi di livello superiore sono progettati in modo consapevole per evitare i puntatori di memoria grezza.
Dicendo che "le cose avanzate fatte in VB.Net o Java non sono possibili in C" mostra un punto di vista molto limitato, per usare un eufemismo: -)
Prima di tutto, tutti questi linguaggi (anche l'assemblaggio) sono completati da Turing, quindi in teoria tutto ciò che è possibile in una lingua è possibile in tutti. Pensa solo 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 ++, è possibile ottenere l'intero codice macchina equivalente al codice sorgente di livello superiore originale, come uno o più file eseguibili / librerie. Nei linguaggi basati su VM, è più complicato (e potrebbe anche non essere possibile) ottenere l'intera rappresentazione del codice macchina equivalente del tuo programma, ma alla fine è ancora lì da qualche parte, nei recessi profondi del sistema di runtime e del JIT.
Ora, naturalmente, è una domanda completamente diversa se una soluzione sia fattibile in una lingua specifica. Nessuno sviluppatore ragionevole avrebbe iniziato a scrivere un'app Web in assemblaggio :-) Ma è utile ricordare che la maggior parte o tutti quei linguaggi di livello superiore sono basati su un'enorme quantità di codice di libreria di runtime e classe, una grande porzione di che è implementato in un linguaggio di livello inferiore, tipicamente in C.
Quindi, per ottenere la domanda,
Do you think knowledge on pointers to the young people [...] is important?
Il concetto dietro i puntatori è indiretto . Questo è un concetto molto importante e IMHO ogni buon programmatore dovrebbe coglierlo ad un certo livello. Anche se qualcuno sta lavorando esclusivamente con linguaggi di livello superiore, l'indirezione e i riferimenti sono ancora importanti. Non comprenderlo significa non essere in grado di utilizzare un'intera classe di strumenti molto potenti, limitando seriamente la capacità di problem solving a lungo termine.
Quindi la mia risposta è sì, se vuoi diventare un vero programmatore, devi capire anche i puntatori (oltre alla ricorsione - questo è l'altro tipico ostacolo per gli sviluppatori in erba). Potrebbe non essere necessario iniziare con esso - non credo che C sia ottimale come prima lingua al giorno d'oggi. Ma a un certo punto si dovrebbe acquisire familiarità con l'indirezione. Senza di esso, 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 corretto, si può averne una conoscenza anche in linguaggi di programmazione di livello superiore. Una buona cartina al tornasole sta implementando correttamente una lista doppiamente collegata: se riesci a farlo nella tua lingua preferita, puoi affermare di aver compreso bene l'induzione indiretta.
Ma se non altro, dovremmo farlo per imparare il rispetto per i programmatori di vecchi che sono riusciti a costruire cose incredibili usando gli strumenti ridicolmente semplici che avevano (rispetto a quello che abbiamo ora). Siamo tutti sulle spalle dei giganti, e fa bene a noi riconoscerlo, piuttosto che fingere di essere noi stessi i giganti.