Skip to main content
Post Made Community Wiki by Yam Marcovic
Source Link
Martijn Verburg
  • 22k
  • 1
  • 52
  • 81

I think it boils down to the fact that the need to deal with pointers fell away as programmers dealt less with the direct hardware they were running on. For example, allocating a linked list data structure in a way that fit perfectly onto the sequence of 640 byte memory modules that the specialised hardware had.

Dealing with pointers manually can be error-prone (leading to memory leaks and exploitable code) and is time consuming to get right. So Java and C# etc all now manage your memory and your pointers for you via their Virtual Machines (VMs). This is arguably less efficient than using raw C/C++, although the VMs are constantly improving.

C (and C++) are still widely used languages, especially in the High Performance Computing, Gaming and embedded hardware spaces. I'm personally thankful I learned about pointers as the transition to Java's references (a similar concept to pointers) was very easy and I wasn't lost when I saw my first NullPointerException (which should really be called a NullReferenceException, but I digress).

I would advise learning about the concept of pointers as they still underpin a lot of data structures etc. Then go on to chose a language that you love to work in, knowing that if something like a NPE comes up, you know what's really going on.