I've put a list here, I'm not a historian, you might be able to quibble on the details, but garbage collection, just the idea that you can create all the data you want and the language implementation will take care of reusing the memory when you're done with things, is something that is recently as twenty years ago was considered impractical for a lot of real software. 