"Old language have it, so it must not be a problem" is not a very convincing argument.
Almost every new language that has come out in the last ~10 years or so tries hard to avoid null pointers, and old languages try very hard to mitigate the problem in various ways.
Dart went through a tedious process of removing nullability.
Kotlin doesn't have nullability (well, sort of, using Java bindings can still get you null pointer exceptions).
There are lot's of attempts for Java, from static analysis tools (eg recently from Meta , but there are older solutions), Springs new @NonNull, etc.
C# switched to making non-nullable the default a few years ago.
Rust only has null pointers in the unsafe part of the language, and only for low level raw pointers, not for traits.
Go is the odd one out.