I went from C=64 Basic and assembler to FORTRAN and C to C++ and Java. Professionally I started in Visual Basic for applications then to Visual Basic 4, 5, 6. After that VB.NET AND C# with some Java here and there. I have played with Ruby and Python and found both fun.
During each step I never felt like I had to forget what I had learned before. I always felt like I was just learning better and/or slightly different ways of doing things but the difference was not major. The difference was like the difference between American, Australian and British English. (Maybe assembler was Latin and FORTRAN was Spanish.)
What should I forget? Is it just that code organization is different (no real classes so no one class one file)? Or is it something more basic?
*Edit. Even though closed I think the few answers provided have been very helpful. I thought about it today and looked at, and wrote, some code. I may be wrong but I think the major things are:
Classes/Interfaces are not the basic unit of functionality. Not sure what is the basic unit actually is yet (the function? the prototype? TBD) but at least I know not to try to think about classes. (This is probably the basic one.)