Lets start with controlled types (RAII), generics, type driven programming, tasks and monitors for concurrency and parallel programming, certification profiles for high integrity computing (where people die when bugs happen), formal proofs in the type system, contracts.