По поводу C# - no comments. Отказываться от API в пользу виртуальной машины - идиотизм полный. Виртуальная машина Java еще понятно - высокая портируемость, а .NET что нам дает? Портируемости никакой, все под мелкософт заточено, и не надо рассказывать мне сказки про знакомых прогеров, пишущих на .NET под Linux. Какой на фиг там может быть .NET!? Grasshopper, если речь о нем, такой же .NET, как wine - Win32 API. Зато нормально кодить уже не надо - всю грязную работу framework за тебя сделает, а многократная потеря производительности и потеря контроля над кодом - это теперь нормально. Рай для криворуких, одним словом. Код у нас "управляемый", как это сейчас называется, только кто кем теперь управляет: программист кодом, или код (а точнее мелкософт) программистом? В общем, .NET - огромное зло, IMHO.