How do programmers retain knowledge for languages/technologies they don't use on a regular basis?
Take for example the PC Assembly Book. The author states he rarely uses ASM at all. Yet he was able to write an in depth book on the topic. How was he able to do this?
I've spoken to a lot of people who agree that they start to forget languages/technologies if they don't practice on a regular basis.
I was very good with C#/.NET but haven't used it much in 2 years. A lot of that knowledge has been zapped from my brain. If I pick up a book and start reading it all comes back to me, but it takes a few days of hard studying. I studied ASM at university and forgot it years later and had to almost start from the beginning again. That took a long time.
Are there any ways programmers can help retain this knowledge? Or is this something many programmers go through?