À cette époque, les développeurs travaillaient beaucoup plus près du métal. C était essentiellement un remplacement de niveau supérieur pour l'assemblage, qui est presque aussi proche du matériel que vous pouvez obtenir. Il était donc naturel que vous ayez besoin de pointeurs pour être efficaces dans la résolution des problèmes de codage. Cependant, les pointeurs sont des outils tranchants, qui peuvent causer des dommages importants s’ils sont utilisés sans précaution. De plus, l’utilisation directe de pointeurs ouvre la voie à de nombreux problèmes de sécurité, qui n’étaient pas un problème à l’époque (en 1970, Internet consistait en une douzaine de machines réparties dans quelques universités et il n’était même pas appelé ainsi. ...), mais est devenu de plus en plus important depuis. Ainsi, de nos jours, les langages de niveau supérieur sont délibérément conçus pour éviter les pointeurs de mémoire bruts.
Dire que "les choses avancées faites en VB.Net ou Java ne sont pas possibles en C" montre un point de vue très limité, pour le moins qu'on puisse dire :-)
Tout d’abord, toutes ces langues (même l’assemblage) sont complètes, donc en théorie, tout ce qui est possible dans une langue est possible. Il suffit de penser à ce qui se passe lorsqu’un morceau de code VB.Net ou Java est compilé et exécuté: il est finalement traduit en (ou mappé) sur du code machine, car c’est la seule chose que la machine comprend. Dans des langages compilés comme C et C ++, vous pouvez obtenir le corps complet du code machine équivalent au code source d'origine de niveau supérieur, sous la forme d'un ou plusieurs fichiers / bibliothèques exécutables. Dans les langages basés sur les machines virtuelles, il est plus difficile (et peut-être même impossible) d’obtenir la représentation complète du code machine équivalente de votre programme, mais elle existe toujours quelque part dans les profondeurs du système d’exécution et du JIT.
Maintenant, bien sûr, la question de savoir si une solution est réalisable dans une langue spécifique est une question totalement différente. Aucun développeur avisé ne commencerait à écrire une application Web dans l’assemblage :-) Mais il est utile de garder à l’esprit que la plupart ou la totalité de ces langages de niveau supérieur sont construits sur une énorme quantité de code de bibliothèque de classes et d’exécution, un grand qui est implémenté dans un langage de niveau inférieur, généralement en C.
Alors pour en venir à la question,
Pensez-vous que la connaissance des pointeurs sur les jeunes [...] est importante?
Le concept derrière les pointeurs est indirection . Ceci est un concept très important et, à mon humble avis, tout bon programmeur devrait le comprendre à un certain niveau. Même si quelqu'un travaille uniquement avec des langages de niveau supérieur, l'indirection et les références sont toujours importantes. Ne pas comprendre cela signifie être incapable d'utiliser toute une classe d'outils très puissants, ce qui limite sérieusement sa capacité à résoudre les problèmes à long terme.
Donc, ma réponse est oui, si vous voulez devenir un très bon programmeur, vous devez également comprendre les pointeurs (ainsi que la récursivité - c'est l'autre pierre d'achoppement typique des développeurs en herbe). Vous n’avez peut-être pas besoin de commencer avec cela - je ne pense pas que le C soit optimal comme langue maternelle de nos jours. Mais à un moment donné, il faut se familiariser avec l'indirection. Sans cela, nous ne pourrons jamais comprendre comment fonctionnent réellement les outils, les bibliothèques et les frameworks que nous utilisons. Et un artisan qui ne comprend pas le fonctionnement de ses outils est très limité. Assez bien, on peut aussi le comprendre dans les langages de programmation de niveau supérieur. Un bon test décisif consiste à implémenter correctement une liste doublement chaînée - si vous pouvez le faire dans votre langue préférée, vous pouvez affirmer que vous comprenez suffisamment bien le sens indirect.
Mais si ce n’est rien d’autre, nous devrions le faire pour apprendre le respect des anciens programmeurs qui ont réussi à construire des choses incroyables en utilisant des outils ridiculement simples qu’ils avaient (par rapport à ce que nous avons maintenant). Nous nous tenons tous sur les épaules de géants et il est bon que nous reconnaissions cela plutôt que de prétendre que nous sommes nous-mêmes les géants.