The document compares C# 3.5 and C# 4.0, highlighting key differences in support for dynamic programming, keywords like dynamic, creation of dynamic variables, optional parameters, named parameters, indexed COM properties, and generics with co/contra-variance. It also compares C# and VB.NET in areas like variable declaration, object creation, return types, overloading, default properties, inheritance, operators, and comparisons. Finally, it contrasts C# and C++ in their levels of abstraction, memory management, switch statements, flow control, class members, exceptions, and function pointers.