Уповільнення при виконанні програм.
«Прив’язка» певних архітектурних рішень.NET до C++-подібних мов програмування.
Необхідність зміни стандартів для багатьох мов програмування (але нарешті спостерігається і рух з протилежного боку: вже сьогодні стандарти певних мов програмування зазнають значні зміни для того, щоб ці мови могли бути підтриманими в.NET).
Найвідчутнішим недоліком є істотне уповільнення виконання програм. Це природно, оскільки між початковою мовою і машинним кодом вводиться проміжний додатковий рівень – MSIL.
Проте проміжне представлення.NET із самого початку проектувалося з орієнтацією на компіляцію часу виконання (на відміну, наприклад, від Java BC, який створювався з орієнтацією на інтерпретацію. Важливо зазначити, що в цей час в Java-технологіях широко застосовується метод JIT-компіляції).
Існують додаткові можливості по боротьбі з уповільненням. Наприклад, можна рівномірно розподілити уповільнення при запуску, оскільки зазвичай компілюється не вся бібліотека, а лише той метод, що викликається, і повторної компіляції одного і того ж методу не відбувається.
|
|
Ще одна проблема.NET полягає у тому, що при її створенні основний упор було зроблено на C++/Java-подібні мови (наприклад, конструктори з ім’ям, що співпадає з іменем класу, заборона множинного успадкування, тощо). Це обмежує можливості інтеграції деяких мов з більш багатими можливостями.
Інший напрям пов’язаний з розвитком самої платформи.NET: наприклад, нещодавно було заявлено про підтримку платформою.NET механізму параметричного поліморфізму (generics).