Jeśli już chodzi o flame pomiędzy native, a managed to ja twierdzę, że managed to przyszłość. Wystarczy popatrzeć na daty powstania najczęściej obecnie używanych języków. Tak gdzieś mnie więcej w 1990 zakończyła się era tworzenia nowych języków natywnych, a zaczęła się era tworzenia nowych języków zarządzanych. Według mnie w dziedzinie języków zarządzanych jest jeszcze dużo do zrobienia, m. in:
- przechowywanie danych z profilowania oraz skompilowanych kawałków kodu pomiędzy wywołaniami maszyn wirtualnych,
- stworzenie języka hybrydowego tzn na normalnych prawach byłby 100 % zarządzany, a kod ze specjalnymi uprawnieniami mógłby stosować np wskaźniki (w sumie unsafe w C# to coś w ten deseń, choć raczej nie do końca, chyba w C# nie da się napisać np systemowego alokatora pamięci) czy komunikować się bezpośrednio ze sprzętem,
- stworzenie systemu operacyjnego napisanego w całości w owym hybrydowym języku zarządzanym, także sama maszyna wirtualna powinna być napisana w języku, który wykonuje i mieć możliwość sama siebie skompilować (mówi się na to: self-hosting),
Na pewno spełnienie wszystkich powyższych wymagań jednocześnie jest cholernie trudnym zadaniem, ale jak już się to zrobi, to będzie z górki.
Jeśli chodzi o naukę języków to C/ C++ na początek może być. Zaznaczam, że uczenie się jednocześnie C++, Javy, C#, PHP, Delphi, etc jest bez sensu bo wszystkie te języki prezentują praktycznie te same paradygmaty. Polecam różnorodność paradygmatów, pobawienie się np: Asemblerem (od niego zaczynałem :P ), Haskellem, Scalą, Prologiem, J/ K/ APL, Smalltalkiem, etc
A z czego się uczyć? Google twym przyjacielem jest. Najważniejsze, żeby się nie spinać o to czy uczy się z czegoś wspaniałego. Każdy kurs/ książka/ etc ma wady, niektóre mają dużo więcej wad niż zalet, wraz ze wzrostem doświadczenia sam będziesz w stanie stwierdzić co jest OK, a co jest "be". Na pewno nie podchodź do żadnego kursu/ książki/ etc bezkrytycznie. Stawiam skrzynkę piwa, że nawet taki Bruce Eckel ma wypaczone poglądy na pewne sprawy.
No i na koniec taka sprawa, żeby nie bać się matmy i algorytmów. Nieznajomość ich może spowodować pomysły typu "kompresja" danych za pomocą haszowania do MD5, idiotyczne sposoby szyfrowania danych, używanie zupełnie nienadających się struktur danych czy algorytmów o kosmicznej złożoności albo np wielkie trudności w opanowaniu sztuki tworzenia silników gier trójwymiarowych.