There is a famous quote by Alan Kay:

"Perspective is worth 80 IQ points."

I have seen this happen over and over again. A change in perspective becomes popular, and the industry begins to adopt it.

I have witnessed the following shifts:

  • The shift from object-oriented to functional programming. We may be seeing another shift towards relational/logic programming, but that is still a long way off.
  • Reactive programming is becoming more popular. This may be seen in functional reactive programming and evented programming.
  • Memory management: Should memory allocation/deallocation be managed by the programmer? By a run-time analyzer that determines when memory is safe to be reclaimed? Or can memory usage be understood at compile-time, and managed safely?

This last point is what Rust specifically is addressing. By making memory usage something that is statically analyzable, an entire class of memory issues disappear.

You can always tell when a perspective shift is happening. It requires you to change how you think about problems, often in a way that is uncomfortable and frustrating. Tasks that used to be easy may now require a lot of effort, at least until you learn how to think in a new way. Also, the story of people who learn this new way of thinking is always the same: "It was hard for a while, but eventually I got it, and now it comes naturally!"

Paul Graham mentions in one of his essays that a programmer who doesn't understand how to think with a certain feature also won't see its value, and will think it isn't useful. I think this is quite true. I once could not understand the value of anonymous functions and closures, but now I can't program without them.

The key is to push through this hard time. I think reading the experiences of others who have already worked through the pain may be enough motivation to get you through.

Ultimately, I don't know if I will like dealing with memory in the Rust way. It may be that I don't. But I do know that I can't judge it properly until I've come through to the other side and gained the understanding of how to use it well. I bet that I will want to keep using garbage collection, but Rust will be my choice when this GC isn't feasible or possible.