doar pt ca poti face reverse in anumite conditii nu inseamna ca e de kkt. E vitorul tataie. Nu mai trai cu mintea in trecut. Atat .NET cat si java merg pe idea de masina virtuala. Per ansamblu este un castig enorm pe parte de securitate. Se elimina probleme de gestiunea a memoriei, buffer overflow, se pot face tot felul de optimizari de catre JIT, verificari daca o bucata de cod este safe, permisiuni pt diferite operatii...apeluri unmanaged, etc. Iar la decompilare totul e relativ. Exista obfuscatere. Si ceea ce tu nu stii e ca asa rau iti pot obvusca un program ca o sa iti crape tie decompilatorul (sau in cel mai bun caz iti va da o eroare si vezi doar msil). Exista chestii perfect legale in MSIL dar care nu au corespondent in C#, VB, etc. E de-a dreptul distractiv sa incerci sa vezi ca toate metodele tuturor claselor au acelasi nume si difera doar prin parametri (si ce ii mai rau e ca se poate face overloading prin valoarea de return - lucru imposibil in C#, VB, ..., dar perfect ok in msil). Daca vrei sa faci decompilarea un cosmar se poate. Ca sa nu mai vorbim de tehnici de incarcare dinamica a unui assembly... Cam asta ii parerea unui .NET developer cu 5 experienta, si se pare ca cu 5 ani mai mult ca tine.